ORG 0000H
LJMP START

ORG 0030H
START:
      MOV SP,#7FH       ;初始化堆栈
      MOV R0,#30H       ;送待转换二进制数在RAM中的地址
      MOV @R0,#0CFH     ;这里先送一个数到待转换的地址，用于一会儿转换，也可以不要这一句手工去修改该单元的数
      LCALL BIN2BCD     ;调用转换子过程

SJMP $

;实现二进制数到十进制BCD码的转换
;程序入口：R0送入待转换二进制数的地址
;程序出口：将转换后的BCD码（占3个字节）按照“百、十、个”的顺序放在二进制数的后面
BIN2BCD:
      MOV A,@R0
      MOV B,#100
      DIV AB            ;A÷B=商在A,余数在B
      INC R0
      MOV @R0,A

      MOV A,B
      MOV B,#10
      DIV AB
      INC R0
      MOV @R0, A
      INC R0
      MOV @R0,B
RET

END

