伪指令
用于对汇编过程进行控制的指令
伪指令(Pseudo Instruction)是用于对汇编过程进行控制的指令,该类指令并不是可执行指令,没有机器代码,只用于汇编过程中为汇编程序提供汇编信息。例如,提供如下信息:哪些是指令、哪些是数据及数据的字长、程序的起始地址和结束地址等。伪指令有2个特点:
区别
指令是在执行阶段发挥作用的,由CPU(Intel、AMD等)来执行。
伪指令是在编译阶段发挥作用的,由汇编器(MASM、TASM等)来解释。
下面以51单片机汇编伪指令为例:
指令语法
伪指令符 (常数或表达式)
其中:
1、伪指令符是伪指令的名称
2、常数或表达式是伪指令的参数,括号表示可有可无
指令详解
51单片机最常用的伪指令如下:
(1)起始(Origin)伪指令
标号:ORG nn
功能: 定义程序或数据块的起始地址。 指示此语句后面的程序或数据块以 nn 为起始地址连续存放在程序存储器中。
例如:
ORG 2000H
MOV A, 20H
ORG 伪指令规定了程序的起始地址从 2000H 开始,即该程序的第一条指令“MOVA, 20H”从地址 2000H 开始存放。)
(2)字节定义(Define Byte)伪指令
标号: DB (字节常数或字符或表达式)
功能:指示在程序存储器中以标号为起始地址的单元里存放的数为字节数据(8 位二进制数)。
例如:
OGR 100H
TAB1: DB 0FFH, 'C', 16, −1
从 TAB1 开始的地址单元依次存放 0FFH、 43H、 10H、 0FFH
其中,TAB1=100H(ORG指定);C的ASCII码为43H;十进制16的十六进制为10H,-1的补码为FFH
(3)字定义(Define Word)伪指令
标号: DW (字常数或表达式)
功能:指示在程序存储器中以标号为起始地址的单元里存放的数为字数据(16 位的二进制数)。
例如:
OGR 100H
TAB3 : DW 5678H, 10
其中,TAB3=100H(ORG指定);ROM中的存放情况为:(100H)=56H、(101H)=78H、(102H)=00H、(103H)=0AH
(4)保留字节(Define Storage)伪指令
标号: DS (数值表达式)
功能:指示在程序存储器中保留以标号为起始地址
的若干字节单元,其单元个数由数值表达式指定。
例如:
TAB2: DS 16 ; 从 TAB2 地址开始保留 16 个存储单元
(5)等值(Equate)伪指令
标号: EQU(数值表达式)
功能:表示 EQU 两边的量等值,用于为标号或标识符赋值。
例如:
X1 EQU 2000H
X2 EQU 0FH
MAIN:
MOV DPTR, #X1 ; DPTR=2000H
ADD A, #X2 ; A=A+0FH
(6)位定义伪指令
标号: BIT (位地址)
功能:同 EQU 指令,不过定义的是位操作地址。
例如:
ENA BIT P2.2
(7)汇编结束伪指令
标号:END
功能:指示源程序段结束。 END 指令放在程序的最后。若将 END 放在程序中间,那么对于 END 后面的指令,汇编程序将不对其进行汇编。一个汇编语言源程序仅允许使用一个END 伪指令。
参考资料
最新修订时间:2022-08-25 17:34
目录
概述
区别
指令语法
指令详解
参考资料