汇编:如何使用16位寄存器添加两个64位数?

时间:2014-09-11 16:21:33

标签: assembly nasm

我已经搜索了大约一天,但我找不到任何关于在汇编中添加64位数字的信息 - Nasm

我该怎么做?

我的寄存器只有16位,我有2位64位。我使用的应用程序是Nasm。 (这是一个学校项目)

1 个答案:

答案 0 :(得分:3)

您必须将64位数字拆分为16位寄存器,然后从最低有效字开始分别添加这些部分。请注意,对于较高的单词,您必须使用adc(使用进位添加),因为如果前一个结果不适合16位,则必须将1添加到结果字中。如果您对第一个单词使用正常add,则无需在添加前清除进位标记。

a: dq 0         ; first operand
b: dq 0         ; second operand and result

; ...

mov ax, [a]     ; bits 0..15
mov bx, [a + 2] ; bits 16..31
mov cx, [a + 4] ; bits 32..47
mov dx, [a + 6] ; bits 48..63

add [b], ax
adc [b + 2], bx
adc [b + 4], cx
adc [b + 6], dx