1 K. Messaoudi 2017/2018 Master 1 – 2017/2018 1°/ Tapez le code assembleur suiv

1 K. Messaoudi 2017/2018 Master 1 – 2017/2018 1°/ Tapez le code assembleur suivant : MOV AX,00FF MOV DX,0F00 ADD AX,DX INC AX  Simulez le code instruction par instruction et visualisez les différents registres dans l’émulateur 8086. 2°/ Affectation des flags : Exécutez les instructions suivantes, deux par deux, en observant les flags affectés : MOV AX,7FFF ADD AX,0001 MOV AX,7FFF INC AX MOV AX,FFFF ADD AX,0001 MOV AX,FFFF INC AX SUB AX,AX 3°/ Vérification de l’assemblage de quelques instructions : Vérifiez l’assemblage des instructions suivantes en spécifiant les champs, w, d, mod, r/m, data, addr hight : MOV AX,200 MOV BX,AX MOV SI,BX MOV [SI],BX MOV [0200],BX Simuler l’exécution détaillée de ces instructions en observant les registres et mémoires concernées. 4°/ Désassemblage de quelques codes d’instructions :  Désassemblez les codes instructions suivants : 8B C2 89 D0 8B 89 F0 CC  Donnez une explication de ce que vous observez :  Désassemblez les codes instructions suivants : 90 64 66 6D 04 DF 89 1E 18 CC Procédez à la simulation de l’exécution de cette séquence. Tirer des conclusions. II. Objectifs : L’objet de ce TP est de vérifier la table des interruptions ainsi que la modification des sous programmes d’interruptions. 2 K. Messaoudi 2017/2018 Master 1 – 2017/2018 1°/ Sous le simulateur emu8086 tapez le programme suivant : Code segment Org 0100h Assume cs:code , ds:code Start : jmp begin Begin : mov ac,code Mov ds,ax Boucle: mov ah,00h Int 16h Mov ah,0eh Int 10h Jmp boucle Code ends End start - Expliquez l’exécution de ce programme ? 2°/ modifier le programme pour prendre en considérations les touches spéciales et les touches de fonction. Exemple : la touche return chariot RC, la touche d’effacement , …etc. 3 K. Messaoudi 2017/2018 Master 1 – 2017/2018 Les interruptions – Les entrées/sorties Commande de l’exemple de feux tri-color I. Les E/S du 8086 commandé par l’émulateur (emu8086) L’émulateur emu8086 est un simulateur du processeur 8086 sous Windows. Il ne permet pas la gestion des entrées/sorties original d’un PC IBM (port parallèle, port série, port USB, ….). Par contre, il permet la gestion de quelques ports virtuels, ces ports peuvent être gérés par un programme assembleur 8086 en utilisant les mêmes instructions des ports réels (IN et OUT) et en utilisant la même syntaxe. Le emu8086 peut supporter des E/S virtuels décrites en un langage de programmation de base (java, visual basic, vc++, delphi, c#, …). Le nombre de ces E/S sur les nouvelles versions de emu8086 est illimité, les adresses peuvent être allée de 0000h à 0FFFFh (soit de 0 à 65535). Deux applications virtuelle (décrite en un langage) peuvent avoir la même adresse mais ne peuvent pas être exécuté en même temps. L’appel de ces applications dans un programme assembleur est obtenu au début de ce programme par la formule suivante : #start = nom_application.exe# Exemple : feux tri-color (traffic lights - port 4 (word))  #start = traffic_lights.exe# Cette application est contrôlée par l’adressage du port virtuel 4. Cette application contient 12 lampes tri-color (rouge, jaune et vert) contrôlé par les 12 bits de poids faible du mot d’adresse 4. Si le bit correspondant est égal à 1 la lampe est allumée. Donc, pour les 12 bits : 1 - the lamp is turned on. 0 - the lamp is turned off. Les voitures virtuelles sont programmées de circuler selon l’état des lamps. Exemple : MOV AX, 0000001011110100b OUT 4, A 4 K. Messaoudi 2017/2018 II. Les interruptions : II.1. INT 15h / AH = 86h - BIOS wait function. input: CX:DX = interval in microseconds return: CF clear if successful (wait interval elapsed), CF set on error or when wait function is already in progress. Note: the resolution of the wait period is 977 microseconds on many systems (1 million microseconds - 1 second). Windows XP does not support this interrupt (always sets CF=1). II.2. INT 16h / AH = 00h - get keystroke from keyboard (no echo). return: AH = BIOS scan code. AL = ASCII character. (if a keystroke is present, it is removed from the keyboard buffer). II.2. INT 21h / AH=2Ch - get system time; return: CH = hour. CL = minute. DH = second. DL = 1/100 seconds. III. Travail demandé : 1. Ecrire un programme en assembleur 8086 qui permet la gestion des 12 lampes. 2. Proposer une solution pour commencer le fonctionnement en appuyant sur la lettre « a » sur l’écran. 3. Proposer une solution pour le basculement automatique de fonctionnement jour/nuit. 5 K. Messaoudi 2017/2018 Master 1 – 2017/2018 I. Objectifs : 1. Compréhension du mécanisme des interruptions dans le 8086. 2. Utilisation de quelques interruptions pour :  La génération des temporisations.  La lecture d’un caractère à partir du clavier.  La gestion de l’écran. II. Définition des interruptions à utiliser : II.1. L’interruption INT 08h : L’interruption int 08h ( Real Time Clock Interrupt ) est une interruption de type matériel. Le mot situé à l’adresse 0040 : 006C est augmenté de 1 par int 08h toutes les 1/18.2 Sec. Exemple : 14 Sec = 256 x 1/18.2 Sec. II.2. L’interruption MS-DOS INT 21h : (lecture d’une chaine de caractère à partir du clavier) La fonction 0Ah de l’interruption int2h permet d’installer les caractères tapés au clavier dans la zone d’adresse DS : DX. Ce buffer se remplit tant que le caractère RETURN n’est pas tapé et la longueur maximale de la chaîne n’est pas atteinte, sinon la fonction se termine. AH  02 ( N° de la fonction ou du service ) DS :[DX+0]  Nombre de caractère à lire (paramètre d’entrée) ; DS :[DX+1]  Nombre de caractère lus sans le RETURN (paramètre de sortie) ; DS :[DX+2]  Code ASCII du premier caractère lu ; DS :[DX+(n+1)]  Code ASCII du neme caractère lu. II. Travail demandé : 1) Ecrire un sous programme permettant de réaliser une temporisation de 5 seconde ; 2) Ecrire un sous programme permettant d’afficher, à la position du curseur, le message « LE SYSTEME VA ETRE INITIALISE » ; 3) Ecrire un sous programme permettant de saisir une chaine de 3 caractères et de les stocker dans un emplacement mémoire de votre choix ; 4) En utilisant les 3 sous programmes et les interruptions 10H et 21H, écrire un programme qui réalise les tâches suivantes :  Saisie d’une chaîne de caractère à partir du clavier,  Test du contenu de la dite chaîne : - Si la chaine est « OUI » alors afficher « LE SYSTEME VA ETRE INITIALISE » pendant 5 secondes puis rebouter la machine. - Sinon si la chaîne est « NON » alors quitter le programme, - Sinon aller à 1. Remarque :  Tester séparément les différents sous programmes en mode simulation,  Exécuter le programme complet en mode privilégié. uploads/S4/ tp1-4-8086.pdf

  • 27
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Apv 29, 2021
  • Catégorie Law / Droit
  • Langue French
  • Taille du fichier 0.4080MB