|
00EE3E50 55 push ebp
00EE3E51 8B EC mov ebp,esp
00EE3E53 81 EC D0 00 00 00 sub esp,0D0h
00EE3E59 53 push ebx
00EE3E5A 56 push esi
00EE3E5B 57 push edi
00EE3E5C 8D BD 30 FF FF FF lea edi,[ebp+FFFFFF30h]
00EE3E62 B9 34 00 00 00 mov ecx,34h
00EE3E67 B8 CC CC CC CC mov eax,0CCCCCCCCh
00EE3E6C F3 AB rep stos dword ptr es:[edi]
各位大神,是这样的,我main函数通过 sub esp,0D0h 指令开辟了0D0h (208)个字节,然后当我看到lea edi,[ebp+FFFFFF30h]指令中
的 FFFFFF30h 这样的负数时,想自己动手转换为0D0h。
但是我用 原码 = 补码取反 +1 算,得到的结果和 编译器算的不一样啊,明显我错了,但是我不清楚错在哪里,求大神们救救孩子吧!!
FFFFFFFF - FFFFFF30 +1 = 0D0H。
《intel汇编语言程序设计》这本书 说过。如果你要计算 16进制的补码。
可以把每位 减去15 也就是一个F。+1 后得到补码状态。
之前我带着疑问去尝试 解决为啥 “可以把每位 减去15 也就是一个F。+1 后得到补码状态。” 这么说。
后来得知了,。你自己也可以尝试下。
|
上一篇: 时间超限,求一更好的算法或者思路下一篇: 单链表的实现 问题
|