将内部RAM中30H~37H单元的16个拼装4位二进制数0~F转换成ASCII码,并存入内部数据RAM以40H为首地址的区域中。
例如:
转换前:
地址:30H 31H 32H 33H 34H 35H 36H 37H
数据:01H 23H 45H 67H 89H ABH CDH EFH
转换后:
地址:40H 41H 42H 43H 44H 45H 46H 47H 48H 49H 4AH 4BH 4CH 4DH 4EH 4FH
数据:30H 31H 32H 33H 34H 35H 36H 37H 38H 39H 41H 42H 43H 44H 45H 46H
编了下不知道对不对!望大家指正,谢谢!
提问者: stefine_ - 一级
悬赏分:0 - 解决时间:2009-10-22 15:41
;----------------------------------------------
最佳答案:
修改了楼主的错误,增加了填写原始数据的程序段,如下所示。
ORG 0000H
SJMP MAIN
ORG 0050H
MAIN:
MOV 30H, #01H ;按照题目要求准备原始数据
MOV 31H, #23H
MOV 32H, #45H
MOV 33H, #67H
MOV 34H, #89H
MOV 35H, #0ABH
MOV 36H, #0CDH
MOV 37H, #0EFH
;01H 23H 45H 67H 89H 0ABH 0CDH 0EFH
;------------------------------下面就是题目要求的转换程序
MOV R0, #30H ;源地址
MOV R1, #40H ;目的地址
MOV DPTR, #ASCTB
MOV R2, #8
LOOP:
MOV A, @R0
ANL A, #0F0H ;取出高四位
SWAP A
ACALL TRANS
MOV A, @R0
ANL A, #0FH ;取出低四位
ACALL TRANS
INC R0
DJNZ R2, LOOP ;循环8次
SJMP $ ;转换完成
;------------------------------下面是用查表方法求ASCII码的程序
TRANS:
MOVC A, @A + DPTR
MOV @R1, A
INC R1
RET
ASCTB:
DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H
DB 41H,42H,43H,44H,45H,46H
END
;----------------------------------------------
回答者: 做而论道 - 八级 2009-10-20 13:03
原题网址:http://zhidao.baidu.com/question/122171432.html
;----------------------------------------------