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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 !