把二進(jìn)制數(shù)轉(zhuǎn)換成 BCD 碼,是很常見的,做而論道以前也發(fā)表過這樣的程序。但是,過去都是用寄存器,如果要求用片內(nèi)RAM單元,就少見了。當(dāng)然,也可以把片內(nèi)RAM單元的數(shù)據(jù),先傳送到寄存器,再利用以前寫的
本例為單字節(jié)二進(jìn)制數(shù)(0X20)轉(zhuǎn)換為非壓縮BCD 碼,存在0X25,0X24,0X23 中,0X25 為百位,0X23 為個位。main: MOV a,@0xa4 ;賦值MOV 0x20,aMOV 0x21,aMOV 0x22,aMOV a,@0x0 ;0x23,0x24,0x25 單元清0MOV 0x23
兩字節(jié)壓縮BCD 碼轉(zhuǎn)換為兩字節(jié)二進(jìn)制數(shù)。算法如下:BCD 碼abcd=1000a+100b+10c+d=10{10[10a+b]+c}+d,將各位BCD 碼分離出之后,即可根據(jù)此式轉(zhuǎn)換為二進(jìn)制數(shù)。涉及到乘法運算和多字節(jié)加法運算。0X20,0X
將一個字節(jié)的二進(jìn)制數(shù)轉(zhuǎn)換為兩位16 進(jìn)制數(shù)的ASCⅡ碼main: mov a,@0x9f ;二進(jìn)制數(shù)為0x9fmov 0x30,a ;二進(jìn)制數(shù)存入0x30mov a,@0x02mov 0x10,a ;0x10 中存放轉(zhuǎn)換次數(shù)mov a,@0x31mov 0x04,a ;0x04 中為轉(zhuǎn)換