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

Programmation d'OS Assembleur Discussion :

Interruption 10 du BIOS


Sujet :

Programmation d'OS Assembleur

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    février 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2011
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Interruption 10 du BIOS
    Bonjour,
    Je dispose d'un ASUS sous Windows 10 dont j ai configuré le bios pour booter sur une clef USB
    J’écris un programme assembleur et je copie le fichier objet avec Rufus sur une clef USB
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    BITS 16	
    ORG 0x07C0
    section .text
    		mov al,0x41
    		mov ah,0x0e
    		mov bx,0x07
    		int 0x10
    boucle:
    		jmp boucle
    times 510- ($-$$) db 0;
    dw        0xaa55
    Je boote et j obtiens un A en haut à gauche de mon écran
    Je fais le même programme en affichant un A puis un B :
    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
    BITS 16	
    ORG 0x07C0
    section .text
    		mov al,0x41
    		mov ah,0x0e
    		mov bx,0x07
    		int 0x10
                    mov al,0x42
    		mov ah,0x0e
    		mov bx,0x07
    		int 0x10
     
    boucle:
    		jmp boucle
    times 510- ($-$$) db 0;
    dw        0xaa55
    Et j ai un AB en haut à gauche de mon écran
    Donc je devrais avoir ABC avec ce programme :
    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
    BITS 16	
    ORG 0x07C0
    section .text
    		mov al,0x41
    		mov ah,0x0e
    		mov bx,0x07
    		int 0x10
                    mov al,0x42
    		mov ah,0x0e
    		mov bx,0x07
    		int 0x10
                    mov al,0x43
    		mov ah,0x0e
    		mov bx,0x07
    		int 0x10
     
    boucle:
    		jmp boucle
    times 510- ($-$$) db 0;
    dw        0xaa55
    Eh bien au lieu d avoir ABC, tout mon écran se remplit de ABC

    Je ne comprends pas
    Si quelqu'un peut m'expliquer
    Merci
    Marcel Truffier

  2. #2
    Membre chevronné Avatar de vttman
    Homme Profil pro
    Développeur Mainframe
    Inscrit en
    décembre 2002
    Messages
    1 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Mainframe
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2002
    Messages : 1 062
    Points : 2 118
    Points
    2 118
    Par défaut
    Bonjour,
    De ce que je lis sur le net, il manquerait déjà de fixer le nombre de caractères ... donc registre cx à renseigner ?
    Chevronné, chevronné ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  3. #3
    Responsable Systèmes


    Homme Profil pro
    Technicien maintenance
    Inscrit en
    août 2011
    Messages
    14 984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2011
    Messages : 14 984
    Points : 34 799
    Points
    34 799
    Par défaut
    Non, la fonction ah=0xe n'attend que le caractère à imprimer dans al. L’affichage se fait sur la position courante qui est incrémentée.
    Le nombre de caractère dans cx, c'est pour la fonction ah=0x13 qui affiche une chaine.

    Je ne vois pas le prob. mais je n'ai pas le temps de monter un lab pour tester. Peut-être retirer l'affectation bx qui peut entrainer un effet de bord (simple supposition). C'est comme si le code se réexecute au lieu de boucler sur l'adresse courante.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

Discussions similaires

  1. [Linux] Mode graphique et interruption BIOS
    Par kain_tn dans le forum x86 32-bits / 64-bits
    Réponses: 7
    Dernier message: 17/04/2008, 12h59
  2. Interruptions BIOS sous LINUX ?
    Par dermouche2002 dans le forum Linux
    Réponses: 1
    Dernier message: 07/01/2008, 15h45
  3. Appel d'interruptions graphique avec la librairie bios.h
    Par Pragmateek dans le forum Bibliothèques
    Réponses: 13
    Dernier message: 30/05/2006, 00h32
  4. [FASM] Interruptions BIOS ne marchent pas sous XP
    Par LaPatoshe dans le forum Assembleur
    Réponses: 2
    Dernier message: 01/12/2004, 19h44
  5. Appel d'interruption DOS ou BIOS sous Windows (mode protégé)
    Par SteelBox dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 30/04/2004, 11h30

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