Etienne Tremblay - PowerPoint PPT Presentation

1 / 7
About This Presentation
Title:

Etienne Tremblay

Description:

Plusieurs directives, et m me parfois un fichier texte, disent l'assembleur et au compilateur o et comment ... Lors du chargement d'un programme, l'ent te du programme du au ... – PowerPoint PPT presentation

Number of Views:53
Avg rating:3.0/5.0
Slides: 8
Provided by: Sab70
Category:

less

Transcript and Presenter's Notes

Title: Etienne Tremblay


1
Etienne Tremblay
  • Ordinateurs, Structure et Applications

GIF-16116
Cours 11, Directives Assembleur
Université Laval, Hiver 2007
2
Directives dassembleur
  • Plusieurs directives, et même parfois un fichier
    texte, disent à lassembleur et au compilateur où
    et comment placer le code, la pile et les données
    en mémoire. Ces directives ne produisent pas de
    code machine, contrairement aux instructions.
  • Habituellement, un fichier liste (dont
    lextension est presque toujours lst) est généré
    par le linker il donne lemplacement précis de
    toutes les labels/variables/instructions en
    mémoire. Pour EMU 8086 léquivalent de ce fichier
    a lextension .com.symbol.
  • Les directives sont des symboles réservés vous
    ne pouvez pas nommer une variable, une procédure,
    une macro, un constante ou un label (jen ai
    peut-être oublié ?) avec le même nom quune
    directive.
  • Les directives permettent de dicter les valeurs
    initiales des registres segments, décrire plus
    aisément la séquence de code (PROC, ENDP),
    modifier le code avant compilation (ex IFDEF ou
    EQU), créer des variables (DB, DW), gérer les
    programmes sur plusieurs fichiers (voire en
    plusieurs langages), etc.

3
Directives pour placer les segments
  • Lors du chargement dun programme, lentête du
    programme du au système dexploitation (lire DOS)
    quelle valeur doit avoir CSIP. Les autres
    segments doivent êtres initialisés par le
    programme (exemple MOV AX,MonSegmentDonnées
    suivi de MOV DS,AX).
  • Les directives segment ends permet de nommer des
    segments sans faire le lien avec les registres
    segments.
  • segname segment paramètres
  • Code ou variables dans le segment
  • Ends
  • La directive assume aide lassembleur. Elle fait
    le lien entre les segments déclarés et les
    registres CS,DS, ES et SS.
  • assume DSsegname
  • Exemple
  • MonSegmentData segment
  • MaVar DB 7
  • ends
  • mov DS,AX AX contient MonSegmentData
  • assume DSMonSegmentData Directive pour dire à
    lassembleur où est MaVar
  • MOV AX, MaVar
  • Heureusement, MASM et EMU8086 ont une disposition
    de segments par défaut. Il faut un programme de
    plus de 64Ko de code ou de donnée pour être forcé
    de manipuler les segments

4
Directives pour changer le code avant compilation
  • Les directives if, else, endif et autres du même
    genre (ife, ifdef, etc.). Permettent dassembler
    du code si et seulement si certaines conditions
    sont rencontrées. Par exemple
  • Processor 80386 Set to 8086 for 8086-only code
  • . . .
  • if Processor eq 80386
  • shl ax, 4
  • else Must be 8086 processor.
  • mov cl, 4
  • shl ax, cl
  • Endif
  • NOTE Il est utile de rendre une partie de code
    optionnelle si lenvironnement logiciel ou
    matériel du code peut changer. Par exemple, si on
    veut utiliser le même code sur deux
    microprocesseurs différents ou avec deux systèmes
    dexploitation différents.
  • Les directives MACRO, EQU permettent de changer
    le code avant quil ne soit assemblé. MACRO
    ajoute remplace un nom de macro par une séquence
    dinstruction et EQU remplace un nom de constante
    par une valeur pré déterminée (voir précédemment).

5
Directives pour les programmes larges (sur
plusieurs fichiers)
  • La directive include Filename (Filaneme doit
    contenir une extension) inclut tout le contenu du
    fichier Filename dans le fichier où la directive
    et placée, à lemplacement du include.
  • La directive public rend une variable ou une
    procédure disponible à un autre fichier (la
    directive extern doit être utilisée). Exemple
    public MaVar, Mafonc
  • La directive extern dit au linker quune variable
    ou une fonction est déclarée publique à
    lintérieur dun autre fichier

6
Directives pour les programmes en Assembleur et
en dautres langages
  • De manière générale, les procédures et les
    variables provenant dautres langages sont
    déclarées/fournies à laide des directives public
    et extern.
  • Il faut respecter une syntaxe très précise pour
    les paramètres des fonctions ou les types de
    variables. Cette syntaxe dépend de lassembleur
    et du langage utilisé en conjonction avec
    lassembleur

7
Références et exercices
  • Références
  • http//www.briceg.com/linux/aoa/toc.html
  • Exercices
  • Quest-ce quune directive dassembleur?
  • Quelle est la différence entre une macro et une
    procédure? Quelle est la différence entre une
    constante et une variable?
  • Dans quelles circonstances est-il recommandé
    dutiliser des if, ifdef ou else? Autrement dit,
    quelle est lutilité de ces directives? Donnez
    des exemples.
Write a Comment
User Comments (0)
About PowerShow.com