Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2742 connectés 

  FORUM HardWare.fr
  Programmation
  ASM

  Interruption BIOS

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Interruption BIOS

n°2404699
marcelt
La vérité, rien que la vérité
Posté le 25-12-2021 à 14:27:06  profilanswer
 

Bonjour,
Ce programme compilé avec nasm et chargé sur usb avec rufus permet en rebootant d'afficher un A en haut et a gauche de l'écran
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
 
Si je repete cela plusieurs fois, c'est a dire
                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
Je devrais afficher ABC, et en fait il me remplit l'écran avec des ABCABCABC, etc ...
Je ne comprends pas ce qui se passe
Si quelqu'un peut m'expliquer car je croyais l'informatique cartésienne
Salutations a tous
Marcel Truffier

mood
Publicité
Posté le 25-12-2021 à 14:27:06  profilanswer
 

n°2404701
TotalRecal​l
Posté le 25-12-2021 à 14:36:34  profilanswer
 

Euh mais si tu boucles sur un truc sensé afficher ABC c'est un peu logique que ça fasse une boucle qui écrit ABCABCABCABCABC non ? :o
Je vois bien le 0x41 à 43, flemme de décoder le reste en détails mais à mon avis le JMP boucle / times 510- ($-$$) db 0; a un rapport avec ton truc qui se répète.

Message cité 2 fois
Message édité par TotalRecall le 25-12-2021 à 14:37:16

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2404705
marcelt
La vérité, rien que la vérité
Posté le 25-12-2021 à 16:43:49  profilanswer
 

TotalRecall a écrit :

Euh mais si tu boucles sur un truc sensé afficher ABC c'est un peu logique que ça fasse une boucle qui écrit ABCABCABCABCABC non ? :o
Je vois bien le 0x41 à 43, flemme de décoder le reste en détails mais à mon avis le JMP boucle / times 510- ($-$$) db 0; a un rapport avec ton truc qui se répète.


Bonjour,
Ben non, je boucle après avoir affiché ABC une seule fois. La boucle, c'est pour ne pas sortir du programme mais elle n affiche plus rien
    BITS 16  
    ORG 0x07C0
section .text
    mov al,0x41
    mov ah,0x0e
    mov bx,0x07
    int 0x10
    mov al,0x41
    mov ah,0x0e
    mov bx,0x07
    int 0x10
    mov al,0x41
    mov ah,0x0e
    mov bx,0x07
    int 0x10
boucle:
    jmp boucle
times 510- ($-$$) db 0;
dw        0xaa55
La boucle a lieu après avoir affiché une seule fois ABC, de plus s'il y a A tout seul, ca marche
s'il y a AB tout seul ca marche, s'il y a ABC ca ne marche plus
Incomprehensible
Merci de m aider a comprendre
Marcel Truffier

n°2404732
Profil sup​primé
Posté le 26-12-2021 à 01:36:32  answer
 

Sorry !

n°2404755
citation
Posté le 27-12-2021 à 09:23:03  profilanswer
 

Salut!
En effet c'est bizarre!
Peux tu nous montrer le secteur boot de la clé USB, avec un éditeur hexadécimal par exemple ?

n°2404771
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 27-12-2021 à 11:36:06  profilanswer
 

TotalRecall a écrit :

Euh mais si tu boucles sur un truc sensé afficher ABC c'est un peu logique que ça fasse une boucle qui écrit ABCABCABCABCABC non ? :o
Je vois bien le 0x41 à 43, flemme de décoder le reste en détails mais à mon avis le JMP boucle / times 510- ($-$$) db 0; a un rapport avec ton truc qui se répète.


Non, c'est juste du padding pour que le bootsector fasse bien 512 octets. Il remplit de "0" les octets après le programme jusqu'au 510ème octet, et les 2 derniers octets (0xaa55) représentent le magic number qui permet au bios de détecter qu'il s'agit d'un boot sector


Message édité par Harkonnen le 27-12-2021 à 11:57:47

---------------
J'ai un string dans l'array (Paris Hilton)
n°2404775
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 27-12-2021 à 11:55:12  profilanswer
 

Sinon, je pense que tu te compliques un peu la vie avec ton boot sector. Essaie ceci :

 
Code :
  1. mov ah, 0x0e
  2.  
  3. mov al, 'A'
  4. mov bx, 7
  5. int 0x10
  6. mov al, 'B'
  7. mov bx, 7
  8. int 0x10
  9. mov al, 'C'
  10. mov bx, 7
  11. int 0x10
  12. jmp $
  13.  
  14. times 510-($-$$) db 0
  15. db 0xaa55
 

la ligne 9 remplace ta boucle (le caractère "$" représente l'adresse courante au début de la ligne, donc c'est un saut infini)


Message édité par Harkonnen le 27-12-2021 à 22:33:20

---------------
J'ai un string dans l'array (Paris Hilton)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  ASM

  Interruption BIOS

 

Sujets relatifs
Provoquer une interruption[Resolu] Interruption mode reel depuis mode protegé avec DPMI
Problème d'interruption externe sur PIC18Interruption Timer 2 sur PIC18
Problème bios FreeDOSdébloquage mode advanced dans BIOS insyde h20 rev 3.5
Execution d'un script juste après le BIOSrecherche programmateur de bios
interruption usb 
Plus de sujets relatifs à : Interruption BIOS


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR