Système d’exploitation : Assembleur

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

Le Concept du programme enregistré
Architecture de machines Le microprocesseur
Les procédures et interruptions en Assembleur (Tasm)
ARCHITECTURE INTERNE d’un MICROPROCESSEUR
DECLARATION DE VARIABLES
Jacques Lonchamp IUT Nancy Charlemagne – DUT Informatique 1A
merci Laurent JEANPIERRE
Assembleur
Le jeu d ’instructions Introduction Un jeu d ’instruction classique
Les structures de données
Chap. 1 Structures séquentielles : listes linéaires
Architecture de machines Le microprocesseur
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Système d’exploitation : Assembleur
Système d’exploitation : Assembleur
Système d’exploitation : Assembleur
Chapitre 8 : L’architecture de base des ordinateurs
Les bases de l’Algorithmique
Points importants de la semaine Les types arithmétiques. Les opérateurs.
Assembleur.
Points importants de la semaine Les boucles. Les types arithmétiques. Les opérateurs.
Les piles Djamal Rebaïne.
La récursivité Une procédure est dite récursive si, et seulement si, elle fait appel à elle-même, soit directement soit indirectement Djamal Rebaïne Djamal.
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Système d’exploitation : Assembleur
Python La structure itérative
LE MICROPROCESSEUR 8086/8088 Architecture externe du 8086
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
Système d’exploitation : Assembleur
Les pointeurs Enormément utilisé en C/C++ ! Pourquoi? A quoi ça sert?
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Les fichiers 1Djamal Rebaine. Inclusion de fichiers Il est possible daccéder à des procédures, des macros ou des définitions EQU qui se trouvent dans.
Assembleur.
Les Opérateurs Ils régissent toutes les opérations ou transformations sur les valeurs des variables. Opérateur d'affectation Opérateurs arithmétiques Opérateurs.
Types de données fondamentaux
Système d’exploitation : Assembleur
Stocker plusieurs valeurs de même type dans une variable
Processeur modèle 8086 David Saint-Mellion.
Traitement des tableaux et chaînes de caractères
Algorithmique Les structures Rappel L'enchaînement séquentiel
Architecture Des Ordinateurs Microprocesseur Et Mémoire
8PRO100 Éléments de programmation Comment répéter plusieurs fois une séquence d’instructions.
Architecture interne du microprocesseur 8086.
Cours Architecture des Systèmes Informatiques
3-Présentation d’un µP simple
 Syntaxe du langage PHP
Architectures des ordinateurs
Les Machines RAM.
LE TRAITEMENT NUMERIQUE
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. tél Fax Cours Architecture des.
1. Ook Christophe Delagarde, septembre 1999 I.U.T., Université de la Méditerrainée 2.
Système d’exploitation : Assembleur Semaine 01 Introduction.
Introduction au langage C : Structures de contrôle 1 ère année Génie Informatique Dr Daouda Traoré Université de Ségou
1. Spoon Christophe Delagarde, septembre 1998 I.U.T., Université de la Méditerrainée 2.
UE MAREP Cours 5 : Structures de contrôle représentées en assembleur
Patricia Renault UPMC 2005/2006
Module algorithmique et programmation
8PRO107 Éléments de programmation Les adresses et les pointeurs.
8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.
PRO-1027 Programmation Scientifique en C
Les instructions de contrôle
Chapitre 3 L’accès aux données.
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
L E C ORPS D ’ UN A LGORITHME / P ROGRAMME – L A PARTIE I NSTRUCTION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie.
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
PhP 2. Tableaux et structures de contrôle. Les tableaux Définition –Rassemblement d’un ensemble de valeurs portant le même nom de variable –Types de tableaux.
ALGORITHME ET PROGRAMMATION RÉVISION Informatique et Sciences du Numérique.
Le langage Ladder Le langage Ladder
Département Informatique Gestion du flux d’exécution Laurent JEANPIERRE D’après le cours de Pascal FOUGERAY IUT de CAEN – Campus 3.
Transcription de la présentation:

Système d’exploitation : Assembleur Semaine 09 Commandes de transfert Loops & Jumps

Commande de transfert : LOOP LOOP permet de répéter un traitement un nombre de fois déterminé par la valeur contenue dans le registre compteur CX (boucle) Utilisation : LOOP label Les indicateurs ne sont pas modifiés par LOOP Fonctionnement : LOOP décrémente CX de 1 puis teste le contenu de CX Si CX est différent de 0, branchement au label (étiquette approchée - voir remarque ci-après) Sinon, le programme continue de manière séquentielle Remarque : LOOP occupe 2 octets en mémoire. Premier octet : code opération (E2) Deuxième octet : un déplacement relatif compris entre -128 et 127

LOOP - Exemple Écrire une boucle qui incrémente 100 fois la valeur de AX .model small .code mov ax,0 mov cx,100 boucle: inc ax loop boucle mov ah,4ch int 21h end

LOOP - Exemple Copie des éléments d’un vecteur TAB vers un vecteur TAB2 .model small .data tab db 5,4,3,2,1 tab2 db 5 dup(?) .code mov ax,@data mov ds,ax mov cx,5 mov si,0 vect: mov al,tab[si] mov tab2[si],al inc si loop vect mov ah,4ch int 21h end

LOOP - Exemple Créer un tableau contenant les entiers de 1 à 300. Calculer la somme des éléments du tableau. .model small .data tab dw 300 dup (?) result dw ? .code debut: mov ax,@data mov ds,ax mov cx,300 mov si,0 mov bx,1 ; chargement du vecteur charge: mov tab[si],bx inc bx add si,2 loop charge . . . . . . ;calcul de la somme des éléments mov ax,0 mov si,0 mov cx,300 somme: add ax,tab[si] add si,2 loop somme mov result,ax mov ah,4ch int 21h end debut

Commandes de transfert : Instructions LOOP conditionnelles LOOPE (ou LOOPZ) idem LOOP, mais il faut une double condition pour saut au label spécifié CX != 0 et ZF=1 LOOPNE (ou LOOPNZ) CX != 0 et ZF=0

LOOP conditionnel - Exemple Recherche du caractère ‘c’ dans une chaîne de caractères On va comparer le caractère en cours avec ‘c’. Pour savoir si la lettre ‘c’ a été trouvée ou pas, il faut tester la valeur de ZF. Si ZF=0, le caractère n’a pas été trouvé. Si ZF=1, le caractère a été trouvé.

Recherche du caractère ‘c’ dans une chaîne de caractères .model small .data chaine db “recherche du caractère c” .code debut : mov ax,@data mov ds,ax mov cx,24 ; cx reçoit la longueur de la chaîne de caractères mov si,-1 boucle: inc si mov al,chaine[si] sub al,’c’ ; ou cmp al,’c’ loopnz boucle ; boucle si pas trouvé et si pas atteint ; la fin de la chaîne de caractères mov ah,4Ch int 21h end debut

Commandes de transfert : Jcond (jump conditionnel) JUMP transfère l’exécution du programme à l’adresse indiquée si la condition exprimée par le code opération est vérifiée. Remarque : Comme pour LOOP, le déplacement doit être court (-128 à +127). Utilisation : Jcond label on aura E pour equal Z pour zero G pour greater S pour sign flag = 1 L pour less than O pour overflow flag = 1 A pour above C pour carry flag = 1 B pour below P pour parity flag =1 N pour not

Mnémoniques à utiliser après une comparaison CMP A,B Condition Nb signés Nb non signés Jump si A = B JE ZF = 1 A < B JL SF ≠ OF JB CF = 1 A > B JG ZF = 0 et SF = OF JA CF = 0 et ZF = 0 A ≠ B JNE ZF = 0 A ≤ B JNG ZF = 1 ou SF ≠ OF JNA CF = 1 ou ZF = 1 A ≥ B JNL SF = OF JNB CF = 0

Mnémoniques à utiliser après une autre instruction arithmétique que CMP (exemple : ADD A,B) Condition Nb signés Nb non signés Jump si = 0 JZ ZF = 1 < 0 JS SF = 1 Pas de sens !! > 0 Utiliser JNZ et JNS JNZ ZF = 0 ≠ 0 ≥ 0 JNS SF = 0 Toujours ≥ 0 Dépassement de capacité JO OF = 1 JC CF = 1 Pas de dépassement de capacité JNO OF = 0 JNC CF = 0

Instruction de branchement inconditionnel : JMP Instruction de branchement inconditionnel à l’adresse spécifiée Contrairement à Jcond, JMP peut brancher vers n’importe quel emplacement mémoire 2 grandes catégories de branchements : intrasegment (seul IP est modifié) intersegments (CS et IP sont modifiés) Pour ces 2 catégories, il existe JMP direct ou JMP indirect JMP intrasegment direct cas le plus simple et le plus courant l’opérande est un symbole near near signifie à l’intérieur du segment near est lié au symboles suivi de « : » Si symbole est un short label (-128 à +127), JMP est codé sur 2 octets Sinon, JMP codé sur 3 octets (1 pour code opération et 2 pour le déplacement) JMP intrasegment indirect L’opérande n’est pas un symbole near, mais un registre ou une référence à une donnée en mémoire. JMP indirect = l’opérande contient l’adresse de branchement exemple : JMP table[SI]