Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2012
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2012
    Messages : 75
    Points : 53
    Points
    53

    Par défaut Les interruptions

    Bonjour tout le monde !

    Je sollicite votre aide afin d'y voir un peu plus clair dans les interruptions.

    Si j'ai bien compris: il y a 256 interruptions pointés par la table des vecteurs d'interruptions se trouvant en début de RAM. Et chaque interruption contient un nombre de fonction.

    Mes questions sont les suivantes:

    Lorsque l'on écrit:
    mov ah, 09h
    mov dx, offset message
    int 21h


    Le 09h correspond à la 9ème fonction de l'interruption 21h , soit la 9ème fonction de l'interruption situé en 0000:0021?
    Combien y a-t-il de fonctions par interruption et où sont-elles stockées ? Aussi je croyais que le début de la RAM était destiné au PSP ?

    Un grand merci aux âmes charitables qui accepteront de m'aider !

  2. #2
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro Eric Garidacci
    Inscrit en
    septembre 2005
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Nom : Homme Eric Garidacci
    Âge : 44

    Informations forums :
    Inscription : septembre 2005
    Messages : 1 113
    Points : 1 947
    Points
    1 947

    Par défaut

    Salut,

    La table des vecteurs d'interruption contient uniquement les adresses (codées sur 32 bits soit 4 octets) de chaque interruption.

    Le mot de poids faible étant l'offset et le mot de poids fort étant le segment.

    Pour obtenir l'adresse du code de l'interruption 21H, on passe par son vecteur se situant à l'adresse 0000:0084 (car 21H * 4 = 84H).

    Le code placé à cette adresse effectuera un traitement en fonction des paramètres d'entrées. En l'occurence :
    AH = 09H (fonction permettant la sortie d'une chaine de caractère située à l'adresse pointée par le couple de registres DS : DX)


    Le PSP (Program Segment Prefix) qui a une longueur de 256 octets se trouve au début de chaque programme EXE ou COM chargé en mémoire.

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    septembre 2007
    Messages
    5 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2007
    Messages : 5 470
    Points : 13 985
    Points
    13 985

    Par défaut

    Bonjour,

    Pour compléter ce que dit Eric2A, sache qu'une interruption n'est pas en soi, à la base, un appel système. Néanmoins, les interruptions logicielles ont souvent été utilisées à cette fin sur différentes architectures car c'est une technique d'appel qui apporte beaucoup d'avantages. Cependant, elles sont en nombre limité. Sur Intel x86, il y en a 256 différentes mais bon nombre d'entre elles sont réservées à l'avance, parfois par le micro-processeur lui-même. Sur d'autres micro-processeurs plus modestes, il n'y a souvent qu'une seule interruption logicielle disponible (et jusqu'à 3 sur le 6809, par exemple). Il convient donc de les économiser.

    D.O.S. a donc réservé l'interruption 21h pour lui permettre d'être appelé par un programme, tout simplement. Et ce faisant, le programme indique aux routines du D.O.S. quel genre de service il souhaite recevoir en passant son numéro en paramètre dans un registre.

    Le fait de passer un numéro de fonction n'est qu'une caractéristique propre à D.O.S. (et à certains services immitant le même principe) et est donc en soi complètement indépendant des interruptions logicielles elles-mêmes.

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2012
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2012
    Messages : 75
    Points : 53
    Points
    53

    Par défaut

    Un grand merci pour votre aide oh combien précieuse !

  5. #5
    Membre chevronné

    Homme Profil pro Abdallah Issam
    Chercheur d'emploi
    Inscrit en
    novembre 2012
    Messages
    79
    Détails du profil
    Informations personnelles :
    Nom : Homme Abdallah Issam
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2012
    Messages : 79
    Points : 675
    Points
    675

    Par défaut

    Juste une petite remarque : Dès le 80386 (IA-32), on a un tableau d'interruption qu'au démarrage de l'ordinateur (real mode) !
    Mais en mode normal du 80386 (protected mode) les adresses des routines interruptions sont situés dans l'IDT (Interrupt Descriptor Table). Le registre IDTR pointe vers la première entrée dans ce tableau. Ce tableau peut être alors situé
    n'importe où dans la mémoire !

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •