1 Le µ µ µ µp 68000 : Le logiciel 1 Langage machine 1.1 Définition C'est le seu
1 Le µ µ µ µp 68000 : Le logiciel 1 Langage machine 1.1 Définition C'est le seul langage qui soit directement compréhensible par un microprocesseur. Il est composé d'une suite d'octets localisés en mémoire et dont le contenu, binaire, constitue une suite de codes significatifs pour le microprocesseur. Il est nécessaire de bien comprendre que quel que soit le langage utilisé en programmation évoluée ( C , ADA, Programmation Structurée, Programmation Objets) , les outils de programmation finiront toujours par fournir à notre microprocesseur des codes langage machine... 1.2 Exemple Prenant l'instruction suivante comme exemple : MOVE.L $FC0024, $2400 Cette instruction est en langage assembleur, son équivalent binaire (hexadécimal) est : $ 21F9 00FC 0024 2400 C'est ce code là qui est stocké en mémoire et qui sera exécuté par le µ µ µ µp. donc le code opération de l'instruction MOVE.L est $ 21F9 == % 00 10 000 111 111 001. 00 = MOVE 10 = .L 000 111 = L'opérande Destination est une adresse mémoire sur 16 bits... 111 001 = L'opérande Source est une adresse mémoire sur 32 bits... 1.3 Organisation d'une instruction en code machine: La langueur des instructions en code machine diffère suivant la nature de l'instruction et le mode d'adressage. Elle varie de 2 à 10 octets. Les 2 premiers octets constituent le code opération de l'instruction (µ µ µ µp 16 bits). 2 Langage assembleur : 2.1 Définition Un programme en langage d'assembleur est stocké sous forme de texte (comme un programme dans un langage de plus haut niveau). Chaque instruction assembleur représente exactement une instruction machine. Par exemple, l'instruction d'addition décrite ci-dessus serait représentée en langage assembleur comme suit : ADD.B D1, $2200 Ici, la signification de l'instruction est beaucoup plus claire qu'en code machine. Le mot ADD est un mnémonique pour l'instruction d'addition. La forme générale d'une instruction assembleur est : Etiquette Mnémonique Opérandes commentaires Ses avantages : - minimise le code - meilleur contrôle sur le matériel. [bien adapté à l’écriture des routines d’entrées/sorties] 2 2.2 Instruction de mouvement : MOVE.(BWL) source, destination MOVEA.(WL) src, An si sur 16 extension sur 32 bits MOVEQ #data, Dn extension signé B L Exp : MOVEQ #-128, D4 FF FF FF 80 MOVE src, CCR (CCR sur 8 bits) Exp : MOVE #$4E5A, CCR XX 5A EXG Rn, Rm (Rn Rm) SWAP Dn (Dn(31-16) Dn(15-0)) 3 Modes d'adressage : Registre; Immédiat, Absolu et Indirect On désigne par mode d'adressage, la manière d'accéder à un opérande. 3.1 Adressage Registre : L'opérande se trouve dans le registre spécifié dans l'instruction An, Dn, CCR, SR Exp : CLR.W D7 MOVE.L A3, D0 N.B : si la destination est un registre d'adresse An, si la taille est W extension signée jusqu'à L. 3.2 Adressage immédiat : L'opérande est exprimé directement par sa valeur. Le symbole # (dièse) identifie le mode d'adressage immédiat. Exp. : MOVE.B #$E4,D2 MOVEQ #-6,D7 N.B : ce mode ne peut être utilisé qu'en source. 3.3 Adressage absolu : L'opérande est désigné par une adresse qui indique son emplacement en mémoire; le défaut de symbole exprime ce mode. Exp. : MOVE.W #$1E48, $2800 MOVE.L $2200, $803000 3.4 Adressage indiect simple : L'opérande se trouve dans une position mémoire, dont l'adresse est contenue dans un registre d'adresse. Les parenthèses "(, )" expriment ce mode. Exp. : CLR.W (A4) #$0000 [A4] Si A4 = $2800 les deux cases mémoire ($2800 et $2801) sont initialisées avec la valeur $00. Exp. : MOVE.L (A0), (A1) 3 [[A0]]L [A1]L 4 Affectation des indicateurs Suppositions : [$2800]B = $00 [$2900]L = $A01704A2 X N Z V C Avant exécution x x x x x Après exécution de : MOVE.B $2800, $2820 x 0 1 0 0 Après : MOVE.L $2900, D4 x 1 0 0 0 x 1 0 0 0 5 Calcul arithmétique et logique Exp.1 : Calcul de la moyenne de 2 nombres de 32 bits : 2 a b m + = . On suppose que aL+bL ne dépasse pas 32 bits (a+b)L et m codés sur 32 bits. ada = $2800; adb = $2804; adm = $2808 Remarque : a étant composé de plusieurs octets; alors l'octet de poids le plus fort se trouve à l'adresse spécifiée. ORG $2400 MOVE.L ada, D0 ADD.L adb, D0 ASR.L #1, D0 MOVE.L D0, adm MOVE.B #9, D0 TRAP #15 Ada EQU $2800 Adb EQU $2804 Adm EQU $2808 END Remarque : quand il s'agit d'une division ou multiplication par des puissances de 2; on décale vers la droite ou la gauche respectivement. 5.1 Instructions arithmétiques Le code binaire (non signé); code complément à 2(C/2) (signé) utilisent tous les deux ces instructions : • ADD(B W L) source, Dn • ADDA(W L) source, An si la source est de format W alors extension à 32 bits (L) puis addition avec le registre An 4 • ADDI(B W L) #data, dest • ADDQ(B W L) #data, dest il faudrait que data soit entre 1 et 8 • ADDX(B W L) Dn, Dm • ADDX(B W L) -(An), -(Am) Même chose pour la soustraction SUB Code BCD • ABCD -(An), -(Am) • ABCD Dn, Dm • SBCD -(An), -(Am) • SBCD Dn, Dm Remarque : quand l'addition est de plus de 8 bits, on procède par tranche voir documentation. • MULU source, Dn | source (W) U : unsigned ; S : signed • MULUS source, Dn | et Dn (W) résultat Dn (L) (16 x 16 32) • DIVU source, Dn | • DIVS source, Dn |Dn(L) ÷ source (W) résultat Dn (rW ; qW) Exp : MULS D3, D5 xxxx ------- D3 xxxx ------- D5 ------ ------- Résultat D5 Attention : lors de la division, on peut faire : Dn(L) ÷ source = Q(L) erreur car Q tient sur 16 bits lors d'une opération similaire, voir l'indicateur "V" dans le CCR le signe du reste est celui du dividende (dest) (quand il s'agit de division signée). • NEG(B,W,L) dest complementation à 2 • NEGX(B,W,L) dest complementation à 2 • NBCDB dest toujours sur 8 bits si X=0 complément à 10; sinon X=1 complément à 9 • EXT(W,L) Dn extension signée Quand on complémente à 2 une donnée de 64 bits, le µp complémente la 1er tranche avec NEG et la 2ème tranche avec NEGX. Exp.2 : 5 Addition de 2 nombres a et b de 64 bits. s = a+b sur 64 bits. On suppose que (a+b) tient sur 64 bits. ORG $2500 MOVE.L adb+4, D0 blowD0 ADD.L ada+4, D0 blow+alowD0 (si retenue X) MOVE.L D0, ads+4 blow+alowslowads+4 suite MOVE.L adb, D0 bhighD0 MOVE.L ada, D1 ahighD1 ADDX.L D0, D1 addition avec retenue ne se fait qu'entre les registres sauf selon un certain mode d'adressage : bhigh+ahigh+ XD1 (à cette étape "X=0". Car le résultat final est sur 64 bits) MOVE.L D1, ads D1 shigh MOVE.B #9,D0 TRAPE #15 ada EQU $2800 adb EQU $2804 ads EQU $2808 END Exp.3 : Calcul de 3 ab p c + = où a, b et c sont des nombres entiers signés sur 8 bits. Les adresses sont : ada, adb, adc et adp (p partie entière). Théoriquement : a x b 16 bits ab+3 17bits 3 ab p c + = 17bits – 8 bis = 9 bits p à prévoir sur 16 bits. Programmation : ORG $2600 MOVE.B ada, D0 MOVE.B adb, D1 EXT.W D0 EXT.W D1 MULS D1, D0 La multiplication n'est possible que sur 16 bits, alors, il y a nécessité d'extension de 8 bits vers 16 bits. 6 (ab) est grâce à l'instruction précédente sur 32 bits ce qui nous arrrange; sinon , on aurait dû faire une extension car (ab) doit être sur 32 bits pour la division. ADDQ.L #3, D0 MOVE.B adc, D2 cB D2 EXT.W D2 cB cW (extension format 16 bits) DIVS D2, D0 (ab+3)L / cW qW et rW D0 rW (reste) qW (quotion) MOVE.W D0, adp MOVE.B #9,D0 TRAP #15 Equivalences !! END 5.2 Instructions logiques : Source, Dn • AND(B,W,L) Dn, Dest • ANDI(B,W,L) #data, dest De même pour OR et ORI • EOR(B,W,L) Dn, dest • EORI(B,W,L) #data, dest • NOT(B,W,L) dest comlément à 1 • ASL(B,W,L) Dn, Dm décalage de [Dn]0-5 bits • ASL(B,W,L) #data, Dm data 1à 8 • ASL.W dest toujours sur W décalage d'une bit De même pour : ASR, LSL, LSR, ROL, ROR, ROXL et ROXR 6 Les directives en Assembleur 6.1 Définition : Une directive est une pseudo-instruction destinée à l'assembleur, c'est un ordre spécial que le programmeur donne à l'assembleur pour affecter de valeurs à des symboles (adr EQU $2801), introduire des données en mémoire, … etc. 6.2 Directive origine : ORG Elle indique à l'assembleur à quel emplacement en mémoire il faut mettre le code machine des instructions, une fois assemblées, ou bien à quel emplacement il faut uploads/S4/ cours-apm-02-pdf.pdf
Documents similaires
-
21
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jui 08, 2022
- Catégorie Law / Droit
- Langue French
- Taille du fichier 0.2617MB