Go4Expert

Go4Expert (http://www.go4expert.com/)
-   Assembly Language Programming (ALP) Forum (http://www.go4expert.com/forums/assembly-language-programming-forum/)
-   -   Displaying a character's ascii in assembly? (pep8) (http://www.go4expert.com/forums/displaying-characters-ascii-assembly-t28963/)

Slipperz 29Aug2012 18:28

Displaying a character's ascii in assembly? (pep8)
 
Hai,

I'm using Pep8 which is a simulator for my assembly class. For the 1st step of the project I need to find a way to display a character's ascii number.
'h' is 104
so
deco 'h',i (decimal output 'h' immediately) will output 104.. but note that I need to manually enter 'h'.. How to I input it through like chari or on the console... if you see what i mean ...help

When I enter:
chari ascii,d ; Character input and store it in the "variable" ascii
deco ascii,d ; Decimal output of the "variable" ascii
stop
ascii : .block 2 ;
.end

I get 26624 instead of 104!! My teacher said it's 104 times 256 = 26624.. but why times 256.. I need to do something but I don't know what!!

HELP!

sgermain 14Mar2014 22:41

Re: Displaying a character's ascii in assembly? (pep8)
 
The problem is that you're trying to output the decimal value of a byte. CHARI stores a byte value, not a decimal value. You'll have to transition it over to a decimal value by loading a byte value from memory into the accumulator and then store that decimal value back into your variable.

Here's how you do that:

CHARI ascii, d
LDBYTEA ascii, d
STA ascii, d
DECO ascii, d
STOP
ascii: .BLOCK 2
.END

That should return 104 when you enter 'h'.

uchiwa 2Dec2014 03:00

Re: Displaying a character's ascii in assembly? (pep8)
 
hi,

I'm using Pep8 which is a simulator for my assembly class.

and i wana convert this java code to assembly

HELP!
Code:


/**
 * Write a description of class Calc here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class Calc { 
    static int valeurX = 0;
   
   
   
    public static Noeud conArbre() {
        Noeud newNoeud = new Noeud();
       
        while (newNoeud.operande == 0) {
            newNoeud.operande = Pep8.chari();
           
            if (newNoeud.operande == '*' || newNoeud.operande == '+' ||
                    newNoeud.operande == '-' || newNoeud.operande == '/'){
                newNoeud.noeudG = conArbre();
                newNoeud.noeudD = conArbre();                   
            } else if (newNoeud.operande >= '0' && newNoeud.operande <= '9') {
                newNoeud.valeurN = conNb(newNoeud.operande);
                newNoeud.operande = 'n';         
            } else if (newNoeud.operande == 'x') {
               
            } else if (newNoeud.operande == '.') {
                Pep8.charo('.');
                Pep8.charo('\n');
                Pep8.stop();           
            } else {
                newNoeud.operande = 0;                           
            }         
        }
       
        return newNoeud;
   
    }
   
    public static int conNb(char chiffre){
        int nombre = chiffre - 48;
       
        chiffre = Pep8.chari();
       
        while (chiffre >= '0' && chiffre <= '9'){
            nombre = ((nombre * 10) + (chiffre - 48));
            chiffre = Pep8.chari();                   
        }
       
        return nombre;
       
    }
   
    public static int calcul(Noeud noeud){
        int calculRep = 0;
       
        if (noeud.operande == '+'){
            calculRep = calcul(noeud.noeudG) + calcul(noeud.noeudD);       
        } else if (noeud.operande == '-'){
            calculRep = calcul(noeud.noeudG) - calcul(noeud.noeudD);       
        } else if (noeud.operande == '/'){
            calculRep = calcul(noeud.noeudG) / calcul(noeud.noeudD);       
        } else if (noeud.operande == '*'){
            calculRep = calcul(noeud.noeudG) * calcul(noeud.noeudD);       
        } else if (noeud.operande == 'n'){
            calculRep = noeud.valeurN;       
        } else if (noeud.operande == 'x'){
            calculRep = valeurX;       
        }
       
        return calculRep;   
   
    }
   
    public static void affForm(Noeud formule){
        if (formule.operande == 'n'){
            Pep8.deco(formule.valeurN);       
        } else if (formule.operande == 'x'){
            Pep8.charo('x');       
        } else {
            Pep8.charo('(');
            affForm(formule.noeudG);
            Pep8.charo(formule.operande);
            affForm(formule.noeudD);
            Pep8.charo(')');
        } 
    }
   
    public static void main(String[] params){
        char mChoix = 0;
        Noeud arbre = conArbre();
       
       
        while (mChoix != '.'){
            if (mChoix == '='){
                Pep8.deco(calcul(arbre));
                Pep8.charo('\n');           
            } else if (mChoix == '>') {
                affForm(arbre);
                Pep8.charo('\n');           
            } else if (mChoix == 'x'){
                valeurX = Pep8.deci();           
            }
           
            mChoix = Pep8.chari();
           
        }
       
        Pep8.charo('.');
        Pep8.charo('\n');
        Pep8.stop();
   
    }
   
   
}

class Noeud {
        public char operande = 0;
       
        public int valeurN = 0;
        public Noeud noeudG = null;
        public Noeud noeudD = null;
   
    }



All times are GMT +5.5. The time now is 07:48.