Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

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
 

BradtheRad

Super Moderator
Staff member
Joined
Apr 1, 2011
Messages
14,187
Helped
2,808
Reputation
5,624
Reaction score
2,747
Trophy points
1,393
Location
Minneapolis, Minnesota, USA
Activity points
105,830
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".
 

xenos

Full Member level 4
Joined
May 9, 2015
Messages
212
Helped
82
Reputation
164
Reaction score
81
Trophy points
28
Location
127.0.0.1
Activity points
1,182
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--
}
 

ctownsend

Advanced Member level 2
Joined
Nov 27, 2004
Messages
575
Helped
93
Reputation
188
Reaction score
63
Trophy points
1,308
Location
Canada
Activity points
3,667
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.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top