X进制转换BCD码、ASCII码 编程
-个8位二进制数转换为BCD码
在片内RAM 30H单元有-个8位二进制数,将其转换成压缩BCD码,存于片内RAM 41H(高位)40H(低位)中。
(方法:2^8=256,所以8位二进制A<=256,A/100商是百位数,存放到41h单元,余数再除以10,再得商是10位数,高低位互换,)
ORG 0100H
START:
MOV A,30H ;取来8位二进制数
MOV B,#100
DIV AB ;除以100
MOV 41H,A ;商是百位数,存放到41h单元
MOV A,B ;取回余数
MOV B,#10
DIV AB ;再除以10
SWAP A ;商是10位数,高低位互换
ORL A,B
MOV 40H,A ;将十位数与个位位数存入40h
SJMP $
END
一个字节(8位)BCD码转换为二进制数 (方法:先将高半字节乘以10,再加上低半字节)
设待转换的BCD码存放于R2中
DTOB:MOV A,R2
ANL A,#0F0H
SWAP A
MOV B,#0AH
MUL AB
MOV R3,A
MOV A,R2
ANL A,#0FH
ADD A,R3
RET
二进制数转换为ASCII码
设(30H)=4BH,将高4位的ASCII码放在31H单元,低4位的ASCII码放在32H单元,程序具有通用性,向入口参数30H存入任何数,都能将其变成相应的ISCII码.
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:MOV SP,#60H
MOV 30H,#4BH