Assembly 汇编:如何使用16位寄存器添加两个64位数字?
我搜索了大约一天,但找不到任何关于在assembly-Nasm中添加64位数字的内容 我该怎么做Assembly 汇编:如何使用16位寄存器添加两个64位数字?,assembly,nasm,Assembly,Nasm,我搜索了大约一天,但找不到任何关于在assembly-Nasm中添加64位数字的内容 我该怎么做 我的寄存器只有16位,我有两个64位的数字。我正在使用的应用程序是Nasm。(用于学校项目)您必须将64位数字拆分为16位寄存器,然后从最低有效字开始分别添加部分。请注意,对于较高的字,您必须使用adc(带进位添加),因为如果先前的结果不适合16位,则必须将1添加到结果字中。如果对第一个单词使用普通add,则在添加之前不必清除进位标志 a: dq 0 ; first operand
我的寄存器只有16位,我有两个64位的数字。我正在使用的应用程序是Nasm。(用于学校项目)您必须将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
我认为ADC(带进位的add)指令将对您有用。启动前不要忘记CLC(清除进位标志)。