You are on page 1of 19
22972014 LE JEU DINSTRUCTIONS DU so8s/e088 | Testes Cou | ntoducion im | Lor times bate de mitoprocoescut | Lemirprceateu 6068406 | Prerenmation en atertour | [iso mercon nnn Ces aropons | Linas paste 2588 | ntrtcesse 2806550| Chapitre 4 boo LE JEU D'INSTRUCTIONS DU 8086/8088 introduction: (On pout lviser es instructions cu 8086188 en 6 groupes comme suit 1+ Insbuetions de vansfet de données. + Instructions artnmatiques, + Instuctions ée bis (ogiqves). Instructions 08 sauts de programme, + Insbuctions 6e enaine de caractores. + Instructions &e contble de processus, 4 Instuctions intoruptions II Les instructions de transfert de données : lis sont divists en 4 sous- groupes comme le montre Ie tableau suivant Usaxe (General [Bntrecs-sorties Fonction FTranstert dootets ou de mots |Chargement de la pile Déchargement de la pile |Chargement de tous les registres dans 1a| pile Déchargement de tous les registres| Jdans la pile Echange dlactet ou de mot| Translation d’octet fntréc de mot ou doctet Sortie de mot ou d’octet Adresses [Chargement de Tadrease effective |Chargement du pointeur avec DS |Chargement du pointeur avec BS Tadicateurs Transfert des indicateurs dans AH Rangement de AH dans les indicateurs |Chargement des indicateurs dans la pile Déchargement des indicateurs de la pile, 1-4 J Les instruction néral cet symaxe est comme suit: Exemples : Remarques : + Il et striclement inlrdt de tansfécer permet de tansférer les données (un octet ou un mot) dun regsie & un auze registro ou dun registe & une case mémoire, sa le contenu dune case mémoite vers une auve case mémoie comme sut Pour remédier& se probleme on va effectuer cette operation sur deux stapes + On a pas le doit aussi de ranstérer un regisire segment vers un autre regisire segment sans passer par un autre regisrs On va passer comme la pramiére instruction hitp:wwtechnologuepro.comimicroprocesseurchap4._microprocesseurhim ane 2297014 LE JEU DINSTRUCTIONS DU 8086/8088 + Le CS rest jamais usd comme reglete destination, 2) PUSH Elle permet dempilr les registres du CPU sur le haut dela pile a — om | a essen. Elle permat de dépiler les regstves du CPU sur le haut symeace : POP destination fxemple: stil ror ax “Moonee oe soe be Fac Da "Be (60 exeuntt entre 4 ot BF) fon ‘tipay jC TAL L oh (ov excste Sur's otte ) om ALyiSt) —} ALT AL oy oneness le convenu co 13 case von (or],AL Sow logitue entre La ase mépoive potnté par 14-6) TEST Elle permet de fare un ET logiqus entre la destination etla source (octet ou un mot) mais la destination ne sera pas touchée en affet cette Instruction ne touche que les indlcateurs. xem Elle va effectuer un ET logique entre le premier nombre at a s2cond sans toucher les deux mais alle va affecter uniquement es indicateurs lags} 1-2 Les instructions de décalages SSHL: décalage logique & gauche cF |_| SHL k— 0 SHR : déecalage logique a crote cr | SHR 1 0 SAL: décalage arthmétique & gauche CF .—_I SAL — 0 hitp:wwtechnologuepro.comimicroprocesseurchap4._microprocesseurhim sono 22972014 LE JEU DINSTRUCTIONS DU so8s/e088 ‘SAR :décalage arthmétique & gauche SAR CF W:3 Les instructions de rotations ; ROL: Rotation a gauche | CF ROL |, ROL : Rotation a ravers a rtenue & gauche [ CF RCL — ROR CF ROR : Rotation & droite ROR : Rotation travers la rotenue & droite —— RCR >| CF ‘Synlaxe des instuctions de rotation et de décalage Exemple Sion veut aie quatre rotations de suite on a deux slutions Quencore Remarque: Les instructions de rotations ot de décalages logques ne tennent pas compte du bit designe donc eles travallent avec les nombres non signés, Les instructions de rotations et de décalages arithmét ques préservent la bt de signe done oles sont résorvdes aux nombras signés. V) Instructions de sauts de programs Eos permettent de faite dos eauts dans Fexécution d'un programme (rupture de séquence) Remarque: Ces instructions matfectent pas les Flags. Dans cette catégore on trouve toute le instructions de branchement, de bouck et interruption ‘aprés un branchoment, le tableau suivant donne ces instructions hitp:wwtechnologuepro.comimicroprocesseurchap4._microprocesseurhim ‘ng 22972014 LE JEU DINSTRUCTIONS DU so8s/e088 Lia Poa [Branchements [Appel a an sous programme inconditionnels Retour dun sous programme Branchamens conditionnel iarithmétique non} JSi supérieur ou égal/ Si_non| sienés) intériee St inférieue/si non supérieur ni dell Si inférieur ou égal/si cal [Branchements Jconditionnele (srithmétique signée) [Brancherment Jconditionnels (fags) Bouces finterraptions LLanotion de pracédure en assembleur correspond a celle de fonction en langage C, ou de sous-progranime dane Saultes langages. instruction A. instruction B _—* catent _— CALL Caleut —— instruction © instruction D + 4 nag —~ RET FIG. ~ Appel dine procédure, La procéoure est nommée calul. Apres nstucton B, le processeur passe &Finekucton C de a procedure, puls continue usau’a rencontre: RET el revient &Finstruction 0, Une procédure eet une suite dinsructionseffectuant une action précse, qui sont ragroupées par commodité et pour vite avoir a les ‘err @ plusieurs reprises dans le programme, Les procédures sont repérées par adresse de leur premisre instruction, a laquelle on associe une siqustte en assembleur LLexécution dune procédure est déclenchée par un programme appelant. Une procédure pe lle-méme appeler une autre procédure, ot hitp:wwtechnologuepro.comimicroprocesseurchap4._microprocesseurhim vane 22972014 LE JEU DINSTRUCTIONS DU so8s/e088 ainsi de suite Instructions CALL et RET LLappel dune procédure est effectué par instruction CALL CALL acrosse_debut procedure LLadrosso est sur 16 bits, la procécure ost dane dans lo méme segment éinstuctions. CALL est une nowvalle instuction do branchement incondiionnel. La fin d'une procédure est marauée par finstruction RET vw. er. RET ne prond pas dargument; le processeur passo & fnstruction placée imméciatement apr lo CALL. RET est auss! une insttuction de branchement: le registe IP est modifié pour revenir ala valeur quil aval avant Tappel par CALL. Comment le provesseur rerouve-til cette valeur? Le probléme est complique parle fat qua Yon peu avoir un nombre quslconque dappels morse, ‘comme sua gure suivante adresse de refour,utlsée par RET, est en fait sauvegardée sua pile par Tnsiruction CALL. Lorsque le processeur exécut Mnstuction RET, ildéple adresse sur ple (comme POP), et la range dans I LLinstruction CALL effectue done les opérations + Empl la valour de IP. A.ce moment, P pointe sur Mnstruction qui sult le CALL. ' Placer dans IP adresse de la premiere instruction dela procédure (donnée en argument) Etfinstruction RET + Dépiler une valeur ela ranger dans IP, Remarque 1: SI la procédure apparient au méme segment que le programme principal elle est dte de type NEAR sinon elle est dte de type FAR, la Giference entre eux cest que dans le premier cas le processeur dot empl une seule valeur dans la pile c'est Ie racist IP mais cans Ie ‘douxiéme cas faut empiler le egistre IP alns! que leregstre segment CS et bien sur iles dépller pendant le retour dela procédure. Remarque 2 : Passage de paramatres n général, une procédure effectue un traitement sur des données (paramétres) qui sont fouries parle programme apoelant, et produit un résutat qui est transmis & ce programme. Plusieurs sratégies powant sire employees 1. Passage par egistrs : les valeurs des param@tres sont contanues dans des regisies du processeur. Cest une méthode simpla, mais qu ne convient que sile nombre de paramétes est pelt (ly a peu de regstes), 2, Passage par la pi Exemple avec passage par registre (On va éerre une procédure (SOMME) qui calcula la somma de 2 nombres natures do 16 bis. les valeurs des paramétres sont empllées, La procédure itl pil CConvenans que les enters sont passés par les registres AX et BX, et que le résutat sera placé dans le regitre AX, Laprocécure srt alors tréssimplement : SOMME PROC NEAR let son appel, par exemple pour ajouter 6 @ la variable Truc Exempla avec passage parla ple Cette technique met en cause un nouveau registe, BP (Base Pointer), qui permet de Ite des valeurs sur la pile sans les dépiler ni modifier SP. Le registe BP permet un made dadressage Indirect special, de ta forme. ow ox, (906) Cette instucton charge le contenu cu mot mémoire dacresse BP+6 dans hitp:wwtechnologuepro.comimicroprocesseurchap4._microprocesseurhim sano 22972014 LE JEU DINSTRUCTIONS DU so8s/e088 AX. Ain! on tala sommet de a pile avec oy ax, (85) 5 M8 sane dpstor Etle mot suivant avec: |Lappel de la procédure (SOMME?) avec passage parla pile est La procédure SOMME? va ire la ple pour obteni la valour des paramétres, Pour cela, I aut bien comprendre quel est le contenu de la ple aprés lo CALL sre Pemirsarmine Le commet de la ple content Facresse de retour (ancienne valour de IP ‘omplée par CALL). Chaque élément dela pile occupe deux octets. La procédure SOMME? séerit done La valour de retour est laissée dans AX La solution avec passage parla pile parait plus lourdo sur cot exemple simple. Copendant, elle est beaucoup plus sounle dans lo cas gbnéral que le passage par regis. I est irs facile par exemple Cajouter deux paramétres supplémentaires sur la ple. Une procédure bien berte masife le moins de registtes possible. En général, faccumlalour est ullse pour wanemetie le résutat et est dane mociNe, Les autres registres ullsss par Ia procédure serontrormalement sauvegardés sur la pile. Voi une autre version de SOMME2 qui ne modiie pasla valour eontenue par BP avant appel NNoter que les index des arguments (BP+4 et BP+8) sont modifiés car on a ajouté une valeur au sommet de la pil vet-3) IMP wut incondtionnal Syntaxe Sle JMP est de type NEAR alors IP = IP + Délacement Sile JMP est de type EAR alors CS et IP sont remplacé par les nowwelles valeurs obtenues & partir de Mintruction, LIMP teansfert, sans condtion, 1a commande & emplacement de destination. 'opérande Cible peut &ireabtenu & partic de instruction felle- meme (UMP direct) ou a parte de la memove ou a part dun regltre indique pa Tsttucton, V-2 saut conditionne! Saucon SI CFS1 alors IP = IP + déplacement Sh ZF=1 alors IP = IP + déplacement 2-5) JNC {Si pas de retenve SSI CF=0 alors IP = IP + déplacement V-2-4) INEUIN? (Si non égal) Non zéra SS} ZF=0 alors IP = IP + déplacement 22-6) INO Si pas ce débordemen!) SI OF=0 alors IP = IP + déplacement 2246) INPUIPO Si i Si part in SSI PF=D alors IP = IP + déplacement hitp:wwtechnologuepro.comimicroprocesseurchap4._microprocesseurhim ang 22972014 LE JEU DINSTRUCTIONS DU so8s/e088 17 INS US SI SF=0 alors IP = IP + déplacement v2. rdement SSI OF=0 sors IP = IP + déplacement Si PFat alors IP = IP + déplacement 2-40 1 JS 18 slone (néaat) si sFe alors IP = IP + déplacement V3) Les instructions de boucl WEI 000 = (poucte) ile dcrémente la contenu de CX de 1 SICK est dférente de ro alors i P+ déplacement ‘SIX = Orinstrucion suivante est exéeute. Mov AX.05 Mov cx .05 Toe wore © ven at LLoxteution de instruction MOV BX, AX sora fate aprés Fexécution dela boucl § ‘ols. V-2:2) LOOPE } LOOPZ : (boule si Sgale ou si dgale & z6r) Lo rogistre CX ost décrimenter do 1 automatiquement SIX ost different de zér0 ot lors IP = IP + déplacement Bxemple Mov AX, 03 MOV CX, 6 DeBuT; ADDDH,DL Inc ax stex=o Et AL=I6 CMP AL, 06 stews Loopz DEBUT| Ow AL=06 S MOV AH, 03 V3.3 | LOOPNE | LOOPNZ :(boucle si gale ou si égale A zéra) Le rege CX est décrémenter de 1 auomatiquement SIX est diférent de 2610 ot ZI Exomale: ‘lors IP= IP + déplacement Mov Ax, 03, MOV CX, 6 Depur: ADDDH,DL OAR s1ex=0 ALO CMP AL, 08 ono Loorz DEBUT ov at-cs Gy mov ax, 03 Les instuctons de chaines dee caractéres sont au nombra de 14 comme le montre Ie tablaau suivant hitp:wwtechnologuepro.comimicroprocesseurchap4._microprocesseurhim 199 22972014 LE JEU DINSTRUCTIONS DU so8s/e088 Nom [Fonction REP Frefixe de repetition REPE/REPZ [Repetition tant queaal a zero REPNE/REPNE Repetition tant que different de Movs [Déplacement de chaine MGVSE] MOVEW PDépiacement de chaine MPS [Comparaison de chaines nS Entree de pon ETS) ours Sortie ers un pore dE/S) SEAS FBalayage Tune chaine TODS [Chargement de chaine STOS FRengement de chaines Elles permettent de travailer sur des blocs eactets ou de rots allantjusqu'a 64 Koctet Remaraue: Ces blocs peuvent éire des valeurs numérques ou alphanumérlques. do ebpéttions Cos instructions sont ulsées avec les instructions de chaines de caractires pour assuter la repétion de instruction sion veut appiquer Tinstretion sur un ensemble dinformations. REP décrément automatiquement CX est test est ce qui est dgal 8 zéro ou non. Si CX=0 REP slarét Lt-2 | REPE | REPL: Pour REPEIREPZ : cest la meme chose que REP c'esté-cire elle décrément automatiquement le regstre CX mais elle peut sotr de la boucle si ZF=>0 11-2) BENE) REPNZ. Pour REPNEJREPNZ :clest la méme chose que REP cest bouste si Z ire ele decrément automatiquement le registre CX mais ele peut sort de la 21 Les instructions MOVE-STRING le déplace un élément du segment de données pointe par 08 : Si vers le segment Extra pointé par ES: Ot Remaraue Sitélément a transférer est un octet on utllse: MOVB Si Télément a ransiérer est un Mat on use : MOVWW Mais dar les deux eas on nutiise que opérande. SI et DI sont ensuite incrémentés do 1 (si O Exemplez fase Sour ‘bonjour Soot de nsbeu" message source heslben do 22 up (6) 1 message destination ) ou déerémentés de 1 (si DF=1) une mani 1 automatique, Vid) Les instructions COMPARE-STRING : Comparaison de chatne : elle sousta affects las indicateurs mais ne change pases opérandes. SI.CMPS est ullisé avec fe prifixe de répéttion REPEIREPZ, ale est interprétée comme « comparer tant que lachaine rest pas frie (CX 550) et que les slsmants & comparsr ne sont pas égaux (ZF=1). hitp:wwtechnologuepro.comimicroprocesseurchap4._microprocesseurhim Toctet ou mot de destination (pointé par DI) de octet ov mot source (pointé par SI).CMPS 16n9 22972014 LE JEU DINSTRUCTIONS DU so8s/e088 ‘SI CMPS est ules avec le prifixe de réplton REPNE/REPNZ, ele est inlerprétée comme « compares tant que la chaine n'est pas file (CX <20) et que les éléments & comparer ne sont pas égaux (ZF-0) Remarque: (On ne peut pas ullisé lo préfxe REP avec Tinstruction CMPS car cela revient & comparer uniquement los deux deriers éléments des ‘eux chatnes, Exemplez trouver le promiorcaractére dren entre los deux chalnos. Viet} Les Instructions SCAN STRING: sSsyntaxe 'SCAS soustat élémont dela chatne de destination (octet ou mot) adress par DI dans le segment extra du contenu de AL (un acto ou do AX (un mot) et agi sur les’ ncieateurs. Ni la chaine destinaton i faccumulateur ne change de valeur exemple: recherche de a ete a dans une chaline, EXTRA SEGMENT oes.uee do ‘nanour S907 66 msbeul" SRA ENDS VIS | Les instructions LOAD STRING (LODS) Ee L008: Syrians STORE STRING (STOS| LLODS transfert rélément de chaine (octet ou mot) adressé par SI au ragsire AL ou AX et remet jour SI pour uil ponte vers Félément suivant de la chalne, Wi4-2) STOS: Syntaxe ‘STOS transfert un actet ou un mot du regisre AL au AX vers élément de chane adrossé par DI et modile DI pour qui ponte vers Templacement suvant dela chain, Exemple: transfert dune chaine gource vers une chaine destnation en ullisant LODS et STOS. hes ben do 22 up (0) 1 message gestination hitp:wwtechnologuepro.comimicroprocesseurchap4._microprocesseurhim amo 22972014 LE JEU DINSTRUCTIONS DU so8s/e088 VIL. Les instructions de commande du processeur: Ces instructions agissent sur le pracesseur et ses ndicateurs (Flags) ls sont en nombre de 12 comme le montre fablau suivant pe Pe [Fence Tndicntar AGS [STC eta Tia rtenae OF Jcuc wet ots retenue CF Joc |comptéments ta rtenue StI |itce 51 Yautorication dintaruption Jour |tce& 0 Yastoreation Ainterption Sanaa [HET [Has jusqu'tiaterapton ou RESET Warr |Amente juscu'a broche TEST passe & 0 ESC }pourun coprocesseur Lock|verroutags des bus pendant ta prochaine instructions Sans operation [NOP [Pas operation ilet Indicateure tet s1D Mot CF a 1 ; les registres dlndexaton SI evou DI sont alors automatiquement dée-émanter par las instructions de chaine 6 caractre viet? 181 Met F & 1, permettant sins! au CPU de reconnalire des demandes dinteruption masquables apparsissart sur la ligne dertrée wir. 2 1 Synohronisat 2-4 HALT Maintont le processeur dans un éat Gattente dun RESET ou dune interruption exlerne non masquable ou masquable (avoc I L221 WAIT. Mot lo CPU on état dattonte tant que sa ligne de TEST nest pas active. En offet toutes les cing période thorfoge le CPU vérite est co que calle entrée est active ou non, sell est active le processus exécule instruction suivante & WAIT Laaiese Linstrction Escape fournit un mcanisme par lequel des coprocesseurs peuvent recevo'r leurs insiuctons & pat de la suite instructions cu 8086, Mi2-41 LOCK: Elle utilise cans les systémes Muliprocesseur en effet elle permet le verouilage du bus vis-~vs des autes processeurs \iL3 Sans opération LS. NOP (No operation Le CPU ne faitrin on peut 'en sori pour cber des temaorisations. Exemole: hitp:wwtechnologuepro.comimicroprocesseurchap4._microprocesseurhim sano 22972014 LE JEU DINSTRUCTIONS DU so8s/e088 oveble 42008 ©2009 wwucruapecon |ValSHTMA 01 Tanto) hitp:wwtechnologuepro.comimicroprocesseurchap4._microprocesseurhim r9no

You might also like