首页
社区
课程
招聘
[已经解决]定义内存变量时调整偏移量的目的
发表于: 2008-3-1 11:33 3616

[已经解决]定义内存变量时调整偏移量的目的

2008-3-1 11:33
3616
有几个伪指令可以调整偏移量 比如EVEN ALIGN ORG,但是为什么要调整偏移量?

cpu是如何操作一个内存单元的,是不是mov ax, [1000h]在执行的时候,cpu有一个寄存器作为计数器,从1h-1000h不停的读,读到ax,直到那个寄存器的值等于1000h,就停下了,这时候ax中的值就是1000h这个单元里面的值了???

如果是这样的话 那就理解为什么要调整偏移量成为一个偶数了

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
头有点晕晕  

cpu的工作机制 寻址机制 不了解啊。。
2008-3-1 11:36
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
3
INTEL的手册有写的,一般没有人会关心这个
你说的伪指令我也没有看过
2008-3-1 12:17
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
呵呵 我搞懂了

16位cpu一次可以读入两个内存单元,成偶数读的,如果一个字在一个偶数地址上,直接去读这个偶数地址即可,否则的话要读两次。

b1 db 12h
w1 dw 1234h

假如现在b1的内存位置是4h w1的内存位置是5h
如果现在要访问w1,
先读
4h 5h
再读
6h 7h
然后把5h上的值和6h的值拼接成一个字

如果用even指令先设置从偶数地址开始分配的话
b1 db 12h
even
w1 dw 1234h

这样如果b1所在的地址是一个偶数地址,也就是说下一个内存单元的地址将是一个奇数地址,那这个奇数地址将被跳过不用 从下一个偶数地址开始分配w1这个字的内存单元 这时候w1就位于6h和7h上,只需要读一次即可。
2008-3-1 17:16
0
游客
登录 | 注册 方可回帖
返回
//