我已经搜索了大约一天,但我找不到任何关于在汇编中添加64位数字的信息 - Nasm
我该怎么做?
我的寄存器只有16位,我有2位64位。我使用的应用程序是Nasm。 (这是一个学校项目)
答案 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