第4章 AT89C51 汇编语言程序设计,,伪指令不要求计算机做任何操作 没有对应的机器码, 不产生目标程序 不影响程序的执行, 仅仅是一些能够帮助进行汇编的指令。,4.1. 伪指令,特征,它主要用来指定程序或数据的起始位置 给出一些连续存放数据的地址 为中间运算结果保留一部分存储空间 表示源程序结束等。,功能,不同版本的汇编语言其伪指令的符号和含义可能有所不同, 但基本用法是相似的。,1) 设置目标程序起始地址伪指令ORG 格式: ORG 地址(十六进制表示) 功能:规定其后面的目标程序或数据块的起始地址。 它放在一段源程序(主程序、 子程序)或数据块的前面, 说明紧跟在其后的程序段或数据块的起始地址就是ORG后面给出的地址。,例如: ORG 2000H START: MOV A, #7FH 表明标号为START的目标程序从2000H单元开始存放, 标号START也具有2000H地址值。,在一个源程序中, 可以多次使用ORG指令, 以规定不同程序段的起始位置。 规定的地址应从小到大, 不允许不同的程序段之间有重叠。 一个源程序若不用ORG指令开始, 则从0000H单元开始存放目标代码。,注意!!!,2) 结束汇编伪指令END 格式: END END是汇编语言源程序的结束标志, 表示汇编结束。 在END以后所写的指令, 汇编程序都不予处理。 一个源程序只能有一个END命令, 否则就有一部分指令不能被汇编。,3) 定义字节伪指令DB 格式: [标号: ] DB 项或项表 该伪指令的功能是把项或项表的数据(字符串按字符顺序以ASCII码)存入从标号地址开始的连续存储单元中。,例如: ORG 2000H TAB1: DB 30H, 8AH, 7FH, 73 DB ′5′, ′A′, ′BCD′ 由ORG 2000H得TAB1的地址为2000H, 因此, 以上伪指令经汇编后, 将对2000H开始的连续存储单元赋值: (2000H)=30H (2001H)=8AH (2002H)=7FH (H)=49H ; 十进制数73以十六进制数存放 (H)=35H ; 35H是数字5的ASCII码 (H)=41H ; 41H是字母A的ASCII码 (H)=42H ; 42H是字符串′BCD′中B的ASCII码 (H)=43H ; 43H是字符串′BCD′中C的ASCII码 (H)=44H ; 44H是字符串′BCD′中D的ASCII码,4) 定义字伪指令DW 格式: [标号: ] DW 项或项表 DW伪指令与DB相似, 但用于定义字的内容。 项或项表指所定义的一个字(两个字节)或用逗号分开的字串。 汇编时, 机器自动按高8位先存入, 低8位在后的格式排列。 例如: ORG 1500H TAB2: DW 1234H, 80H 汇编以后: (1500H)=12H, (1501H)=34H, (1502H)=00H, (1503H)=80H。,5) 预留存储空间伪指令DS 格式: [标号: ] DS 表达式 该伪指令的功能是从标号地址开始, 保留若干个字节的内存空间以备存放数据。 保留的字节单元数由表达式的值决定。,例如: ORG 1000H DS 20H DB 30H, 8FH 汇编后从1000H开始, 预留32(20H)个字节的内存单元, 然后从1020H开始, 按照下一条DB指令赋值, 即(1020H)=30H, (1021H)=8FH。,6) 等值伪指令EQU 格式: 标号: EQU 项 该伪指令的功能是将指令中的项的值赋予EQU前面的标号。 项可以是常数、 地址标号或表达式。 例如: TAB1: EQU 1000H TAB2: EQU 2000H 汇编后, TAB1、 TAB2分别具有值1000H、 2000H。 用EQU伪指令对某标号赋值后, 该标号的值在整个程序中不能再改变。,7) 位地址定义伪指令BIT 格式: 标号: BIT 位地址 该伪指令的功能是将位地址赋予BIT前面的标号, 经赋值后可用该标号代替BIT后面的位地址。 例如: PLG: BIT F0 AI: BIT P1.0 经以上伪指令定义后, 在程序中就可以把FLG和AI作为位地址来使用。,4.2.程序设计 = 盖房子,盖个啥样的房子 (1.明确任务,构思框架) 找原料(2.合理利用资源) 选择方法(3.算法) 设计步骤(4.流程图) 开始盖(5.编写程序) 住进去(6.测试),开始,处理框,判断框,流程线,4.3.程序结构,1.顺序结构程序 2.选择结构程序(分支) JB JC CJNE 3.循环结构程序 DJNZ 4.子程序 LCALL ACALL,4.4 程序设计举例,1.延时程序 2.查表程序 3.码制转换 4.排序,
展开阅读全文
如果觉得《89c51汇编语言 AT89C51汇编语言.ppt》对你有帮助,请点赞、收藏,并留下你的观点哦!