LEON Asked:2021-11-17 04:14:13 +0000 UTC2021-11-17 04:14:13 +0000 UTC 2021-11-17 04:14:13 +0000 UTC 如何在不使用 DEC 指令的情况下将寄存器的值减一? 772 如何在不使用指令的情况下将寄存器的值减一dec?如果可能的话,有几种方法。 ассемблер 2 个回答 Voted Best Answer Илья К 2021-11-18T00:47:07Z2021-11-18T00:47:07Z 只是减法 sub eax, 1 添加一个负数 add eax, -1 nick_n_a 2021-11-18T15:48:04Z2021-11-18T15:48:04Z 逻辑短替代。也许它会被打包成两个字节。 ; eax = 1 0 -1 neg eax ; смена знака ; eax = -1 0 1 not eax ; инверсия ; eax = 0 -1 -2 另一种众所周知的方法是lea计算有效地址: lea eax, [eax - 1] ; 您不能使用所有寄存器,ebx, ebp, esi, edi- 您绝对可以,其他 - 您需要尝试或阅读文档。 lea- 一个特殊的团队最好阅读它的码头。它lea还不影响标志,这使得通过使用标志来混淆代码成为可能。
只是减法
添加一个负数
逻辑短替代。也许它会被打包成两个字节。
另一种众所周知的方法是
lea计算有效地址:您不能使用所有寄存器,
ebx,ebp,esi,edi- 您绝对可以,其他 - 您需要尝试或阅读文档。lea- 一个特殊的团队最好阅读它的码头。它lea还不影响标志,这使得通过使用标志来混淆代码成为可能。