Etienne Tremblay - PowerPoint PPT Presentation

1 / 10
About This Presentation
Title:

Etienne Tremblay

Description:

L'instruction JMP Address. Permet de mettre IP la valeur de Address. JMP permet un saut ... Comme les adresses des instructions sont difficiles retenir et qu' ... – PowerPoint PPT presentation

Number of Views:64
Avg rating:3.0/5.0
Slides: 11
Provided by: Sab70
Category:

less

Transcript and Presenter's Notes

Title: Etienne Tremblay


1
Etienne Tremblay
  • Ordinateurs, Structure et Applications

GIF-16116
Cours 9, Branchements et Pile
Université Laval, Hiver 2007
2
Énoncés conditionnels et sauts, principe
  • Linstruction JMP Address. Permet de mettre IP à
    la valeur de Address. JMP permet un saut à
    lintérieur du code segment.
  • Comme les adresses des instructions sont
    difficiles à retenir et quelles peuvent changer
    lorsque le programme change, des labels ont été
    inventés. Un label est une étiquette remplaçant
    ladresse dune instruction.
  • Linstruction JMP exécute un saut inconditionnel.
    Les instructions JZ, JC, JS changeront la valeur
    de IP si les drapeaux ont la valeur appropriés.
    Si les drapeaux nont pas la bonne valeur,
    linstruction est ignorée et la prochaine
    instruction est exécutée. Par exemple, JZ
    MonLabel fera exécuté linstruction indiquée par
    MonLabel si le drapeau Zéro est à 1.
  • Linstruction CMP A,B a le même effet quune
    soustraction sur les drapeaux, mais elle ne
    change pas la valeur de A. Cette instruction est
    utile pour créer des énoncés conditionnels du
    genre if(A ! B). Ce dernier exemple ce
    traduirait par CMP A,B suivit de JNZ
    CodeAExecuterSiVrai.
  • La plupart des instructions de saut nutilisent
    quun drapeau. Cependant, certaines comparaisons
    (lt,gt) requièrent des tests sur 2 drapeaux (Zéro
    et (Overflow OU Carry)). Dans ces cas, il faut
    choisir linstruction utilisée en fonction des
    signes des éléments comparés. Voir JG, JLE, JA

3
Instructions de saut (1 flag seulement)
4
Exemple de boucle
  • Le code qui suit est un exemple de calcul de
    factoriel (Le nombre doit être entre 0 et 8!
    40320 afin déviter un Overflow. Le nombre est
    dans CX au début et la résultat est dans AX à la
    fin. Les registres BX et DX sont modifiés par le
    programme.

5
La pile et les sous-routines
  • Voir les supports de monsieur Philippe Leray
    (Pile_SousRoutines_Ints.pdf, source
    http//asi.insa-rouen.fr/enseignement/siteUV/se/),
    sections pile et procédures.

6
Macros
  • Une macro est une série dinstruction
    prédéfinies.
  • Lors du pré assemblage, le code contenu dans la
    macro est copié à tous les endroits où
    apparaissent la macro alors que le code dune
    procédure nest habituellement quà un seul
    endroit de la mémoire.
  • Il est possible de voir une macro comme une
    constante, mais pour du code lors du pré
    assemblage, les constantes sont remplacées par
    leur valeurs et les macros sont remplacées par
    des instructions.
  • Les macros servent à éviter de réécrire plusieurs
    fois du code qui revient souvent dans le
    programme mais pour lequel on ne veut pas faire
    de procédure afin de gagner du temps de calcul
    (éviter lappel de la procédure , le passage de
    paramètres,, etc.). Comme le code contenu dans
    une macro est copié pour toutes les instances de
    la macro, un programme avec des macros sera
    habituellement plus gros quun programme avec des
    procédures.
  • Linstruction pour définir une macro est
  • nom MACRO paramètres,...
  • ltinstructionsgt
  • ENDM

7
Exemple de macro
  • Le programme qui suit met dabord 1, 2 et 3 dans
    AX,BX et CX respectivement. Ensuite, il met 4, 5
    et DX dans AX,BX et CX respectivement.
  • MyMacro MACRO p1, p2, p3
  • MOV AX, p1
  • MOV BX, p2
  • MOV CX, p3
  • ENDM
  • ORG 100h
  • MyMacro 1, 2, 3
  • MyMacro 4, 5, DX
  • RET

8
Instructions dI/Os (IN, OUT)
  • Le 8086 peut accéder à 64Ko dadresse dI/O (1
    registre 16bits!!!) .
  • Le processus pour accéder aux I/Os est le même à
    lintérieur du PC que pour accéder à la mémoire
    les mêmes lignes dadresse sont utilisées (du
    moins 16 sur 20), les mêmes lignes de données
    sont utilisées et les lignes de lecture/écriture
    servent dans les deux cas. Une ligne
    additionnelle M/IO sert à déterminer si la
    mémoire ou des I/O sont adressés.
  • Pour accéder à un périphérique, les instructions
    IN et OUT sont utilisées. IN et OUT ont deux
    opérandes (adresse de I/O port- et
    destination/source. Adresse peut être une valeur
    immédiate de 8bits ou le registre DX (16bits).
  • Exemples
  • IN dst, adresse
  • IN AL, 10 Met dans AL les 8 bits donnés par
    lI/O à ladresse 10d.
  • IN AX, DX Met dans AX les 16 bits donnés par
    lI/O à ladresse pointée par DX
  • OUT adresse, src
  • OUT 4, AX Met les 16 bits de AX dans lI/O à
    ladresse 4.
  • OUT DX, AL Met les 8 bits de AL dans lI/O à
    ladresse pointée par DX.

9
Instructions de linker (ORG, MAKE_XYZ , )
  • MAKE_COM , MAKE_BIN , MAKE_BOOT et
    MAKE_EXE sont des directives propres à EMU8086
    qui spécifient le type de programme à produire
    (cela détermine les valeurs de CS, DS, ES et SS
    par exemple).
  • La directive ORG spécifie la première adresse de
    code utilisé.
  • Plusieurs directives dassembleur existent afin
    de géré les emplacements des données et du code.
    Ces instructions permettent également des
    constantes, des macros, mettre du code en option
    (genre define, ifdef, endif).

10
Références et exercices
  • Références
  • Irv Englander chapitre 7 (7.8 plus
    particulièrement), chapitre 12 (jusquà la page
    351).
  • http//www.commentcamarche.net/asm/assembleur.php3
  • http//www.ifrance.com/zarbi-os/DOCS/chap2.htm
    (très bon résumé)
  • Didacticiel de EMU8086
  • datasheet du 8086 sur le site web du cours
  • Pile_SousRoutines_Ints.pdf de monsieur Philippe
    Leray
  • Exercices
  • Lire le didacticiel de EMU8086
Write a Comment
User Comments (0)
About PowerShow.com