关于汇编中的MOVSX/MOVZX指令

Eddy 发布于2009-12-8 22:3:11 分类: 程序设计 已浏览loading 网友评论0条 我要评论

 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

关于 MOVSX  MOVZX  汇编语言  的相关文章

记住我的信息,下次不用再输入 欢迎给Eddy Blog留言