单片机汇编语言程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
: R1, #40H ; 设置R1
A, 1 ; A, #0 ;
A
;
R1
;
A, 1 ; A, # 0 ;
A, 1 ;
50H, A ;
4.2.2 分支程序设计
(a) 单分支流程; (b) 多分支流程
例 3 x, y均为8位二进制数, 设 x存入R0, y存入R1, 求解:
1
x0
y
1
x0
0
x0
程序如下: : R0, #00H, 1; R0中的数与00 00H; 相等, R1← 0
汇编语言( )
指用指令助记符代替机器码的编程语言。汇编语 言程序结构简单,执行速度快,程序易优化,编译后 占用存储空间小,是单片机应用系统开发中最常用的 程序设计语言。汇编语言的缺点是可读性比较差,只 有熟悉单片机的指令系统,并具有一定的程序设计经 验,才能研制出功能复杂的应用程序。
高级语言( )
汇编语言语句的格式
指令语句和伪指令语句的格式是类似的。
指令语句的格式为:
【标号】:助记符(操作码)【操作数】 ;【注释】 伪指令语句的格式:
名字 定义符 参数 ;注释
两种语句都由四个部分组成。其中每一部分称为域也称为字段, 各字段之间用一个空格或字段定界符分隔,常用的字段定界符 有冒号“:” 、逗号“,”和分号“;”。其中方括号括起来 的是可选择部分。
1: A, 0 ; 被加数低字节的内容送入A
1
;
0, A
;
R0
;
R1
;
A, 0
; 被加数高位字节送入A
A, 1 ;
0, A
;
例 2 将两个半字节数合并成一个一字节数。
设内部 40, 41H单元中分别存放着 8 位二进制数, 要求取
出两个单元中的低半字节, 并成一个字节后, 存入 50H单元
中。 程序如下:
2 1: ; 两数不等, 若(R0)<0,
R1, #01H ; (R0)>0, 则 R1←01H 2 : R1, #0 ; (R0)<0, 则 R1←0 2:
R1, #
例 4 比较两个无符号数的大小。
设外部 的存储单元 1和 2中存放两个不带符号的二进制数, 找出其 中的大数存入外部 中的 3单元中。
2.汇编语言:在汇编语言中,指令用助记符表 示,地址、操作数可用标号、符号地址及字 符等形式来描述。
3.高级语言:高级语言是接近于人的自然语言, 面向过程而独立于机器的通用语言。
机器语言( )
直接用机器码编写程序、能够为计算机直接执行 的机器级语言。机器码是一串由二进制代码“0”和“1” 组成的二进制数据,其执行速度快,但是可读性极差。 机器语言一般只在简单的开发装置中使用,程序的设 计、输入、修改和调试都很麻烦。
; R2, 1;
例 6 设在内部 的单元开始处有长度为 的无符号数据 块, 试编一个求和程序, 并将和存入内部 的 单元(设和不超 过 8 位)。
4.1.2 汇编语言语句的种类和格式
汇编语言语句有三种基本类型:指令语句、伪指令语句和宏指 令语句。
指令语句:每一个指令语句都在汇编时产生一个目标代码, 对应着机器的一种操作。
例如: A,#0
伪指令语句:主要是为汇编语言服务的,在汇编时没有目标 代码与之对应。
例如: 1
宏指令语句:用以代替汇编语言源程序中重复使用的程序段 的一种语句,由汇编程序在汇编时产生相应的目标代码。
在汇编语言的基础上用自然语言的语句来编写程序, 例如51、C51等,程序可读性强,通用性好,适用于不 熟悉单片机指令系统的的用户。
高级语言编写程序的缺点是实时性不高,结构不紧凑, 编译后占用存储空间比较大,这一点在存储器有限的单 片机应用系统中没有优势。
因而,单片机的汇编语言不但不会被高级语言完 全取代,甚至还将继续占据重要地位。
在应用系统程序设计时, 有时经常需要将存储器中各部 分地址单元作为工作单元, 存放程序执行的中间值或执行结 果, 工作单元清零工作常常放在程序的初始化部分中。
设有50个工作单元, 其首址为外部存储器8000H单元, 则 其工作单元清零程序如下:
:A , # 8000H ;
R2, #50 ; 1: , A
4.2 80C51汇编语言程序设计
汇编语言程序设计,就是采用汇编指令来编写计算机程序。 要对应用中需使用的寄存器、存储单元、端口等先要作出具体安 排。在实际编程中,如何正确选择指令、寻址方式和合理使用工 作寄存器,包括数据存储器单元,如何对扩展的端口进行操作等, 都是基本的汇编语言程序设计技巧。
程序结构一般采用以下三种基本控制结构,即顺序结构、 分支结构和循环结构来组成,再加上使用广泛的子程序及中断服 务子程序,共有五种基本结构。
4.2.1 顺序程序结构
例 1 两个无符号双字节数相加。 设被加数存放于内部的40H(高位字节), 41H(低位字 节), 加数存放于50H(高位字节), 51H(低位字节), 和数 存入 40H和41H单元中。
程序如下:
:C
;
R0, #41H ; 将被加数地址送数据指针R0
R1, #51H ; 将加数地址送数据指针R1
(2) 处理部分: 为反复执行的程序段, 是循环程序的实体, 也 是循环程序的主体。
(3) 循环控制部分: 这部分的作用是修改循环变量和控制变 量, 并判断循环是否结束, 直到符合结束条件时, 跳出循环为止。
(4) 结束部分: 这部分主要是对循环程序的结果进行分析、 处理和存放。
例 5 工作单元清零。
第4章 汇编语言程序设计
4.1 单片机程序设计语言概述
所谓程序设计,就是按照给定的任务要求,编写 出完整的计算机程序。要完成同样的任务,使用的方 法或程序并不是唯一的。因此,程序设计的质量将直 接影响到计算机系统的工作效率、运行可靠性。
4.1.1 按照语言的结构及其功能可以分为三种
1.机器语言:机器语言是用二进制代码0和1表 示指令和数据的最原始的程序设计语言。
1000H
1
2000H
2
2100H
3
2200H
:C
;
, #1 ;
A, ;
R2, A
;
Biblioteka Baidu
, #2 ;
A, ;
C
A, R2; 1 ; 若第二个数大, A, R2; 0: , #3 ,A; B 1: A, ; 0 B:
4.2.3 循环程序设计
一、 循环程序
循环程序一般由四个主要部分组成:
(1) 初始化部分: 为循环程序做准备, 如规定循环次数、 给 各变量和地址指针预置初值。