+ -
当前位置:首页 → 问答吧 → 请大家帮忙看一下这段反汇编之后的代码

请大家帮忙看一下这段反汇编之后的代码

时间:2010-12-05

来源:互联网

;al 被赋值。edx中高16位为0,低16位也被赋值过

.text:104139D4 movzx ecx, al
.text:104139D7 mov eax, 66666667h
.text:104139DC imul ecx
.text:104139DE sar edx, 2
.text:104139E1 mov ecx, edx
.text:104139E3 shr ecx, 1Fh
.text:104139E6 add ecx, edx
.text:104139E8 mov byte ptr [esp+0BCh+var_A4], cl
.text:104139EC movzx eax, byte ptr [esi+55h]
.text:104139F0 cdq
.text:104139F1 mov edi, 0Ah
.text:104139F6 idiv edi
.text:104139F8 mov byte ptr [esp+0BCh+var_A4+1], dl
.text:104139FC mov ax, [esi+39h]
.text:10413A00 mov word ptr [esp+0BCh+var_A0], ax


以下四个空间中保存了最终需要的处理结果
byte ptr [esp+0BCh+var_A4]
byte ptr [esp+0BCh+var_A4+1] 
word ptr [esp+0BCh+var_A0]
cl

问题:
1.前面三句:
.text:104139D4 movzx ecx, al
.text:104139D7 mov eax, 66666667h
.text:104139DC imul ecx
是不是对处理结果无影响?就这段来看,是不是可以删除掉这三句?

2.最终,cl和byte ptr [esp+0BCh+var_A4]中的结果和一开始的dx是什么关系?也就是它两个是什么结果?

3.cdq的作用是不是把eax带符号扩展成八个字节,高32位保存在edx中,低32位保存在eax中?

作者: PDD123   发布时间: 2010-12-05

cl和byte ptr [esp+0BCh+var_A4]中的结果应该是edx的符号吧?在这段中,应该为0?

作者: PDD123   发布时间: 2010-12-05