汇编问题-在线等答案-50积分

来源:百度知道 编辑:UC知道 时间:2024/06/18 14:32:05
004A1277: FF8D 55E833C0 DEC [DWORD SS:EBP+C033E855]
004A127D: E8 1A0DF6FF CALL 00401F9C

哪位高手告诉我下什么意思
顺便帮我等价交换下,,两句随便修改一句就好了
修改的正确的给50分

DEC [DWORD SS:EBP+C033E855]
把 堆栈段(SS):偏移为 EBP(基址寄存器)值+C033E85 的字(DWORD)减1,
CALL 00401F9C 转去执行代码段偏移为00401F9CH的一个子程序。

DEC [DWORD SS:EBP+C033E855]等价于:
DEC DWORD [SS:EBP+C033E855]
DEC DWORD SS:[EBP+C033E855];功能相同的有:
SUB DWORD SS:[EBP+C033E855],1 等等。
与dec dword ptr [ebp+c033e855] 的功能是大不相同的,
你这减的不是堆栈段,而是数据段。
第二句 调用代码段[00401F9C]的子程序,这句也错了,
你多加了[],偏移就不是00401F9CH,而是在数据段偏移00401F9CH
处所存字了。

004a1277:ff8d说明当前指令地址。
55e833c0 当前要执行的指令
反汇编后得到的指令:DEC [DWORD SS:EBP+C033E855]
可以用这个代替:dec dword ptr [ebp+c033e855]

第一句 内存[SS:EBP+C033E855]段的数据自减1
第二句 调用代码段[00401F9C]的子程序

第一句也可以写成 SUB [DWORD SS:EBP+C033E855],1
我的理解是这样的