.INCLUDE "M32DEF.INC" .DEF NUM = R20 .DEF DENOMINATOR = R21 .DEF QUOTIENT = R22 .EQU RAM_ADDR = 0x200 .EQU ASCII_RESULT = 0x210 .ORG 0 LDI R18,HIGH(RAMEND) OUT SPH,R18 LDI R18,LOW(RAMEND) OUT SPL,R18 LDI R16,0x00 OUT DDRA,R16 RCALL BIN_DEC_CONVRT RCALL DEC_ASCI_CONVRT END:RJMP END BIN_DEC_CONVRT: LDI XL,LOW(RAM_ADDR) LDI XH,HIGH(RAM_ADDR) IN NUM,PINA LDI DENOMINATOR,10 RCALL DIVIDE ST X+,NUM MOV NUM,QUOTIENT RCALL DIVIDE ST X+,NUM ST X+,QUOTIENT RET DEC_ASCI_CONVRT: LDI XL,LOW(RAM_ADDR) LDI XH,HIGH(RAM_ADDR) LDI YL,LOW(ASCII_RESULT) LDI YH,HIGH(ASCII_RESULT) LDI R16,3 BACK: LD R20,X+ ORI R20,0x30 ST Y+,R20 DEC R16 BRNE BACK RET DIVIDE: LDI QUOTIENT,0 L1: INC QUOTIENT SUB NUM, DENOMINATOR BRCC L1 DEC QUOTIENT ADD NUM, DENOMINATOR RET