汇编语言编写的程序由一系列语句组成,汇编语言的语句分为指令性语句和指示性语句。
1.指令性语句
指令性语句是采用指令助记符构成的汇编语言语句。对不同的微型机,指令性语句各不相同。对MCS-51单片机而言,指令性语句就是前面介绍的111条指令,是进行汇编语言程序设计的基本语句,每条指令性语句汇编后都有与之对应的机器码供CPU执行。汇编语言的指令性语句的格式在前面已作介绍,此处不再赘述。
2.指示性语句
指示性语句又称伪指令语句,简称伪指令。伪指令虽然与真指令有类似的形式,但在汇编时并不会产生可供机器执行的机器码,它只是提供汇编要求,告诉汇编程序如何进行汇编,并指导汇编过程。伪指令语句的格式为:
[标号:]定义符 [参数表][;注释]
在MCS-51汇编语言中,常用的伪指令共有7条,下面分别进行介绍:
(1)汇编起始伪指令ORG(Origin)。
格式:[标号:] ORG addr16
功能:用于规定ORG之后的程序或数据的起始地址。在汇编时由addr16确定此语句下面第一条指令(或第一个数据)的地址。该段源程序(或数据块)就连续存放在以后的地址内,直到遇到另一条ORG伪指令为止。例如:
ORG 1000H
START:MOV R0,#50H
MOV A,R4
ADD A,@R0
汇编后目标代码在存储器中存放的结果安排如下,起始地址是1000H。
注意:
①在每一个汇编语言源程序的开始,都要利用ORG伪指令来指定该程序在存储器中存放的起始位置。若省略,则默认该程序从0000H单元开始存储。
②在一个源程序中可以多次使用ORG指令,以规定不同程序段的起始位置,但所规定的地址应从小到大且不允许有重叠。
(2)汇编结束伪指令END。
格式:[标号:] END
功能:用于汇编语言源程序的末尾,指示源程序到此全部结束。
说明:END伪指令是一个结束标志,用来指示汇编语言源程序的结束,进行机器汇编时到此为止,其后的语句将不被汇编成机器码。因此,在一个源程序中只允许出现一个END语句,它必须放在整个程序的最后。
(3)定义字节伪指令DB(Define Byte)。
格式:[标号:] DB X1,X2,…,Xi,…,Xn
功能:将这组数据依次存入以左边标号为起始地址的存储单元中。
说明:标号一般是根据所在自然位置自然赋值,也可由伪指令ORG标定。例如:
ORG 2000H
DATA1:DB 73H,20H,30H
DB ‘A’
结果安排如下:
(4)定义字伪指令DW(DefineWord)。
格式:[标号:] DW Y1,Y2,…,Yi,…,Yn(www.xing528.com)
说明:其中Y1~Yn均为双字节数。DW伪指令的功能与DB相似,其区别在于DB是定义字节,而DW是定义字。此伪指令主要用来定义地址。
(5)赋值伪指令EQU(Equate)。
格为:字符名称 EQU 数据或汇编符号
功能:将数据或汇编符赋给左边的“字符名称”
说明:一旦“字符名称”被赋值,它就可以在程序中作为一个数据或地址来使用。注意,在一个程序中对于某一数据或汇编符只能赋值一次、且伪指令中的“字符名称”必须先赋值后使用。例如:
ORG 2000H
STK EQU 50H ;STK赋值为50H
AA EQU R1 ;AA赋值后当R1使用
TAB EQU 3000H ;TAB赋值为双字节数3000H
MOV A,STK
MOV B,AA
LCALL TAB
(6)数据地址赋值伪指令DATA。
格式:字符名称 DATA 表达式
功能:将表达式的值赋给左边的“字符名称”。
说明:这里的表达式可以是一个数据或地址,也可以是一个包含定义“字符名称”在内的表达式,但不可以是汇编符(如R0-R7)。DATA伪指令可以先使用后定义。例如:
AA EQU R1 ;AA赋值后当作R1使用
CC DATA 30H ;CC赋值后为8位数30H
MOV CC,AA ;R1的值赋给30H单元
MOV A,#CC+1 ;立即数31H赋给累加器A
(7)位定义伪指令BIT。
格式:字符名称 BIT 位地址
功能:将BIT右边的位地址赋给它左边的“字符名称”。
说明:位地址可以用绝对地址,也可以使用像P1.0一样的符号位地址。例如:
H1 BIT 30H ;H1定义为位地址30H
H2 BIT TF0 ;H2定义为位地址TF0
A1 BIT P1.0 ;A1定义为位地址P1.0
MOV C,H1
ANL C,H2
MOV A1,C ;P1.0←(30H)∧(TF0)
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。