MOVSX/MOVZX的解释
来源:互联网 发布:恶意知乎 编辑:程序博客网 时间:2024/06/08 10:41
比如
MOVSX EAX, BYTE PTR [00401000]
或
MOVZX EAX, BYTE PTR [00401000]
在C语言中应该如何表达啊?
比如定义一个全局变量
BYTE bt = 101;
DWORD dw;
应该如何把bt赋值到dw中. 并且功能与MOVSX/MOVZX相同? 谢谢!
-------------------------------------------------------
你只要读懂程序的行为,或者说功能。
汇编语言与C语言的语言构件不同,并不是一定能转成完全等价的C语言的代码的。
对于以上代码,可以这样理解:
movsx ====> dw = (DWORD) ( (signed char) (bt) )
movzx ====> dw = (DWORD) ( (unsigned char) (bt) )
movzx是把高位全部用0填充,而movsx是把原来数的最高位扩展成超出的位。
对于bt=101,也就是0x65,八位二进制是“01100101”,因为它的最高位是0,因此这两种情况,dw都等于0x00000065
换一个,比如bt=247,也就是0xF7,八位二进制是“11111110”它的最高位是1,那么movsx后,dw等于0xfffffff7,而movzx后,dw等于0x000000f7
- MOVSX/MOVZX的解释
- movzx 与 movsx
- movsx 和movzx
- movsx-movzx(转)
- 008-汇编指令MOVSX与MOVZX
- 汇编指令: MOV、MOVSB、MOVSW、MOVSD、MOVSX、MOVZX
- MOVZX
- movsx的Delphi算法实现
- 汇编MOVSX指令详解
- 汇编MOVSX指令详解
- movsx汇编指令说明
- 汇编MOVSX/MOVSZ指令详解
- MOVSX说明:带符号扩展传送指令
- 有趣的问题,高手解释解释呀!!
- Java解释器的运行过程解释
- HelloWorld的问题解释
- 递归的简单解释
- 委托的无敌解释
- struts 1 和struts 2的区别
- c# 异步网络编程
- js 中小数的处理
- CSocket以及winsocket套接字的使用步骤(网络通信的重点知识)
- pku 2938 (wa wa wa wa......)
- MOVSX/MOVZX的解释
- [C++对象模型][2]指针与引用
- 修改自linux内核的双向循环链表通用算法
- IE6 下创建元素设置高度无效的原因及处理方法
- 让我有Exciting感觉的汉字之:扛
- 常用电路设计EDA软件简介
- 跨浏览器兼容测试8大利器
- 评价敏捷
- loadrunner中实现windows socket协议进行压力测试