神奇的汇编(一)
来源:互联网 发布:logstash 用python 编辑:程序博客网 时间:2024/05/19 01:11
汇编中也有强制转换的命令
使用
类型 ptr 变量名
可以把这个变量强制转化为指定的类型,类型可以为byte,word,dword,fword,qword,real8和real10
看看下面这段
.data
bTest1 db 12h
wTest2 dw 1234h
dwTest3 dd 12345678h
.code
mov al,bTest1
mov ax,word ptr bTest1
mov eax,dword ptr bTest1
看看后面的结果发现
al 12h
ax 3412h
eax 78123412h
不是我们在c中那样的0012h 00000012h
为什么呢?
原因很简单的:
内存中是这个样子的,高位放高字节,低位放低字节,.data中的内存是这样子的
00403000 12 34 12 78 56 34 12
在执行 mov ax,word ptr bTest1的时候,是从bTest1的地址403000处取一个字,其长度已经超过了bTest1的
范围并落到wTest2中,从内存看,是取了bTest1的低位和wTest2的低位
这个例子说明了汇编中用ptr强制覆盖变量长度的时候,实质上只用了变量的地址,编译器并不考虑定界的问题,
如果程序员想实现和c语言中一样的效果,不妨使用mozx,它可以把一个字节扩展到一个字或是一个双字再放入寄存器中,高位保存
0而不是越界存取到其他的变量中。
- 神奇的汇编(一)
- 神奇的汇编(二)
- 神奇的汇编(三)
- 神奇的汇编(四)
- 神奇的汇编(五)
- 神奇的汇编(六)
- 神奇的汇编(七)
- 神奇的汇编(八)
- 神奇的汇编(九)
- 神奇的 BlocksKit (一)
- 神奇的 BlocksKit (一)
- 神奇的 BlocksKit (一)
- 神奇的页面滚动控制(一)
- 神奇的贝叶斯定理(一)
- CSS 神奇的border(一)
- 神奇的 LitePal 操作数据库(一)
- c++神奇的写法(一)
- 神奇的%系列一
- 光照与物体渲染的颜色 (序)
- uva 1055
- APPlication,Session,Cookie,ViewState和Cache之间的区别
- 一个用来扫描主机端口的AIR 程序 (在Flex 4+AIR 2.0/Beta 2 下实现)
- How To ... Create a MonoChrome RenderEffect(如何创建灰度渲染效果)
- 神奇的汇编(一)
- Yen 算法
- 想法
- windows 手动注册windows服务
- 关于Windows编程的一些心得
- Spring XML配置的12个技巧
- 感悟一下
- NS2中添加Ping协议
- oracle10g em登录错误解决方法