第二十八节:伪指令分析
伪指令是告诉汇编程序,如何汇编源程序的指令。
伪指令既不控制机器的操作,也不能被汇编成机器代码,故称为伪指令。
1、 设置起始地址ORG( 用于规定目标程序段或数据块的起始地址,设置在程序开始处。)
格式: ORG nn ;nn是16位二进制数
;nn给出了存放的超始地址值
给程序起始地直或数据块的起始地址赋值。它总是出现在每段源程序或数据块的开始。在一个源程序中可以多次使用ORG命令,以规定不同程序段或数据块的起始位置,所规定的地址从小到大,不允许重叠。
例如: ORG 0000H
MAIN:NOV SP,#6FH
。。。。。。。。。。。。
ORG 1000H
SUB1:MOV A,#74H
2、定义字节命令 DB
告诉汇编程序从指定的地址单元开始,定义若干字节存储单元并赋初值。
格式: 标号:DB <字节常数或字符>
例: ORG 1000H
TABLE1:DB 00,01,04,09,10H,19H
汇编后则(1000H)=00H
(1001H)=01H
(1002H)=04H
(1003)=09H
(1004)=10H
(1005)=19H
3、定义字命令 DW
从指定地址开始,定义若干个16个位数据,高八位存入低地址;低八位存入高地址。
例、 ORG 1000H
PIOI: DW 7654H,40H、12、‘AB’
例: ORG 2000H
ABC: DB 1234H,2468H,1357H,。。。。。。。
汇编后则(2000H)=12H
(2001H)=34H
(2002H)=24H
(2003H)=68H
(2004H)=13H
(2005H)=57H
4、赋值命令 EQU
告诉汇编程序,将汇编语句操作数的值赋予本语句的标号。
格式: 标号名称 EQU 数值或汇编符号
“标号名称”在源程序中可以作数值使用,也可以作数据地址、位地址使用。
先定义后使用,放在程序开头。
格式: 标号: EQU nn或汇编符号
例: BLCK EQU #1000H
TEST EQU 28H(直接地址单元)
TEST1 EQU #28H(立即数)
NMB EQU #10
MOV A,TEST(=direct) 执行后,A=(28H)
若28H中存放着56H,则A=56H
MOV A,TEST1(=#data) A=28H
MOV R2,NMB (R2)=10
MOV DPTR,BLOCK
5、源程序结束 END (告诉汇编程序,对源程序的汇编到此结束。一个程序中只出现一次,在末尾。)
格式: 标号: END
6、数据地址赋值伪指令 DATA
将表达式指定的数据地址赋予规定的字符名称
格式: 字符名称 DATA 表达式
注:该指令与EQU 指令相似,只是,可先使用后定义,放于程序开头、结尾均可。
7、定义空间伪指令 DS
从指定地址开始,保留由表达式指定的若干字节空间作为备用空间。
格式: [标号:] DS 表达式
例2、 ORG 1000H
DS 0AH
DB 71H,11H,11H ;从100BH开始存放71H、11H、11H。
注:DB、DW、DS 只能用于程序存储器;而不能用于数据存储器。
8、位地址赋值伪指令 BIT
将位地址赋予规定的字符名称。
格式: 字符名称 BIT 位地址
例3、 X1 BIT P12
相当于 X1 EQU 92H
伪指令是告诉汇编程序,如何汇编源程序的指令。
伪指令既不控制机器的操作,也不能被汇编成机器代码,故称为伪指令。
1、 设置起始地址ORG( 用于规定目标程序段或数据块的起始地址,设置在程序开始处。)
格式: ORG nn ;nn是16位二进制数
;nn给出了存放的超始地址值
给程序起始地直或数据块的起始地址赋值。它总是出现在每段源程序或数据块的开始。在一个源程序中可以多次使用ORG命令,以规定不同程序段或数据块的起始位置,所规定的地址从小到大,不允许重叠。
例如: ORG 0000H
MAIN:NOV SP,#6FH
。。。。。。。。。。。。
ORG 1000H
SUB1:MOV A,#74H
2、定义字节命令 DB
告诉汇编程序从指定的地址单元开始,定义若干字节存储单元并赋初值。
格式: 标号:DB <字节常数或字符>
例: ORG 1000H
TABLE1:DB 00,01,04,09,10H,19H
汇编后则(1000H)=00H
(1001H)=01H
(1002H)=04H
(1003)=09H
(1004)=10H
(1005)=19H
3、定义字命令 DW
从指定地址开始,定义若干个16个位数据,高八位存入低地址;低八位存入高地址。
例、 ORG 1000H
PIOI: DW 7654H,40H、12、‘AB’
例: ORG 2000H
ABC: DB 1234H,2468H,1357H,。。。。。。。
汇编后则(2000H)=12H
(2001H)=34H
(2002H)=24H
(2003H)=68H
(2004H)=13H
(2005H)=57H
4、赋值命令 EQU
告诉汇编程序,将汇编语句操作数的值赋予本语句的标号。
格式: 标号名称 EQU 数值或汇编符号
“标号名称”在源程序中可以作数值使用,也可以作数据地址、位地址使用。
先定义后使用,放在程序开头。
格式: 标号: EQU nn或汇编符号
例: BLCK EQU #1000H
TEST EQU 28H(直接地址单元)
TEST1 EQU #28H(立即数)
NMB EQU #10
MOV A,TEST(=direct) 执行后,A=(28H)
若28H中存放着56H,则A=56H
MOV A,TEST1(=#data) A=28H
MOV R2,NMB (R2)=10
MOV DPTR,BLOCK
5、源程序结束 END (告诉汇编程序,对源程序的汇编到此结束。一个程序中只出现一次,在末尾。)
格式: 标号: END
6、数据地址赋值伪指令 DATA
将表达式指定的数据地址赋予规定的字符名称
格式: 字符名称 DATA 表达式
注:该指令与EQU 指令相似,只是,可先使用后定义,放于程序开头、结尾均可。
7、定义空间伪指令 DS
从指定地址开始,保留由表达式指定的若干字节空间作为备用空间。
格式: [标号:] DS 表达式
例2、 ORG 1000H
DS 0AH
DB 71H,11H,11H ;从100BH开始存放71H、11H、11H。
注:DB、DW、DS 只能用于程序存储器;而不能用于数据存储器。
8、位地址赋值伪指令 BIT
将位地址赋予规定的字符名称。
格式: 字符名称 BIT 位地址
例3、 X1 BIT P12
相当于 X1 EQU 92H