IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

x86 16-bits Assembleur Discussion :

[8086] Explications sur les interruptions DOS


Sujet :

x86 16-bits Assembleur

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [8086] Explications sur les interruptions DOS
    Que signifient :

    Code asm : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        mov ah,01h
        int 21h

    Code asm : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        mov ah,09h
        int 21h

    Pourquoi AH et pas AX ou BX ? et 09h, c'est un nombre en hex or quoi ?
    Merci pour votre temps

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 124
    Points : 136
    Points
    136
    Par défaut
    Bonjour,

    ah est le code fonction qui sera utilisé par l'interruption 21 - Système MS-DOS.

    ah = 01 => Lecture au clavier
    ah = 09 => Affichage d'une chaîne de caractère

    Il en existe une pelleté voir Ici par exemple.

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 372
    Points : 23 628
    Points
    23 628
    Par défaut
    Pour compléter ce que dit keskidi, le système D.O.S. utilisait les interruptions logicielles du 8086 (qui en propose 256 au total) parce que c'était un moyen rapide et très concis d'appeler un point d'entrée fixe, qui de plus ne varie pas au cours de l'évolution du système d'exploitation et qui, par la suite, permettait de contourner très facilement les limitations mises en place par le mode protégé.

    On utilise AH plutôt que AX car AL est souvent utilisé pour passer un paramètre à la fonction appelée. Pourquoi AX plutôt que BX ? Pour aucune raison particulière, si ce n'est que l'accumulateur AX est le plus indiqué à l'origine pour passer et recevoir des valeurs.

    Enfin, dans « 09h », le h final indique bel et bien une notation hexadécimale.

  4. #4
    Candidat au Club
    Inscrit en
    Juin 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut MERRCII
    MERCIII
    ET PARDONNE C'est la 1er fois (je ne connue pas la methode de ecriteur)
    est ce que tu peut donne des examen corrige de assembleur8086 (comme c++ par exemple demende de ecrire un programme qui fait la somme le moynne de nots des etudiant )

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 59
    Points : 88
    Points
    88
    Par défaut
    Avec les appels de l'int 21h du DOS, AL, BX, CX, DX voire ES & DS peuvent servir de paramètres selon la fonction indiquée par le registre 8 bits AH. Toutefois, AL peut aussi indiquer un numéro de sous-fonction.
    De plus, il faut savoir que les fonctions allant 0 à 24h n'utilisent jamais CX en entrée par compatiblité avec CP/M. En effet, lorsque DOS a été créé pour le premier PC, il était prévu que la plupart des programmes CP/M puissent être traduits mécaniquement pour lui. Or, ces programmes utilisaient un CALL 5 pour appeler le système d'exploitation avec le numéro de fonction dans le registre C du 8080. DOS étant un système 16 bits avec adressage sur 20 bits, ce doit être un appel proche, ce qui n'est pas un soucis vu que les premiers programmes DOS étaient le plus souvent du type COM, et le registre utilisé devient CL.
    Cf. http://members.iinet.net.au/~daveb/cpm/bdos.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
            NAME    CPM
            TITLE   CPM.COM - Exemple d'appel DOS du style CP/M
     
     
    ; Utilise une fct DOS inférieure à 25h via un appel proche de l'offset 5.
    ;       MASM CPM;
    ;       LINK CPM;
    ;       EXE2BIN CPM
     
     
    CODE    SEGMENT
     
            ASSUME  CS:CODE
    PSP:                                    ; Offset nul
            ORG     100h
     
    Depart:
            mov     cl,9                    ; Afficher un message
            mov     dx,offset Message
            call    PSP+5
            ret                             ; Retour proche à l'offset 0
                                            ; car le 1er mot de la pile est nul
    ; Données -----------------------------------------------------------------
     
    Message db      'CP/M est le système d',39,'exploitation 8 bits '
            db      'de Gary Kildall.',13,10,'$'
     
    CODE    ENDS
     
            END     Depart

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [NTFS]explication sur les type de droits
    Par arnolem dans le forum Sécurité
    Réponses: 6
    Dernier message: 19/04/2006, 12h52
  2. Explication sur les licences Windows
    Par winow dans le forum Autres Logiciels
    Réponses: 19
    Dernier message: 07/04/2006, 16h34
  3. Besoin d'explications sur les charset
    Par EGPMS dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 03/02/2006, 15h38
  4. [RegEx] preg_replace : explications sur les caractères spéciaux
    Par Anduriel dans le forum Langage
    Réponses: 6
    Dernier message: 05/10/2005, 21h35
  5. recherches des cours ou des explications sur les algorithmes
    Par Marcus2211 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 19/05/2002, 22h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo