文档详情

第5章 汇编语言程序设计及仿真调试.ppt

发布:2017-06-20约5.35千字共20页下载文档
文本预览下载声明
第5章 汇编语言程序设计及仿真调试 5.1.1 伪指令 一般来说,在汇编语言源程序中用MSC-51指令助记符编写的程序,都可以一一对应的产生目标程序。但还有一些指令,例如指定目标程序或数据存放的起始地址,给一些指定的标号赋值,在内存中予留工作单元,表示源程序结束等等。这些指令并不产生目标程序,不影响程序的执行,仅仅产生供汇编用的某些指令,以便在汇编时执行一些特殊操作,称之为伪指令。 1、设置起始地址ORG ORG nn ORG伪指令总是出现在每段源程序或数据块的开始。它可使程序员把程序、子程序或数据块存放在存贮器的任何位置。 ORG 2000H MOV A, 20H ┇ 表示后续目标程序从2000H单元开始存放。一般要求ORG定义空间地址由小到大,且不能重叠 。 2、定义字节DB或DEFB 〈标号:〉 DB 〈项或项表〉 其中项或项表是指一个字节,数或字符串,或以引号括起来的ASCⅡ码字符串(一个字符用ASCⅡ码表示,相当于一个字节)。该指令的功能是把项或项表的数值(字符则用它的ASCⅡ码)存入从标号开始的连续单元中。 SEG1: DB 53H,74H,78H,‘1’,‘2’ SEG2: DB 23H,‘DAY’ 则: (1000H)=53H (1001H)=74H (1002H)=78H (1003H)=31H 数字1的ASCⅡ码 (1004H)=32H 数字2的ASCⅡ码 (1005H)=23H (1006H)=44H (1007H)=41H ‘DAY’ 的ASCⅡ码 (1008H)=59H 3、定义字DW或DEFW 〈标号:〉 DW 〈项或项表〉 DW的基本含义与DB相同,但DB一般用于定义8位数据(一个字节),而DW则定义16位数据,即一个字(规定为两个字节,即一个字为16位二进制数)。在执行汇编程序时,机器会自动按高位字节在前,低位字节在后的格式排列(与程序中的地址规定一致)。 例: ABC: DW 1234H, 08H ABC: DB 12H ,34H,00H,08H 上两条指令是等价的。 4、为标号赋值EQU 〈标号〉 EQU nn或表达式 其功能是将语句操作数的值赋于本语句的标号。故又称为等值指令。如: BLK EQU 1000H 即给标号BLK赋以地址值1000H。需要注意的是,在同一程序中,用EQU伪指令对标号赋值后,该标号的值在整个程序中不能再改变。 5.DATA指令 格式: 符号名 DATA 表达式 DATA 指令用于将一个内部 RAM 的地址赋给指定的符号名。 数值表达式的值在00H~0FFH之间,表达式必须是一个简单表达式。如: BUFFER DATA 40H 6.XDATA指令(Extenal Data) 格式: 符号名 XDATA 表达式 XDATA 指令用于将一个外部 RAM 的地址赋给指定的符号名。 数值表达式的值在0000H~0FFFFH之间,表达式必须是一个简单表达式。如: MYDATA XDATA 0400H 7.定义位命令BIT 格式: 字符名称 BIT 位地址 用于给字符名称定义位地址。如: DOGOUT BIT P3.4 经定义后,允许在指令中用DOGOUT代替P3.4。 8、源程序结束 END 〈标号:〉 END 〈表达式〉 END语句是一个结束标志,它告诉汇编程序,该程序段已结束。因此,该语句必须放在整个程序(包括伪指令)之后。若END语句出现在代码块中间,则汇编程序将不汇编END后面的语句。 2、8051单片机汇编语言程序的设计框架: ORG 0000H LJMP MAIN ;跳转到主程序 ORG 0003H LJMP INT_0 ;外部中断0入口 ORG 000BH LJMP INT_T0 ;定时器0中断入口 ORG 0013H LJMP INT_1 ;外部中断1入口 ORG 001BH LJMP INT_T1
显示全部
相似文档