由于汇编语言的ADD,ADC,SUB,SBB指令都不支持两个操作数都是存储器操作数的情况,因此将一个操作数的低字放到寄存器AX中,高字放到寄存器DX中分别完成高字部分的加法,高字部分的带进位加法。
datasegment
data1 dw 5311h,8a13h ;表示数据8a135311h
data2 dw 4783h,9526h ;表示数据95264783h
result dw 2 dup(?) ; 存放多字节加法的结果
dataends
codesegment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov ax,data1
mov dx,data1+2
add ax,data2 ;低字部分相加
adc dx,data2+2 ;高字部分带进位相加
mov result,ax ;存放低字部分相加结果
mov result+2,dx ;存放高字部分相加结果
codeends
end start
构建程序后我们可以通过debug来验证程序的正确性