在以3000H为首地址的外部RAM中,存放了14个以ASCII码表示的0~9的数,试编写程序将它们转换成BCD码,并以压缩BCD形式存放在以2000H为首地址的外部RAM中。
正确答案:
1 ORG 00H
0000 903000 2 MOV DPTR,#3000H ; 原始数据首地址
0003 7807 3 MOV R0,#07 ; 循环次数
0005 7930 4 MOV R1,#30H ; 转换结果暂存区指针
0007 E0 5 CH1: MOVX A,@DPTR
0008 550F 6 ANL A, #00001111B
000A C4 7 SWAP A
000B F5F0 8 MOV B,A
000D A3 9 INC DPTR
000E E0 10 MOVX A,@DPTR
000F 550F 11 ANL A, #00001111B
0011 45F0 12 ORL A,B
0013 F7 13 MOV @R1,A
0014 09 14 INC R1
0015 A3 15 INC DPTR
0016 D8EF 16 DJNZ R0,CH1
0018 902000 17 MOV DPTR,#2000H ; 转换结果存储区
001B 7A07 18 MOV R2,#07H ; 结果个数
001D 7930 19 MOV R1,#30H
001F E7 20 CH2: MOV A,@R1 ;
0000 903000 2 MOV DPTR,#3000H ; 原始数据首地址
0003 7807 3 MOV R0,#07 ; 循环次数
0005 7930 4 MOV R1,#30H ; 转换结果暂存区指针
0007 E0 5 CH1: MOVX A,@DPTR
0008 550F 6 ANL A, #00001111B
000A C4 7 SWAP A
000B F5F0 8 MOV B,A
000D A3 9 INC DPTR
000E E0 10 MOVX A,@DPTR
000F 550F 11 ANL A, #00001111B
0011 45F0 12 ORL A,B
0013 F7 13 MOV @R1,A
0014 09 14 INC R1
0015 A3 15 INC DPTR
0016 D8EF 16 DJNZ R0,CH1
0018 902000 17 MOV DPTR,#2000H ; 转换结果存储区
001B 7A07 18 MOV R2,#07H ; 结果个数
001D 7930 19 MOV R1,#30H
001F E7 20 CH2: MOV A,@R1 ;
答案解析:有

微信扫一扫手机做题