伪指令的用法
本人正在学51单片机,对用汇编语言编写程序很感兴趣,但不知道它里面伪指令的用法,所以请教一下,每一个伪指令的具体的用法最好把具体的用法也写上,或者给一个不错的链接也行多多...
本人正在学51单片机,对用汇编语言编写程序很感兴趣,但不知道它里面伪指令的用法,所以请教一下,每一个伪指令的具体的用法
最好把具体的用法也写上,或者给一个不错的链接也行
多多益善 展开
最好把具体的用法也写上,或者给一个不错的链接也行
多多益善 展开
1个回答
展开全部
其实你不入在网上搜索单片机伪指令,有很多的,何必在这里看答案呢,就那么几个
1.ORG 汇编起始命令
2.END 汇编结束命令
3.EQU 赋值命令
4.DATA 数据地址赋值命令
5.DB 定义字节命令
6.DW 定义字命令
7.DS 定义存储空间命令
8.BIT 位地址符号命令
我相信很快就有人复制粘贴上来
不同的微机系统有不同的汇编程序,也就定义了不同的汇编命令。这些由英文字母表示的汇编命令成为伪指令。伪指令不是真正的指令,无对应的机器码,在汇编时不产生目标程序(机器码),只是用来对汇编过程进行某种控制。89C51汇编程序(如Intel的ASM51)定义的常用伪指令有几条。
1. ORG 汇编起始命令
格式:ORG 16位地址
功能是规定该伪指令后面程序的汇编地址,即汇编后生成目标程序存放的起始地址。例如:
ORG 2000H
START:MOV A,#64H
既规定了标号START的地址是2000H,又规定了汇编后的第一条指令码从2000H开始存放。ORG可以多次出现在程序的任何地方。当它出现时,下一条指令的地址就由此重新定位。
2. END 汇编结束命令
END命令通知汇编程序结束汇编。在END之后的汇编语言指令均不予以汇编。
3.EQU 赋值命令
格式:字符名称 EQU 项(数或汇编符号)
EQU命令是把“项”赋值给“字符名称”。注意,这里的字符名称不等于标号(其后没有冒号)。其中的项,可以是数也可以是汇编符号。用EQU赋过值的符号名可以用作数据地址、代码地址、位地址或是一个立即数。由此它可以是8位的,也可以16位的。例如:
AA EQU R1
MOV A, AA
这里AA就是代表了工作寄存器R1。又例如:
A10 EQU 10
DELY EQU 07EBH
MOV A, A10
LCALL DELY
这里A10当作片内RAM的一个直接地址,而DELY定义了一个16位地址,实际上它是一个子程序的入口。
4.DATA 数据地址赋值命令
格式:字符名称 DATA 表达式
DATA命令功能与EQU类似,但有一下差别:
1)EQU定义的字符名必须先定义再使用,而DATA定义的字符名可以后定义先用;
2)用EQU伪指令可以把一个汇编符号赋给一个名字,而DATA只能把数据赋给字符名;
3)DATA语句中可以把一个表达式的值赋给字符名,其中的表达式应是可求值的。
5.DB 定义字节命令
格式:DB [项或项表]
项或项表可以是一个字节、用逗号隔开的字节串或括在单引号(‘’)中的ASCII字符串。它通知汇编程序从当前ROM地址开始,保留一字节或字节串的存储单元,并存入DB后面的数据,例如:
ORG 2000H
DB 0A3H
LIST: DB 26H, 03H
STR: DB 'ABC'
经汇编后,则有:
(2000H)=A3H
(2001H)=26H
(2002H)=03H
(2003H)=41H
(2004H)=42H
(2005H)=43H
其中,41H、42H和43H分别是A、B和C的ASCII编码值。
6.DW定义字节命令
格式:DW 16位数据项或项表
该命令把DW后的16为数据项或项表从当前地址连续存放。没项数值为16位二进制数,高8位先存放,低8位后存放,这和其他指令中16位数的存放方式相同。DW常用于定义一个地址表,例如:
ORG 1500H
TABLE: DW 7234H, 8AH, 10H
经汇编后,则有:
(1500H)=72H (1501H)=34H
(1502H)=00H (1503H)=8AH
(1504H)=00H (1505H)=10H
7.DS定义存储空间命令
格式:DS 表达式
在汇编时,从定义地址开始保留DS之后表达式的值所规定的存储单元,以备后用。例如:
ORG 1000H
DS 08H
DB 30H,8AH
汇编以后,从1000H保留8个单元,然后从1008H开始给内存赋值,即
(1008H)=30H
(1009H)=8AH
以上的DB、DW和DS伪指令都只是对程序存储器起作用,它们不能对数据存储器进行初始化。
1.ORG 汇编起始命令
2.END 汇编结束命令
3.EQU 赋值命令
4.DATA 数据地址赋值命令
5.DB 定义字节命令
6.DW 定义字命令
7.DS 定义存储空间命令
8.BIT 位地址符号命令
我相信很快就有人复制粘贴上来
不同的微机系统有不同的汇编程序,也就定义了不同的汇编命令。这些由英文字母表示的汇编命令成为伪指令。伪指令不是真正的指令,无对应的机器码,在汇编时不产生目标程序(机器码),只是用来对汇编过程进行某种控制。89C51汇编程序(如Intel的ASM51)定义的常用伪指令有几条。
1. ORG 汇编起始命令
格式:ORG 16位地址
功能是规定该伪指令后面程序的汇编地址,即汇编后生成目标程序存放的起始地址。例如:
ORG 2000H
START:MOV A,#64H
既规定了标号START的地址是2000H,又规定了汇编后的第一条指令码从2000H开始存放。ORG可以多次出现在程序的任何地方。当它出现时,下一条指令的地址就由此重新定位。
2. END 汇编结束命令
END命令通知汇编程序结束汇编。在END之后的汇编语言指令均不予以汇编。
3.EQU 赋值命令
格式:字符名称 EQU 项(数或汇编符号)
EQU命令是把“项”赋值给“字符名称”。注意,这里的字符名称不等于标号(其后没有冒号)。其中的项,可以是数也可以是汇编符号。用EQU赋过值的符号名可以用作数据地址、代码地址、位地址或是一个立即数。由此它可以是8位的,也可以16位的。例如:
AA EQU R1
MOV A, AA
这里AA就是代表了工作寄存器R1。又例如:
A10 EQU 10
DELY EQU 07EBH
MOV A, A10
LCALL DELY
这里A10当作片内RAM的一个直接地址,而DELY定义了一个16位地址,实际上它是一个子程序的入口。
4.DATA 数据地址赋值命令
格式:字符名称 DATA 表达式
DATA命令功能与EQU类似,但有一下差别:
1)EQU定义的字符名必须先定义再使用,而DATA定义的字符名可以后定义先用;
2)用EQU伪指令可以把一个汇编符号赋给一个名字,而DATA只能把数据赋给字符名;
3)DATA语句中可以把一个表达式的值赋给字符名,其中的表达式应是可求值的。
5.DB 定义字节命令
格式:DB [项或项表]
项或项表可以是一个字节、用逗号隔开的字节串或括在单引号(‘’)中的ASCII字符串。它通知汇编程序从当前ROM地址开始,保留一字节或字节串的存储单元,并存入DB后面的数据,例如:
ORG 2000H
DB 0A3H
LIST: DB 26H, 03H
STR: DB 'ABC'
经汇编后,则有:
(2000H)=A3H
(2001H)=26H
(2002H)=03H
(2003H)=41H
(2004H)=42H
(2005H)=43H
其中,41H、42H和43H分别是A、B和C的ASCII编码值。
6.DW定义字节命令
格式:DW 16位数据项或项表
该命令把DW后的16为数据项或项表从当前地址连续存放。没项数值为16位二进制数,高8位先存放,低8位后存放,这和其他指令中16位数的存放方式相同。DW常用于定义一个地址表,例如:
ORG 1500H
TABLE: DW 7234H, 8AH, 10H
经汇编后,则有:
(1500H)=72H (1501H)=34H
(1502H)=00H (1503H)=8AH
(1504H)=00H (1505H)=10H
7.DS定义存储空间命令
格式:DS 表达式
在汇编时,从定义地址开始保留DS之后表达式的值所规定的存储单元,以备后用。例如:
ORG 1000H
DS 08H
DB 30H,8AH
汇编以后,从1000H保留8个单元,然后从1008H开始给内存赋值,即
(1008H)=30H
(1009H)=8AH
以上的DB、DW和DS伪指令都只是对程序存储器起作用,它们不能对数据存储器进行初始化。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询