【发布时间】:2010-06-16 19:09:07
【问题描述】:
如何使用 386 汇编器减去 64 位数字?
【问题讨论】:
-
@starblue,我不会将其标记为 64 位,因为从技术上讲,它是 32 位机器上的 32 位算法。这个标签是不是有点误导人?
如何使用 386 汇编器减去 64 位数字?
【问题讨论】:
这个想法是使用SBB(带借位的子)指令。例如,如果我有两个数字:
edx:eaxecx:ebx那么这将把差异放在edx:eax:
sub eax, ebx
sbb edx, ecx
这个想法是您可以分别减去每个部分,但您需要从 MSB 借用到 LSB。 SBB 就是这样做的:
SBB <em>dest</em>, <em>src</em> 表示:
dest <-- dest - src - EFLAGS.CF
这很方便,因为:
SUB <em>dest</em>, <em>src</em> 表示:
dest <-- dest - src
EFLAGS.CF <-- borrow from subtraction
【讨论】: