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
Juge de la mise en etat 2 www lautreprepa fr DISSERTATION DROIT CIVIL LE JUGE AU C ?UR DU PROCES CIVIL Corrigé par Christophe ANDRE Le Code de procédure civile CPC était appelé o ?ciellement nouveau ? jusqu ? en Les codi ?cateurs de - marquaient de cette 0 0
Droit commercial branche du droit social privé Le droit commercial est une part 0 0
Droit des assurances 12 UNIVERSITE CATHOLIQUE DE LOUVAIN-LA-NEUVE DROIT DES ASSURANCES DUBUISSON - - C Droit des assurances Objectifs Toutes les conditions communes aux assurances On doit pouvoir analyse une police d ? assurances Il faut savoir voir quell 0 0
Le principe de bonne foi en droit civil québécois Louis LeBel Notes pour une al 0 0
Umask 1 UMASK UMASK User ?le creation mode Mask permet de dé ?nir les droits par défaut qui seront appliqués sur la création des ?chiers et des répertoires Il fonctionne de manière disons inversée ? car il ne va pas ajouter des droits mais en enlever Par 0 0
La bataille du solidarisme contractuel : du feu, des cendres, des braises… par 0 0
2 SOMMAIRE : Introduction I. Présentation de l’entreprise : A. Présentation du 0 0
Coursjavascript id1805 1 Qu'est-ce que le Javascript Le Javascript est une extension du langage HTML qui est incluse dans le code Ce langage est un langage de programmation qui permet d'apporter des améliorations au langage HTML en permettant d'exécuter d 0 0
Contrat de transport et Affretement maritime préparé par: RABBAJ Soulaimane BOU 0 0
THÈSE Pour obtenir le grade de DOCTEUR DE L’UNIVERSITÉ DE GRENOBLE Spécialité : 0 0
  • 21
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Jui 08, 2022
  • Catégorie Law / Droit
  • Langue French
  • Taille du fichier 0.2617MB