Bonjour,
si je compile le code suivant en 16bits, tout ce passe bien :
ce code est chargé par un boot à l'adresse 0050:0000
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 [BITS 16] [ORG 0x0] mov al, '@' mov ah, 0x0E int 0x10 mov al, '/' mov ah, 0x0E int 0x10 me: jmp me
si je passe la directive en 32 bits, là ça m'affiche de '/' à l'infini.
Je ne comprend pas
Précision, j'exécute mon code sous Bochs
si je désassemble le code compiler pour la partie 32 bits, j'ai :
il saute à l'Int et il rajoute deux 0xFF près le saut, est-ce un bug de NASM ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 00000000 B040 mov al,0x40 00000002 B40E mov ah,0xe 00000004 CD10 int 0x10 00000006 B02F mov al,0x2f 00000008 B40E mov ah,0xe 0000000A CD10 int 0x10 0000000C E9FBFF jmp word 0xa 0000000F FF db 0xff 00000010 FF db 0xff
si je met un jump short, c'est bon ???
Partager