您好,欢迎访问一九零五行业门户网

汇编语言伪指令

在编写汇编语言程序时,会用到另一类指令,这类指令仅供汇编程序将源程序翻译成目标程序时使用,本身并不形成机器码,这类指令称为伪指令。由此可知,指令有二类: (1)汇编指令:是编译后产生机器码的指令。
(2)伪指令:仅供汇编程序使用,编译后不产生机器码的指令。
下面简单介绍5条伪指令。
1. 汇编起点指令 org(origin)
指令格式 : org nn
作用:将org nn 后的程序机器码或数据存放以nn为首地址的存储单元中。如在下面的例4-1中,伪指令 org 2000h 将目标程序从地址2000h处开始存放。
2. 定义字节指令 db (define byte)
指令格式 :[label] db n1,n2,…,nm
作用:将db后的8位字节数据n1,n2,…,nm依次存入以标号label为首地址的存储单元中。若无标号,则n1,n2,…nm依次存放在db上一条指令之后的存储单元中。如在例4-1中伪指令db 将字节数据55,38依次存放到以标号label3为首地址的存储单元2100h~2101h中。
3. 定义字指令 dw (define word)
指令格式:[label] dw nn1,nn2,…,nnm
作用:将dw后的16位字数据nn1,nn2,…,nnm依次存放到以标号label为首地址的存储单元中,若无标号,则nn1,nn2,…,nnm依次存放在dw上一条指令之后的存储单元中。在例4-1中,伪指令dw 同样可将字数据5538存放到以标号label3为地址的存储单元2100h~2101h中。
4. 等值指令 equ (equate)
指令格式:label equ nn
作用: 将16位地址nn赋给标号 label,在例4-1中,伪指令 label0 equ 2100h将地址2100h赋给标号label0。
5. 结束汇编指令 end
作用:汇编程序编译源程序时,遇到伪指令end,不管end下面是否还有其它指令都将停止编译。
例1 将地址为2100h存储单元中内容55与地址为2101h存储单元内容38进行十进制数相加,运算结果93存放在地址为2102h的存储单元中。
即:(2100h)+(2101h)→(2102h)
阅读十进数加法的源程序与目标程序,并解释每一条伪指令的含义与作用。
解:
该程序完成(2100h)+(2101h)送(2102h)的工作。在程序中加入一些伪指令。现分析程序中伪指令的含义及作用,汇编程序编译该程序时,将根据伪指令 org 0000h 将目标程序从地址0000h处开始存放。伪指令 label0 equ 2100h 将被加数地址2100h赋给标号label0,伪指令 label1 equ 2101h 则将加数地址2101h赋给标号label1,伪指令 label2 equ 2102h 将和的地址2102h赋给标号label2。程序中可以用标号label0~label2去代替直接地址2100h~2102h,这样做的好处是,如果用户要进行如:(3100h)+(3101h)送(3102)的运算,只要在程序开始处修改等值指令equ的标号地址,改为3100、3101h、3102h,而不必修改程序本身即可。伪指令db 将字节数据55,38依次存放到以标号label3为首地址的存储单元2100h~2101h中。而伪指令dw 同样可将字数据5538存放到以标号label3为地址的存储单元2100h~2101h中,如目标程序所示。最后,伪指令end告诉汇编程序,汇编工作到此结束。在所有伪指令后面均没有产生机器码。这说明伪指令是仅供汇编程序使用,编译后不产生机器码的指令。
其它类似信息

推荐信息