x86汇编减法实现问题:代码功能不符,求调试修复方案
问题分析与修复
原代码存在两个核心问题:
- 逻辑偏差:当前实现的是
num1 - num2,而非你需要的num2 - num2 - 冗余指令:所有
sub 寄存器, 0的操作完全无效,不会改变寄存器值,属于多余代码
修复后的代码(严格实现num2减num2)
.minus: mov eax, [num2] ; 把num2的值加载到eax寄存器 sub eax, [num2] ; 执行num2 - num2的运算 mov [num3], eax ; 将运算结果存入num3 jmp .resultat
更高效的简化实现
由于num2 - num2的结果必然是0,可直接将0写入num3,省去加载和减法操作:
.minus: mov dword [num3], 0 ; 直接给num3赋值0 jmp .resultat
关键修正点
- 替换原代码中的
[num1]为[num2],修正被减数的取值对象 - 删除所有无意义的
sub 寄存器, 0指令,精简代码执行流程
内容的提问来源于stack exchange,提问作者Me88_88
相关产品推荐
相关产品推荐

