伪指令操作

指令中的点“·”是需要的。这类伪指令一般放在代码段中的第一条指令前即可。如不给出,则汇编程序认为其默认选择的是8086指令系统。

一、段定义伪指令

1、段定义伪指令

(1)断定义伪指令格式:

segment_name  SEGMENT

...

segment_name  ENDS

段地址一旦说明,该段内的指令、标号和变量都属于这个段。

(2)ASSUME伪指令格式:{目的:确定用户定义的段和哪个段寄存器相关联}

ASSUME register_name:segment_name…, register_name:segment_name

其中register_name为段寄存器名,必须是CS,DS,ES和SS

segment_name必须是由段定义伪指令定义的段中的段名。

ASSUME伪指令只是把某个段分配给哪一个段寄存器,他并不能把段地址装入段寄存器中,所以在代码段中,还必须把段地址装入相应的段寄存器中。所以需要两条MOV指令完成这一操作

二、程序开始和结束伪指令

表示源程序结束的伪操作的格式为:END [label]

其中标号label指示程序开始执行的起始地址。

如果是多个程序模块相连接,则只有主程序需要使用标号,其他子程序模块则只用END而不能指定标号。

三、数据定义与存储器单元分配伪指令

格式:[变量]  操作码  N个操作数   [;注释]

1、操作码字段

说明所用伪操作的助记符,说明所定义的数据类型

DB:定义字节,其后的每一个操作数都占一个字节(8位)[正放—一位]

DW:定义字,其后的每一个操作数都占一个字(16位,数据低位在低地址,数据高位在高地址)[反放—两位]

DD:定义双字,其后的每一个操作数都占2个字(32位)[反放—四位]

DF:定义6个字节的字,其后的每一个操作数都占48位

DQ:定义4个字,其后的每一个操作数都占4个字节(64位),可以来存放双精度浮点数

DT:定义10个字节,其后的每一个操作数都占10个字节,为压缩的BCD码

以上伪操作可以把其后跟着的数据存入指定的存储单元,形成初始化数据;或者只分配存储空间而不确定数值。

四、类型属性操作符

WORD  PTR  ;字类型

BYTE  PTR   ;字节类型

如果指令中不可避免地出现两个类型(长度)不匹配的操作数时,可以在指令中对该内存变量使用类型属性操作符指定访问类型。

访问类型的作用只是增加了一种访问方式。

五、THIS操作符和LABEL伪操作

可以使一个变量定义成不同的访问类型

1、THIS操作符:

格式:THIS type

2、LABEL伪操作符:

格式:name LABEL type

只是指定一个类型为type的操作数,使该操作数的地址与下一个存储单元地址相同。

type在这里是BYTE或WORD。

六、表达式赋值伪指令“EQU”和“=”

给表达式赋予一个常量或名字

格式:

Expression_name EQU Expression

Expression_name =Expression

必须是有效的操作数格式或有效的指令助记符。

如果有变量或标号等其他符号出现在表达式中,必须先定义这些符号才能引用。

EQU伪操作中的表达式名是不允许重复定义的。

七、汇编地址计数器$与定位伪指令

1、地址计数器$

目的:设置当前正在汇编的指令的偏移地址(为了按序存放程序中的数据变量和指令)

不是硬件构成,其实就是一个16位的变量。

表示的是地址计数器当前值。

如在指令中引用$,JMP $+8的转向地址是本条指令的首地址加上8。显然$+8必须是另一条指令的首地址,否则汇编程序将指示出错。

2、ORG伪操作

作用:设置当前地址计数器$的值

格式:ORG constant expression

如果常数表达式的值为n,则该操作指示下一个字节的存放地址为n。

3、EVEN伪操作

作用:使下一个变量或指令开始于偶数地址

对于16位的变量来说,其地址为偶数时,机器内部只用一次读写操作,如果地址为奇数时要二次读写操作。 

c5a36e87386d437d98d50e0536ed994d.jpg

4、ALIGN伪操作

作用:使下一个变量的地址从4的倍数开始,可以用来保证双字数组边界从4的倍数开始。

格式:ALIGN boundary(boundary必须是2的倍数)

d13d154bb6794a0e96f75c0b1c289cd9.jpg

八、基数控制伪指令

4fe3b57ad5a44ea587155e1cf40fc7fe.jpg

RADIX伪操作可以把默认的基数改变为2~16范围内的任何基数。

其格式为:.RADIX expression[表达式用来表示基数值(用十进制数表示)]

九、过程定义伪指令

格式:

procedure_name  PROC  Attribute

procedure_name  ENDP

过程名(procedure_name)为标识符,起到标号作用,是子程序入口的符号地址。

属性(Attribute)是指类型属性,可以是NEAR或FAR。

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值