有乘除法的,没有DA ;*****************************function HextoAScii start************************************* ;the function name:4 byte 2 进制到十进制ASCII码的转换 ;param:bufferNum/4 byte,buffer/9 byte,bufferSize/9 byte ;exp: mov buffer,#11h ;数据暂存区,为11H---(BufferSize+11H-1h) ; mov bufferNum,#2Dh ; mov bufferSize,#9H ; call HexToAscii ;bufferNum最后只剩下最高位25h,为对应的十进制的最高位,其它清零。 ;******************************************************************************************* HEXTOASCII: mov r3,#bufferSize mov r1,#buffer HEXTOASCII0: mov r2,#3h mov r0,#bufferNum-3 mov a,@r0 mov b,#0ah div ab mov @r0,a HEXTOASCII1: mov a,b swap a mov b,a inc r0 mov a,@r0 anl a,#0f0h swap a add a,b mov b,#0ah div ab swap a xch a,@r0 anl a,#0fh xch a,b swap a add a,b mov b,#0ah div ab add a,@r0 mov @r0,a djnz r2,HEXTOASCII1 xch a,b add a,#30H mov @r1,a dec r1 djnz r3,HEXTOASCII0 mov a,@r0 add a,#30H mov @r1,a ret ;******************************************************************************************* 如果不要ASCII,就add a,#30h不要了 |