如何在汇编语言中将两个寄存器的差值存入第三个寄存器?
汇编寄存器相减并保存结果到C的问题解决
你最初的代码存在错误:diff:是一个代码标签,仅用于标记指令位置,并非存储运算结果的变量。因此MOV C, diff这行代码实际是把标签diff的内存地址赋值给C,而非你需要的相减结果。
你后续写出的代码是正确的实现方式:
MOV A, 26d MOV B, 193d MOV C, B SUB C, A
这种方法先将B的值复制到C寄存器,再让C减去A,最终结果直接存于C中,同时保留了A和B的原始值,非常适合需要保留原寄存器数据的场景。
另外还有一种常见写法,如果不需要保留B的原始值,可以先完成减法再把结果转移到C:
MOV A, 45d MOV B, 127d SUB B, A ; 减法结果存入B MOV C, B ; 将B中的结果复制到C
这种写法更简洁,适合无需保留B原值的情况。
需要牢记:SUB指令的语法为SUB 目标寄存器, 源寄存器,它会直接修改目标寄存器的值,将其更新为「目标值 - 源值」的结果。若不想修改原始寄存器,需先将值复制到临时寄存器(比如这里的C)再执行减法操作。
内容的提问来源于stack exchange,提问作者user18182378
相关产品推荐
相关产品推荐

