Variables à comportement étrange
Bonjour,
Je bute depuis des jours...J'ai un problème bizarre dans l'exécution du Kernel de mon OS ! Des variables (mais pas toutes) semblent ne pas mémoriser la valeur que je leur donne !
Exemple : j'affecte une valeur à [X] et [Y]. [Y] est bien pris en compte, mais pas [X]. Si j'intervertis les deux lignes où sont déclarées ces variables, c'est [X] qui est bien pris en compte, mais pas [Y] !
Voici à quoi ressemble mon kernel, chargé par un boot en 0x0100:0000 mode réel (nasm) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| [bits 16]
[org 0]
jmp start
%include 'Fonctions.asm'
start:
;Instructions
mov ax, 0x100
mov es, ax
mov ds, ax
mov ax, 0x8000
mov ss, ax
mov ax, 0xF000
mov sp, ax
mov ax, 1
mov [X], ax
mov ax, 2
mov [Y], ax
call FctUtilisantXetY
;Autres instructions
;...
;Boucle de fin
Fin:
jmp Fin
;Variables
X dw 0
Y dw 0 |
En fait, mon Kernel contient 150 octets de variables (env 30 variables dont des chaines), et fait dans les 1000 octets. Y a t'il des chevauchements possibles des instructions sur les données ? Enfin, qu'est ce qui cloche ? Si il faut je placerai demain tous les fichiers de prog !
D'avance merci !