汇编语言伪指令详解(附实例)
伪指令不是真正的指令,并没有与之对应的的机器码,不会被执行。伪指令所起的作用主要是对汇编过程进行控制。
常见的伪指令如下所示:
目录
(1)ORG———汇编起始指令
功能:规定该伪指令下面的目标程序的起始地址
格式:ORG 16 位地址
举例:
ORG 0080H ;表示下面的程序从地址 0080H 开始
ST:……
ORG 0100H
……
注意:ORG 命令按出现的顺序其后的地址必须增大,且不能重叠。否则编译器可能报错。比如上例中 0100H 就大于 0080H。
(2)END——汇编结束命令
该伪指令是汇编语言结束的标志,对于在 END 之后的汇编指令不予处理。一个汇编程序可以有多个 ORG 伪指令,但是只可以有一个 END 指令,否则编译器会报错。
ORG 0000H ;单片机复位后便从 0000H 取指令
AJMP START ;跳转到程序的真正开始地址
ORG 0003H ;外部中断 0 的入口地址
AJMP SER_INT0 ;该指令用于跳转到外部中断 0 中断服务程序
ORG 000BH ;定时器中断入口
AJMP SER_TIMER0 ;跳转到定时器 T0 的中断服务程序
………………..
ORG 0030H
START: ………… ;程序的开始
…………
SER_INT0:
…………
RETI ;用于中断返回
SER_TIMER0:
…………
RETI ;用于中断返回
END ;汇编指令结束标志
(3)EQU——赋值指令
格式:字符名称 EQU 数或特定的符号
功能:将一个常数或一个特定的符号赋给规定的字符名称。当汇编程序遇到 EQU 前面的字符名称后,便会用 EQU 后面的数(或特定的符号)代替。
例如: CC EQU R1
DD EQU #11H
MOV CC,DD ;此指令与 MOV R1,#11H 一致。
注意:字符名称不是标号,后面不需要“:”。
(4)DB——字节定义伪指令
格式: 标号:DB 数据项 ;数据项之间用逗号隔开
功能:从该地址开始,在程序存储器中定义一串字节单元,并用数据项进行赋值。
例: ORG 0400H
TAB:DB 80H,95H,74H
则经过编译后,程序存储器中:(0040H)=80H,(0041H)=95H,(0042H)=74H。
该指令常常放在程序的最后,用于开辟表格。
(5)DW——定义字命令
格式:标号: DW 数据项
功能:从该地址开始,在程序存储器中定义一串字单元,并用数据项进行赋值。先存高字节,后存低字节,即:高字节放在低地址,低字节放在高地址。
例: ORG 0080H
TAB:DW 08H,7799H,1234H
经过编译后,程序存储器中:
(0080H)=00H,(0081H)=08H,
(0082H)=77H,(0083H)=99H,
(0084H)=12H,(0085H)=34H。
(6)DS——定义存储空间指令
格式:DS 表达式
功能:从该指令地址开始,保留 DS 之后表达式的值所规定的存储单元,以备后用。
例: ORG 0090H
DS 5
DB 50H
汇编后,从 0090H 开始保留 5 个存储单元,而(0095H)=50H
(7)BIT——位地址符号命令
格式: 字符名称 BIT 位地址
功能:将位地址赋予所规定的字符名称。
例 LEFT BIT P1.0
RIGHT BIT P1.1
版权声明: 本文为 InfoQ 作者【timerring】的原创文章。
原文链接:【http://xie.infoq.cn/article/1644994aac92b9834fe87370b】。文章转载请联系作者。
评论