经典汇编语言教程:5.2.1-传送-填充指令
2450 点击·0 回帖
![]() | ![]() | |||||
![]() | 经典汇编语言教程:5.2.1-传送-填充指令·内容正文 传送—填充指令是把位数短的源操作数传送给位数长的目的操作数。指令格式如下: MOVSX/MOVZX Reg/Mem, Reg/Mem/Imm ;80386+ 其中:80386+表示80386及其之后的cpu,其它类似符号含义类同,不再说明。 指令的主要功能和限制与MOV指令类似,不同之处是:在传送时,对目的操作数的高位进行填充。根据其填充方式,又分为:符号填充和零填充。 传送—填充指令的功能如图5.2所示。
图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)
例5.2 已知:AX=5678H,BX=1234H,指令XCHG AX, BX执行后,AX和BX的值是什么? 解:这是两个寄存器内容进行交换,指令执行后,有:(AX)=1234H,(BX)=5678H。 | |||||
![]() | ![]() |