Interruption BIOS - ASM - Programmation
Marsh Posté le 25-12-2021 à 14:36:34
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 ?
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.
Marsh Posté le 25-12-2021 à 16:43:49
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 ? |
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
Marsh Posté le 27-12-2021 à 09:23:03
Salut!
En effet c'est bizarre!
Peux tu nous montrer le secteur boot de la clé USB, avec un éditeur hexadécimal par exemple ?
Marsh Posté le 27-12-2021 à 11:36:06
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 ? |
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
Marsh Posté le 27-12-2021 à 11:55:12
Sinon, je pense que tu te compliques un peu la vie avec ton boot sector. Essaie ceci :
Code :
|
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)
Marsh Posté le 25-12-2021 à 14:27:06
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