有两个长度为10H的数,分别放到30H和40H为首地址的存储器中(低字节),求其对应之和,放在50H为首地址的存储器中(处理进位位),然后按升序排列,放在70H为首地址的存储器中。
汇编程序:
ORG 0000H;设置初始位置START:MOV R0,#30H MOV R1,#50H MOV R3,#10HCF:MOV A,@R0;将30H的数放在50H MOV @R1,A INC R0 INC R1 DJNZ R3,CF MOV R0,#50H MOV R1,#40H MOV R3,#10H CLR CJIA:MOV A,@R0;将两个数求和 ADDC A,@R1 MOV @R0,A INC R0 INC R1 DJNZ R3,JIA CLR A;查看最后一个数是否有进位位 ADDC A,#00H MOV 60H,A MOV R0,#50H;将50H的数放到70H MOV R1,#70H MOV R3,#10HZY:MOV A,@R0 MOV @R1,A INC R0 INC R1 DJNZ R3,ZY MOV DPL,#0FH;用DPL计数AA:MOV R0,#70H MOV R1,#71H PUSH DPL;保护DPLBB:CLR C MOV A,@R0 SUBB A,@R1 JC CC;第一个数小于第二个数跳转 MOV A,@R0 XCH A,@R1 MOV @R0,ACC:INC R0 INC R1 DJNZ DPL,BB;减一不等于零跳转(内循环) POP DPL DJNZ DPL,AA;减一不等于零跳转(外循环) SJMP $ END