begin process at 2012 05 25 11:48:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Assembleur

 > 

Divers

 > 

Général

 > 

Passer d'un code asm à un code c ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Passer d'un code asm à un code c ?

vendredi 6 février 2009 à 09:42:21 | Passer d'un code asm à un code c ?

Octocat

Bonjour à tous, je suis nouveau dans le langage assembleur et j'avoue avoir quelques soucis...
Mon professeur me demande d'interprétrer un code assembleur afin d'obtenir une fonction permettant de lire un clavier sur un OS9.

N'ayant jamais fais d'assembleur je galère un peu, j'ai réussi à faire un morceau gràce à ses commentaires, mais des fois je bloque...

Voici un extrait du code assembleur, si vous pouviez m'aider à traduire certaines fonctions, j'en serais grandement reconnaissant !


/** Editon History

Edition equ 1 current edition number

Typ_Lang set (Prgrm<<8)+Objct
Attr_Rev set ((ReEnt)<<8)+0    

         psect IRQ,Typ_Lang,Attr_Rev,Edition,256,Debut
         use C:/mwos/os9/src/defs/oskdefs.d

         vsect
Touche:    ds.b 1
         ends*/

// Registres du PIA

#define PIA0    $FC0400     // adresse de base
ORA     EQU     01          registre de sortie cote A
#define DDRA    ORA            // DDRA    EQU     ORA         registre de sens de transfert cote A
CRA     EQU     03          registre de controle cote A
ORB     EQU     05          registre de sortie cote B
#define DDRB    ORB            // DDRB    EQU     ORB         registre de sens de transfert cote B
CRB     EQU     07          registre de controle cote B

typedef struct PIA6821 {
    unsigned char v1 ; /* poids forts inoccupés sur le bus 16 bits */
    unsigned char ORA; /* ORA ou DDRA */
    unsigned char v2 ;
    unsigned char CRA;
    unsigned char v3 ;
    unsigned char ORB; /* ORB ou DDRB */
    unsigned char v4 ;
    unsigned char CRB;
} *Pt_pia;

/* cablage des E/S: port B en entree PB0-PB3: code scan
*               port A en sortie PA0-PA3: leds
*               CB2 en sortie: commande /OE
*               CB1 en entree: détection signal touche actionnée*/

Debut:  lea     PIA0,a3        
        IniPIA0();     // bsr     IniPIA0         pas d'interruption appel de la foncgtion Init
        move.b  #$00,Touche(a6)
Reco:   Lecla(); //  bsr          Lecla
        bcs        Reco
        moveq    #1,d0            stdout
        moveq    #1,d1            un caractere a afficher
        lea        Touche(a6),a0
        OS9        I$Write
        bcs        Erreur
        bra        Reco
Fin:    moveq   #0,d1           sortie sans erreur
Erreur: OS9     F$Exit
**************************     
Lecla { 
        btst    #7,CRB(a3)         transition cur CA1 ?
        beq     PdT                interruption autre
        bset    #3,CRB(a3)         mise . un CB2: /OE=0
        move.b  ORB(a3),d0       lecture valeur et raz CRA7
        andi.b    #$0F,d0            poids faibles seulement
        lea        TabConv(pc),a0    a0 pointe sur la table de conversion
        move.b    (a0,d0),d0        conversion
        move.b  d0,Touche(a6)    passage de valeur
        bclr.b    #3,CRB(a3)        mise a zéro CB2: /OE=1
        return;   
    }
PdT:    ori.b   #1,CCR           carry a un pour signaler pas de touche
        return;
*************************
TabConv:    dc.b    '#',$30,$2A,$00,$39,$38,$37,$00,$36,$35,$34,$00,$33,$32,$31
        align
/********************************************************
*        Initialisation du PIA gerant l'afficheur        *
********************************************************/
IniPIA0 {
        Pt_pia PIA=(Pt_pia)PIA0;        // lea     PIA0,a3     //    a3 pointe le pia
        PIA -> CRA = 0 ;     //   acces DDRA
        PIA -> CRB =  0;     //   acces DDRB
        PIA -> DDRB = 0; //  port B en entree
        PIA -> DDRA = 0xFF;  //port A en sortie
        PIA -> CRA = 0x34;   // acces ORA,CA2 en sortie mode programme
        PIA -> CRB = 0x34;  //  acces ORB,CB2 en sortie mode programme
        return;
    }


lundi 9 février 2009 à 14:34:13 | Re : Passer d'un code asm à un code c ?

42wawa42

Hello
Dans la Data Sheet du Motorola 68000 Family il y a la réponse a vos questions pour le PIA

A+
42wawa42
lundi 9 février 2009 à 16:23:19 | Re : Passer d'un code asm à un code c ?

Octocat

Je te remercie, mais je vois pas trop ce que c'est ! ^^"

J'ai trouvé une doc sur le Motorola de 646 pages, si c'est bien ça, et ben, bonne chance à moi ! :p
lundi 9 février 2009 à 23:09:22 | Re : Passer d'un code asm à un code c ?

42wawa42

Hello
Oui tu as vu juste, mais cherche dans la partie PIA de la doc. Ton code fait référence à un PIA donc cherche dans set direction. Je ne suis pas certain mais le chips MC6821 "Peripheral Interface Adapter" doit être le bon. J'ai encore quelque livre sur les M68000 car j'ai du écrire des programme langage machine de M68000 a Z80 et Intel série 386 486 586. Donc un bureau avec beaucoup de livres pour l'informatique.

 

A+

42wawa42

 


Cette discussion est classée dans : code, char, unsigned, sortie, pia


Répondre à ce message

Sujets en rapport avec ce message

strrev [ par vecchio56 ] Je regarde le fichier strrev.asm qui est utilisé au moins pour les debogages et je remarque que c'est une traduction d'un algorithme écrit en C qui es Démarrer ... Grace à vous j'espère ; ) [ par MaxSoldier ] Bonjours,J'ai essayé de commencé l'assembleur ( ou dumoin j'ai essayé :p ) il y à plus de 2 jours. Mon réel problème n'est pas le language en lui même Copier chaine [ par DeAtHCrAsH ] Lu,Je débute en ASM et je cherche des exemples et des cours un peu partout. Pour l'instant j'essaye d'apprendre a maitriser l'uitlité des registres ma Cycles de mov [ par vecchio56 ] Je me demandais si les instructions suivantes étaient équivalentes en termes de performances, ou si certaines d'entres elles demandaient plus de cycle pic16f84 serin [ par h82kev ] bjr à tousvoilà mon problèmej'utilise un pic16f84 pour un banc de test pour modemlorsque j'appui sur un bouton poussoir (pin 7), je veux envoyer un ca Console + Icon [ par DeAtHCrAsH ] J'essaye de mettre une icone dans mon programme en mode console. J'ai un fichier de resource avec ca dedans :#define IDI_ICON1 100LANGUAGE 0, 0IDI_ICO Que signifie réellement "ASSUME" dans TASM ? [ par hamburger_de_dinde ] Que signifie réellement --> assume CS:code , DS:data ???Puisque, dans le code, on écrit quand meme MOV AX, data et MOV DS, AX. Est-ce utilde d'écrire portabilité du code [ par sajid_morad ] salut tout le monde, je programme avec le visaul c++ , et j ai inserer un code asm dans mon programme, sashant que j ai un micro pricesseur pentium, v assembleur 8086: Affichage de table ASCII [ par redwings ] je cherche le code source d'un prog en asm : comment on peut afficher toute la table des caractere + le code ascii en héxadecimal exemple : Resultat s


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales