文档介绍:第5章汇编语言程序设计及仿真调试
汇编语言程序设计基础知识
汇编语言程序设计举例
利用Keil uVision2调试程序
伪指令
一般来说,在汇编语言源程序中用MSC-51指令助记符编写的程序,都可以一一对应的产生目标程序。但还有一些指令,例如指定目标程序或数据存放的起始地址,给一些指定的标号赋值,在内存中予留工作单元,表示源程序结束等等。这些指令并不产生目标程序,不影响程序的执行,仅仅产生供汇编用的某些指令,以便在汇编时执行一些特殊操作,称之为伪指令。
汇编语言程序设计基础知识
1、
ORG nn
ORG伪指令总是出现在每段源程序或数据块的开始。它可使程序员把程序、子程序或数据块存放在存贮器的任何位置。
ORG 2000H
MOV A, 20H
┇
表示后续目标程序从2000H单元开始存放。定义空间地址由小到大,且不能重叠。
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伪指令对标号赋值后,该标号的值在整个程序中不能再改变。
格式:
符号名 DATA 表达式
DATA 指令用于将一个内部 RAM 的地址赋给指定的符号名。
数值表达式的值在00H~0FFH之间,表达式必须是一个简单表达式。如:
BUFFER DATA 40H
(Extenal Data)
格式:
符号名 XDATA 表达式
XDATA 指令用于将一个外部 RAM 的地址赋给指定的符号名。
数值表达式的值在0000H~0FFFFH之间,表达式必须是一个简单表达式。如:
MYDATA XDATA 0400H
格式:
字符名称 BIT 位地址
用于给字符名称定义位地址。如:
DOGOUT BIT
经定义后,。
8、源程序结束 END
〈标号:〉 END 〈表达式〉
END语句是一个结束标志,它告诉汇编程序,该程序段已结束。因此,该语句必须放在整个程序(包括伪指令)之后。若END语句出现在代码块中间,则汇编程序将不汇编END后面的语句。