µProcesseur 80x86: Architecture and Assembly Language PDF
Document Details

Uploaded by MomentousJasper2711
Tags
Summary
This document provides materials on the architecture of the µProcesseur 80x86, an assembly language, covering topics such as memory segmentation, registers, and instruction sets. It includes code examples and explanations of concepts such as pipelining and flags. It seems to be lecture slides or notes on the topic.
Full Transcript
Décimal Binaire Hexadécimal 0 0 0 0 0 0 1 0 0 0 1 1 2 0 0 1 0 2 3 0 0 1 1 3 4 0 10 0 4 5 0 1 0 1 5 6...
Décimal Binaire Hexadécimal 0 0 0 0 0 0 1 0 0 0 1 1 2 0 0 1 0 2 3 0 0 1 1 3 4 0 10 0 4 5 0 1 0 1 5 6 0 1 10 6 7 0 1 1 1 7 8 1 0 0 0 8 9 1 0 0 1 9 10 1 0 1 0 A 11 1 0 1 1 B 12 1 1 0 0 C 13 1 1 0 1 D 14 1 1 1 0 E 15 1 1 1 1 F 05/05/2025 1 ORG 100H ; Code En Mémoire MOV AX,5 ; 07100 : B8 05 00 , IP=0100H MOV BX, 0ABCDH ; 07103 : BB CD AB , IP=0103H MOV DL,17 ; 07106 : B2 11 , IP=0106H ADD [SI+BP+100],5678H ; ; 07108 : 818200 01 78 56 , IP=0108H INC CX ; 0710E : 41 , IP=010EH ret ; 0710F : C3 , IP=010FH B8 05 00 BB CD AB B2 11 81 82 00 01 78 56 41 C3 DE/OU VERS AH AL CALCUL LA MÉMOIRE BH BL 20 BITS D’ADRESSE CH CL Bus Adresse INTERFACE DH DL AVEC IP Bus BP CS BUS EXTERNES Commande SP DS 16 BITS SI SS Bus Données DI ES BUS INTERNE 16 Bits RT RT CODAGE CONTRÖLE UAL SEQUENCEMENT FILE D’ATTENTE 6 OCTETS de CODES INSTRUCTIONS FLAGS UIB: Unité D’Interface De Bus UE: Unité D’Exécution AH AL BH BL CH CL DH DL SP BP SI DI IP FLAGS CS DS SS ES Instruction 1 Instruction 2 Instruction 3 Instruction 4 Instruction 5 R D R E S R D R E S R D R E S R D R E S R D R E S i I O X R i I O X R i I O X R i I O X R i I O X R INST1 INST2 INST3 INST4 INST5 INST1 INST2 INST3 INST4 INST5 INST1 INST2 INST3 INST4 INST5 INST1 INST2 INST3 INST4 INST5 INST1 INST2 INST3 INST4 INST5 … 65536 Octets Segment de CODE CS: Segment de Donnée DS: 64KO SS: Segment de Pile Segment de SE: Données sup … Segment de CODE Instruction CS IP Segment de Donnée Si Segment de Pile Segment de Données sup DS : VALEUR DS X X X X OF DF IF TF SF ZF X AF X PF X CF OF SF ZF AF PF CF 26H + 5AH=80H 1 1 0 1 0 0 B5H + 4AH=FFH 0 1 0 0 1 0 B0H + BCH=6CH 1 0 0 0 1 1 F0H + 10H=00H 0 0 1 0 1 1 50H + 60H=B0H 1 1 0 0 0 0 D5H - F3H=E2H 0 1 0 0 1 1 76H – CEH=A8H 1 1 0 1 0 1 F4H – 7BH=79H 1 0 0 1 0 0 0 0 1 0 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 OF SF ZF AF PF CF 26H + 5AH=80H 1 1 0 1 0 0 B5H + 4AH=FFH 0 1 0 0 1 0 B0H + BCH=6CH 1 0 0 0 1 1 F0H + 10H=00H 0 0 1 0 1 1 50H + 60H=B0H 1 1 0 0 0 0 D5H - F3H=E2H 0 1 0 0 1 1 76H – CEH=A8H 1 1 0 1 0 1 F4H – 7BH=79H 1 0 0 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 1 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 OF SF ZF AF PF CF 26H + 5AH=80H 1 1 0 1 0 0 B5H + 4AH=FFH 0 1 0 0 1 0 B0H + BCH=6CH 1 0 0 0 1 1 F0H + 10H=00H 0 0 1 0 1 1 50H + 60H=B0H 1 1 0 0 0 0 D5H - F3H=E2H 0 1 0 0 1 1 76H – CEH=A8H 1 1 0 1 0 1 F4H – 7BH=79H 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 1 0 1 0 1 0 1 0 1 1 0 0 0 0 0 1 1 1 1 0 0 1 1 1 0 1 1 0 0 0 0 1 1 1 0 0 0 1 0 OF SF ZF AF PF CF 26H + 5AH=80H 1 1 0 1 0 0 B5H + 4AH=FFH 0 1 0 0 1 0 B0H + BCH=6CH 1 0 0 0 1 1 F0H + 10H=00H 0 0 1 0 1 1 50H + 60H=B0H 1 1 0 0 0 0 D5H - F3H=E2H 0 1 0 0 1 1 76H – CEH=A8H 1 1 0 1 0 1 F4H – 7BH=79H 1 0 0 1 0 0 0 1 1 1 0 1 1 0 1 1 1 1 0 1 0 0 1 1 0 0 1 1 1 0 0 1 1 1 1 0 1 1 1 0 1 0 1 0 0 0 0 1 1 1 1 0 0 1 OF SF ZF AF PF CF 7BC5H + 4A6FH=C634 1 1 0 1 0 0 B69DH + BE8AH=7527 1 1 0 1 0 0 A1E7H - 2CB9H=752E 1 0 0 1 1 1 7C15h - CE24H=ADF1 0 0 1 0 1 0 0 1 1 1 1 0 1 1 1 1 0 0 0 1 0 1 0 1 0 0 1 0 1 0 0 1 1 0 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 0 1 0 0 OF SF ZF AF PF CF 7BC5H + 4A6FH=C634 1 1 0 1 0 0 B69DH + BE8AH=7527 1 0 0 1 1 1 A1E7H - 2CB9H=752E 1 0 0 1 1 1 7C15h - CE24H=ADF1 0 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 0 1 1 1 0 1 1 0 1 1 1 1 1 0 1 0 0 0 1 0 1 0 0 1 1 1 0 1 0 1 0 0 1 0 0 1 1 1 OF SF ZF AF PF CF 7BC5H + 4A6FH=C634 1 1 0 1 0 0 B69DH + BE8AH=7527 1 0 0 1 1 1 A1E7H - 2CB9H=752E 1 0 0 1 1 0 7C15h - CE24H=ADF1 0 0 1 0 1 0 1 0 1 0 0 0 0 1 1 1 1 0 0 1 1 1 0 0 1 0 1 1 0 0 1 0 1 1 1 0 0 1 0 1 1 1 0 1 0 1 0 0 1 0 1 1 1 0 OF SF ZF AF PF CF 7BC5H + 4A6FH=C634 1 1 0 1 0 0 B69DH + BE8AH=7527 1 0 0 1 1 1 A1E7H - 2CB9H=752E 1 0 0 1 1 0 7C15h - CE24H=ADF1 1 1 0 0 0 1 0 1 1 1 1 1 0 0 0 0 0 1 0 1 0 1 1 1 0 0 1 1 1 0 0 0 1 0 0 1 0 0 1 0 1 0 1 1 0 1 1 1 1 1 0 0 0 1 INCLUDE EMU8086.INC DEFINE_PRINT_STRING DEFINE_GET_STRING " " ORG 100h MOV AX , Variable_A MOV BX , Variable_B ADD AX , BX SUB Variable_C , BL MUL AL RET ; Fin de Programme et Retour Le Compilateur Met Les 10 Mots à Zéro (0 ) INCLUDE EMU8086.INC ORG 100H PRINT ' Tapez Un MOT : ' MOV DX , 6 ; Lecture de 5 Caractères, La Procédure LEA DI , MOT CALL GET_STRING ; Ajoute Zéro (0) Terminal LEA DI , MOT ; DI Contient L'@ 1er Caractère LEA SI , MOT ; Le registre SI Contient ADD SI , 4 ; L'@ du Dernier Caractère MOV CX , 5 SHR CX , 1 ; CX =Longueur Divisée Par 2=Nombre d'itérations Boucle: MOV AL , [DI] ; Comparaison Entre Le 1er Caractère MOV BL , [SI] ; Et Le Dernier Caractère CMP AL , BL JINC DI ; DI=DI+1 :Accéder au Caractère Suivant DEC SI ; SI=SI+1:Accéder au Caractère Précédent LOOP Boucle JNE NON_PAL ; Si AL Est Différent de BL Aller à NON_PAL PRINTN ; Sauter Une Ligne LEA SI , MOT CALL PRINT_STRING PRINT ' Est Un Palindrome ' JMP FIN ; Pour ne pas écrire Palindrome ; et Non Palindrome NON_PAL: PRINTN ; Sauter Une Ligne LEA SI , MOT CALL PRINT_STRING PRINT " N'Est Pas Un Palindrome " FIN: INT 16H ; Attente De Frape d'Une Touche RET MOT DB 6 DUP (?) ; Réservation de 6 Octets DEFINE_GET_STRING DEFINE_PRINT_STRING END INCLUDE EMU8086.INC ORG 100H PRINT ' Tapez Une Lettre Majuscule : ' MOV AH , 1 ; Lire Un Caractère, INT 21H ; On le Récupère Dans AL ADD AL , 32 ; Les Lettres Majuscules et Minuscules Sont Distantes ; de 32 Dans La table ASCII ; SUB AL , 32 Fait La Transformation Contraire ; Minuscule vers Majuscule PRINTN ; Sauter Une Ligne PRINT ' La Lettre en Minuscule est: ' MOV DL , AL ; ( DL ) = Le Caractère à Afficher MOV AH , 2 ; Affichage d'Un INT 21H ; Caractère RET ; PRINT & PRINTN SONT DES Macro de EMU8086.INC Include EMU8086.inc Org 100H ; PRINT 'TAPEZ UN NOMBRE ENTIER X=' CALL SCAN_NUM MOV BX , CX PRINTN PRINT 'TAPEZ UN NOMBRE ENTIER N=' CALL SCAN_NUM PRINTN MOV AX , 1 ; On Fait N MULTIPLICATIONS CMP CX , 0 JE FIN Boucle: MUL BX LOOP Boucle FIN: CALL PTHIS DB 'Le RESULTAT =',0 Call PRINT_NUM_UNS RET DEFINE_SCAN_NUM DEFINE_PRINT_NUM DEFINE_PRINT_NUM_UNS ; Si X=1 , N=15 Alors P=XN = 1 DEFINE_PTHIS ; Si X=3 , N=0 Alors P=XN = 1 END; ; Si X=2 , N=15 Alors P=XN = 32768 Include EMU8086.inc Org 100H ; PRINTN ' Tapez Un Texte : ' MOV DX ,80 LEA DI , TEXTE CALL GET_STRING ; Lecture du Texte et Son stockage ; à L'adresse Du Texte PRINTN ; Saut de Ligne PRINT ' Tapez Un Caractère = ' MOV AH , 1 INT 21H ; Lecture d'un Caractère et Sa Mise ; Dans Le Registre AL MOV CX , 80 ; Nombre D'Itérations MOV BX , 0 ; BX Contient Le Nombre d'apparition ; du caractere Lu BOUCLE: CMP AL , [DI] JNE SUITE ; Aller à Suite Si Différents INC BX ; Incrémentation de BX Si Egaux SUITE: INC DI ; Incrémentation de DI Pour Tester ; Le Caractère Suivant du Texte LOOP BOUCLE ; ; CALL PTHIS DB 10,13,' Le Nombre Du Caractère ',0 MOV DL , AL ; Mettre Le Caractère a Afficher Dans DL MOV AH , 2 INT 21H ; Affichage Du Caractère Sur Ecran PRINT ' Dans Le Texte Est = ' MOV AX , BX CALL PRINT_NUM_UNS ; Affichage Du Nombre D'Apparition du Caractère Lu Sur Ecran RET TEXTE DB 80 DUP(?) ; Réservation de 80 Octets pour ; stocker un texte DEFINE_SCAN_NUM DEFINE_PRINT_STRING DEFINE_PRINT_NUM DEFINE_PRINT_NUM_UNS DEFINE_PTHIS DEFINE_GET_STRING END