首页
社区
课程
招聘
[求助} 请riijj帮忙,又遇到麻烦了!人都晕了!
发表于: 2005-1-20 14:37 5102

[求助} 请riijj帮忙,又遇到麻烦了!人都晕了!

2005-1-20 14:37
5102
在计算rol 【eax】,5 的时候如下:
【eax】=6f 48 74 71
6f=01101111
48=01001000
74=01110100
71=01110001
按照riijj上次说的循环方法,运算后应该如下:
6f=01101111=>11101101 (ed)
48=01001000=>00001001 (09)
74=01110100=>10001110 (8e)
71=01110001=>00101110 (2e)
但是电脑循环的结果却是如下:
6f=01101111=>11101110 (ee)
48=01001000=>00001101 (0d)
74=01110100=>10001001 (89)
71=01110001=>00101110 (2e)
这是怎么回事呀,请riijj帮帮忙吧,呜呜……

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
2
可能是你的程序在内存读取  6f 48 74 71 ,把它们以 dword 方式找取,最左边是 least significant bit, 读取为 0x7174486f  (方向相反了 : 71 74 48 6f )

对这个 dword 进行 rol 时, CPU 把这 32 位一起进行循环,

71 74 48 6f  :  01110001  01110100  01001000  01101111

01110001011101000100100001101111 的最左 5 bit 移到右边
=  00101110100010010000110111101110

成为了 00101110 10001001 00001101 11101110

00101110 = 2e
10001001 = 89
00001101 = 0d
11101110 = ee

你从内存看,是  ee 0d 89 2e

我找本汇编书看了 rol 的用法,说循环会把 运算元的 32 位一起循环

所以 dword ptr ds:[eax] 的值是以 dword 方式一起循环,不是分开进行,我上次也误解了
2005-1-20 19:31
0
游客
登录 | 注册 方可回帖
返回
//