首页
社区
课程
招聘
[求助]汇编语言代码解析
发表于: 2020-12-2 15:14 3793

[求助]汇编语言代码解析

2020-12-2 15:14
3793

这段代码是变量值除以8

movzx eax,byte ptr ds:[rax+rcx]
cdq 
and edx,7
add eax,edx
sar eax,3

下面这段代码实际作用是什么呢,后面是取反,然后与7,最后保存,前面那几行是什么意思

movzx eax,byte ptr ds:[rax+rcx]
cdq 
and edx,7
add eax,edx
and eax,7
sub eax,edx
not eax
and eax,7
mov dword ptr ss:[rsp+28],eax



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

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 1997
活跃值: (562)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
movzx eax,byte ptr ds:[rax+rcx] // 取出无符号8位二进制位整数,转换成无符号32位整数(高24位置0),保存在EAX
cdq         // 把 EAX 中的 32位有符号整数, 转换成 64位有符号整数(EDX的 所有位与EAX最高位相同)
and edx,7   // 只保留 EDX 的低3位
add eax,edx // EAX + EDX -> EAX
and eax,7   // 只保留 EAX 低3位
sub eax,edx // EAX - EDX -> EAX
not eax     // EAX 取反
and eax,7   // 只保留 EAX 低3位
mov dword ptr ss:[rsp+28],eax   //保存 EAX  到堆栈
// 实际效果 就是 7减去 除8的余数
2020-12-2 17:24
1
游客
登录 | 注册 方可回帖
返回
//