你这是两个三字节的二进制数,即24位的二进制数,不叫3个16位二进制数,只是两个数相加。你的程序这么写,每一个数是先存放高位,后放低位。如被加数放20H,先是放最高位,再放21H,最低位放22H。可通常是20H先放低位,22H后放高位,这样,程序就要改了。还按你的程序的写法,修改如下,其它行就不用改了。
请及时采纳!
被加数放在内部RAM的20H、21H、22H,
加数放在23H、24H、25H,
若要求和存放在26H、27H、28H中。
我附的图是2个16位相加的,3个该怎么整呢?
-------------------
在上述程序后面,再加上三行,即可。
如:
MOV A,20H
ADDC A,23H
MOV 26H,A
END
前面的六行中,把地址也得改动一下。
8086汇编,仅供参考。
CODE SEGMENT
ASSUME CS:CODE
ORG 20H
X DB 3 DUP(?)
Y DB 3 DUP(?)
Z DB 3 DUP(?)
START: PUSH CS
POP DS
PUSH CS
POP ES
LEA SI,X
LEA DI,Y
LEA BX,Z
MOV CX,3
CLC
PUSHF
@0:
MOV AL,[SI]
POPF
ADC AL,[DI]
PUSHF
MOV [BX],AL
INC SI
INC DI
INC BX
LOOP @0
POPF
MOV AH,4CH
INT 21H
CODE ENDS
END START