经典汇编语言教程:5.2.1-传送-填充指令

5.2.1-传送-填充指令

传送—填充指令是把位数短的源操作数传送给位数长的目的操作数。指令格式如下:

MOVSX/MOVZX  Reg/Mem, Reg/Mem/Imm ;80386+

其中:80386+表示80386及其之后的CPU,其它类似符号含义类同,不再说明。

指令的主要功能和限制与MOV指令类似,不同之处是:在传送时,对目的操作数的高位进行填充。根据其填充方式,又分为:符号填充和零填充。

传送—填充指令的功能如图5.2所示。

(a). MOVSX的执行效果

(b). MOVZX的执行效果

图5.2 传送—填充指令执行过程示意图

◆、符号填充指令MOVSX(Movewith Sign-Extend)

MOVSX的填充方式是:用源操作数的符号位来填充目的操作数的高位数据位。

◆、零填充指令MOVZX(Movewith Zero-Extend)

MOVZX的填充方式是:恒用0来填充目的操作数的高位数据位。

例5.1 已知:AL=87H,指令MOVSX  CX,AL,MOVZX  DX, AL执行后,问CX和DX的值是什么?
解:根据传送-填充指令的填充方式可知:

指令MOVSX CX, AL执行后,(CX)=0FF87H,指令MOVZX DX, AL执行后,(DX)=0087H。

从上例可看出,两条指令的源操作数完全一样,但因为它们的填充方式不同,所得到的结果而就不同。

试比较下列指令,分析它们执行结果的相同和不同之处:

MOV AX, 87H MOVSX AX, 87H MOVZX AX, 87H

3、交换指令XCHG(ExchangeInstruction)

交换指令XCHG是两个寄存器,寄存器和内存变量之间内容的交换指令,两个操作数的数据类型要相同。其指令格式如下:

XCHG  Reg/Mem, Reg/Mem

该指令的功能和MOV指令不同,后者是一个操作数的内容被修改,而前者是两个操作数都会发生改变。寄存器不能是段寄存器,两个操作数也不能同时为内存变量。

XCHG指令的功能如图5.3所示。

图5.3 XCHG指令的执行功能示意图

例5.2 已知:AX=5678H,BX=1234H,指令XCHG AX, BX执行后,AX和BX的值是什么?
解:这是两个寄存器内容进行交换,指令执行后,有:(AX)=1234H,(BX)=5678H。

上页:上一课 下页:下一课

经典汇编语言教程·相关目录

第1章 汇编语言的由来,数据类型第2章 CPU资源和存储器
第3章 操作数的寻址方式第4章 标识符和表达式
第5章 微机CPU的指令系统第6章 程序的基本结构
第7章 子程序和库第8章 输入输出和中断
第9章 宏第10章 应用程序设计
第11章 数值运算协处理器第12章 汇编语言和C语言
汇编语言重要附录Windows API函数大全
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号