MOVZX 指令
格式: MOVZX OPD,OPS
----
功能: 将8位或16位的OPS零扩展为16位或32位,在传给OPD.
----
说明: 1. 所谓零扩展,就是把新扩展的高位字节填0,这可以保证无符号数扩展后还是原来的无符号数.
----
2. 至于什么时候用符号扩展,什么时候用零扩展,视程序中是用带符号数还是无符号数操作而定.
MOVSX 指令
格式: MOVSX OPD,OPS
----
功能: 将8位或16位的OPS符号扩展为16位或32位, 再传给OPD.所谓的符号扩展, 就是当 把一个字节扩展为字或是一字 ---- 扩展为双字时,高位字节的各位和原数最高位相同,这可以保证原来用补码表示的数值不变.这条指令一般用于带符号数的扩展.
说明: 指令举例 1. MOVSX EAX ,BX
---- 2. MOVSX ECX,CL
3. MOVSX DX,DL
搜索下:
movzx是把高位全部用0填充,而movsx是把原来数的最高位扩展成超出的位。
对于bt=101,也就是0x65,八位二进制是“01100101”,因为它的最高位是0,因此这两种情况,dw都等于0x00000065
换一个,比如bt=247,也就是0xF7,八位二进制是“11111110”它的最高位是1,那么movsx后,dw等于0xfffffff7,而movzx后,dw等于0x000000f7
已经有(0)位网友发表了评论,你也评一评吧!
原创文章如转载,请注明:转载自Eddy Blog
原文地址:http://www.rrgod.com/program/207.html 欢迎订阅Eddy Blog。