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

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

2020-12-2 15:14
3328

这段代码是变量值除以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



[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
点赞0
打赏
分享
最新回复 (1)
雪    币: 1790
活跃值: (367)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mb_epqqhrpi 2020-12-2 17:24
2
1
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的余数
游客
登录 | 注册 方可回帖
返回