如何使用 i386 汇编程序减去 64 位数字?

最佳答案

这个想法是使用 SBB(带借用的子)指令。例如,如果我有两个数字:

  • edx:eax
  • ecx:ebx

  • 那么这将使 edx:eax 有所不同:
    sub eax, ebx
    sbb edx, ecx
    

    这个想法是你可以分别减去每个部分,但你需要从 MSB 借用到 LSB。 SBB 就是这样做的:
    SBB dest, src 的意思是:
    dest <-- dest - src - EFLAGS.CF
    

    这很方便,因为:
    SUB dest, src 的意思是:
    dest <-- dest - src
    EFLAGS.CF <-- borrow from subtraction
    

    关于assembly - 在 x86 汇编程序中减去 64 位数字?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3056385/

    10-13 07:51