用汇编语言如何实现 3个 16位二进制数相加

2024-10-29 13:38:25
推荐回答(3个)
回答1:

你这是两个三字节的二进制数,即24位的二进制数,不叫3个16位二进制数,只是两个数相加。你的程序这么写,每一个数是先存放高位,后放低位。如被加数放20H,先是放最高位,再放21H,最低位放22H。可通常是20H先放低位,22H后放高位,这样,程序就要改了。还按你的程序的写法,修改如下,其它行就不用改了。


请及时采纳!

回答2:

被加数放在内部RAM的20H、21H、22H,

加数放在23H、24H、25H,

若要求和存放在26H、27H、28H中。

我附的图是2个16位相加的,3个该怎么整呢?

-------------------

在上述程序后面,再加上三行,即可。

如:

MOV A,20H

ADDC A,23H

MOV 26H,A

END

前面的六行中,把地址也得改动一下。

回答3:

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