Bonjour,

si je compile le code suivant en 16bits, tout ce passe bien :
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
ce code est chargé par un boot à l'adresse 0050:0000

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 :
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
il saute à l'Int et il rajoute deux 0xFF près le saut, est-ce un bug de NASM ?

si je met un jump short, c'est bon ???