用汇编实现多位十六进制数相加

比如4521ADCB54594455H+4521BADC78594455H给出比较完整的汇编程序
2025-04-19 13:04:40
推荐回答(1个)
回答1:

8086的汇编我不熟,我用51的汇编做的这个程序,希望对你有启发

 ORG 0000H

 LJMP MAIN

 ORG 1000H

 DB 55H,44H,59H,54H,0CBH,0ADH,21H,45H

 ORG 2000H

 DB 55H,44H,59H,54H,0CBH,0ADH,21H,45H  ;将数据存储

 ORG 3000H

MAIN:

 MOV R0,#57H

 MOV R1,#10H

 MOV R2,#00H

 MOV R3,#20H

 MOV R4,#00H

 MOV R5,#08H

 CLR C

LOOP:

 MOV DPH,R1

 MOV DPL,R2

 MOV A,#00H

 MOVC A,@A+DPTR ;取一个字节,

  

 MOV R6,A  ;将取出的字节存住

 MOV DPH,R3

 MOV DPL,R4

 MOV A,#00H

 MOVC A,@A+DPTR ;取另一字节

 ADDC A,R6  ;带进位的加法,第一次时需保证Cy位为零  

                           ;LOOP 前面一句的作用,就在于此

 MOV @R0,A  ;将结果数据存储

 

 DEC R0      ;存储区减一指向下一个区域

 INC R2

 INC R4

 DJNZ R5,LOOP ;控制位数

 SJMP $

 END

 

 运行结果如图