help with numbers to letters conversion in assembly 8051

Status
Not open for further replies.

Greital

Newbie level 4
Joined
Mar 8, 2016
Messages
5
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
57
hi,
I'm trying to complete my project in assembly 8051 , and thanks to all of you I completed the 1st phase
now I'm stuck in the 2nd phase

I should convert a number to its letters --->> for example if I put R3 = #31 it should print thirty one

I know I had to make an arrays:
1. single digit (one to nine)
2. double digit (eleven to nineteen)
3. tens digit (ten , twenty, thirty, ..........., ninety)

since the range from 1 - 99

and I know this function involve with division , but I don't know how to begin with it and check for each state

I need an explanation for the procedures
 

Many languages have a routine which converts a numeric value to a string. Example, A$ = STR$ ( X )

Thus if X=31, then A$= "31" or " 31".
 

use your stack in stead of array

the pseudo code bellow will print nothing if n is equal to 0
Code:
int digits = 0
while(n<>0){
   push (n div 10)
   n = n / 10
   digits=digits+1
}
while(digits>0){
      print (pop + '0')
      digit--
}

the pseudo code bellow will print '0' if n is equal to 0
Code:
int digits = 0
do{
   push (n div 10)
   n = n / 10
   digits=digits+1
}while(n<>0)
while(digits>0){
      print (pop + '0')
      digit--
}
 
Code:
;***********************************
;convert data in acc to ascii and print to screen
HOUT:
      PUSH    ACC
      SWAP    A
      call   PHEX1
      POP     ACC
      call   PHEX1
      RET
;***********************************
;hex2ascii routine
PHEX1:
      ANL     A,#0FH
      ADD     A,#4
      MOVC    A,@A+PC
      call   outchar
      RET
      DB     '0123456789ABCDEF'
;***********************************
 
Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…