salut tout le monde !!
g essayer de faire un loader (petit prog qui charge un autre prog) mais c un desartre je comprend pas très bien ce qui ne marche pas surtout que la première fois (après de démarrage) que je lance le prog chez moi il ne plante qu'à la fin alors que la second fois c plus tôt ?????
bon ben voici le code (g tellement essayer de trucs différtents que il est plus très claire! :-/
[BITS 16]
[ORG 0x0100]
jmp start
gud db "Bravo tout c'est bien d,roul,$"
err2 db "Une erreur est survenue lors de la lecture du fichier$"
err3 db "Une erreur est survenue lors de l'apelle de la fermeture$"
err1 db 13 , 10 , "Une erreur est surveue lors de l'apelle de 3D42h" , 13 , 10 ,"$"
bug1 db "Vous avez bugger!!! toute mes condolehance lol?"
fichier db "noyau.com0"
size1 db ""
handle dw 0
save1 dw 0
save2 dw 0
charge times 0110110b db 0
start:
mov dx , fichier
mov ax , 3D42h
int 21h
jnc suiv1
jmp erreur
suiv1:
mov [handle] , ax ; fin de l'ouverture du fichier
mov ax , 4201h ; debut de file size
mov bx , [handle]
mov cx , 0
mov dx , 0
int 21h
jnc pabug
jmp bug
pabug:
mov [save1] , cx
mov [save2] , dx
mov ax , 4202h
mov bx , [handle]
mov cx , 0
mov dx , 0
int 21h
jnc pabug2
jmp bug
pabug2:
push dx
push ax
mov dx , [save2]
mov cx , [save1]
mov ax , 4200h
mov bx , [handle]
int 21h
jnc pabug3
jmp bug
pabug3:
pop ax
pop dx
mov [size1] , ax ; le fichier fait moins de 256 octets!! pa besoin de dx
mov ah , 00h ; 1° point d'arret
int 16h
mov ax , 3F00h ; debut de la lecture du fichier
mov bx , [handle]
mov cx , size1 ; nombres de bytes . lire
mov dx , [charge] ; buffer ou va ^tre transfererle fichier!!
int 21h
jnc suiv2
jmp erreur2
suiv2:
mov ax , 3E00h ; debut de fermeture du fichier
mov bx , [handle]
int 21h
jnc suiv3
jmp erreur3
suiv3:
mov dx , [gud] ; message kom koi sa c bien pass, sauf k'il ne s'affcihe pa
mov ah, 09h
int 21h
mov ah , 00h ; 2° point d'arret
int 16h
mov ax , 0B800h ; message FIN en vert
mov es , ax
mov ah , 010b
mov al , 'F'
mov [es:40] , ax
mov al , 'I'
mov [es:42] , ax
mov al , 'N'
mov [es:44] , ax
mov ah , 00h ; troisième points d'arrets
int 16h
jmp [charge] ; est censé chargé le prog en mémoire
ret
erreur:
mov dx , err1
mov ah , 09h
int 21h
mov ah , 00h
int 16h
ret
erreur2:
mov dx , err2
mov ah , 09h
int 21h
mov ah , 00h
int 16h
ret
erreur3:
mov dx , err3
mov ah , 09h
int 21h
mov ah , 00h
int 16h
ret
bug:
mov dx , bug1
mov ah , 09h
int 21h
mov ah , 00h
int 16h
ret