Ah j'ai vu ce sujet un peu trop tard peut-être.
Je passe le topic en résolu ou pas ?
Attends, c'est un troll là ? C'est qui l'OP ici ? Conclusion ?
Sinon, vu ton screenshot, tu as un windows 8.x qui lance une virtualbox qui lance un XP, pour finalement lancer un exécutable windows. J'ai envie de dire : quel est l'intérêt d'avoir chaîné les windows ?
Si on reprends ce 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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 | [BITS 16] ; indique a nasm que l'on travaille en 16 bits
[ORG 0x0]
; initialisation des segments en 0x07C00
mov ax, 0x07C0
mov ds, ax
mov es, ax
mov ax, 0x8000
mov ss, ax
mov sp, 0xf000 ; stack de 0x8F000 -> 0x80000
; affiche un msg
mov si, msgDebut
call afficher
end:
jmp end
;--- Variables ---
msgDebut db "Hello world !", 13, 10, 0
;-----------------
;---------------------------------------------------------
; Synopsis: Affiche une chaine de caracteres se terminant par 0x0
; Entree: DS:SI -> pointe sur la chaine a afficher
;---------------------------------------------------------
afficher:
push ax
push bx
.debut:
lodsb ; ds:si -> al
cmp al, 0 ; fin chaine ?
jz .fin
mov ah, 0x0E ; appel au service 0x0e, int 0x10 du bios
mov bx, 0x07 ; bx -> attribut, al -> caractere ascii
int 0x10
jmp .debut
.fin:
pop bx
pop ax
ret
;--- NOP jusqu'a 510 ---
times 510-($-$$) db 144
dw 0xAA55
|
qui est le fameux code du lien que tu as donné, en gros, le corps du truc c'est afficher ta chaîne de caractère par une interruption qui correspond à un appel au BIOS.
Ce que tu as fait dans ton screenshot, c'est faire un programme dont le corps du truc est d'afficher ta chaîne par une interruption qui correspond à un appel système (donc à l'OS).
Même technique, socle logiciel différent.
Si ton but c'est de faire de l'asm bas niveau, par exemple sans passer par les librairies C, dans ce cas là tu as bien plus intérêt à faire de l'asm sur OS que sans rien.
Pour être plus direct : si ton but c'est de faire de l'asm bas niveau, commencer par vouloir faire du sans OS est, de mon point de vue, ridicule. Monte déjà en compétence sur ta maîtrise des outils, ensuite sur l'asm, et on en reparlera après.
Quand tu comprendras ce code, et bien dis-toi que tu auras encore bien du chemin à faire avant de pouvoir créer un OS.
Au fait, si tu as utilisé un XP pour pouvoir utiliser de l'asm 16-bits, je te le redis : commence par maîtriser les outils. Tu es censé pouvoir faire de l'asm quelque soit la plateforme sur laquelle tu développe, et non te restreindre à du 16 bits. En clair : tu dois être capable de faire du 32 et du 64.
Bien évidemment, ceci n'est pas vrai en électronique où on peut imaginer que tu ais une plateforme standard en X bits qui ne bougera pas (bien que ça n'est pas tout le temps le cas). Mais comme tu veux visiblement faire de l'asm PC, tu dois savoir être souple de ce côté là. Et le fait que tu ne le sois pas pour l'instant montre le chemin qu'il y a à faire.
Je ne te dis pas ça pour te démotiver, au contraire : prouves-moi que tu peux y arriver. Mais pas y arriver en mixant des bouts de codes trouvés par-ci par là (c'est d'ailleurs assez pénible quand on se rend compte que celui qui demande de l'aide sur un forum n'a en réalité fait aucun effort pour intégrer les concepts utilisés), y arriver en comprenant ce que tu fais, en sachant modifier le strict minimum s'il y a un changement de plateforme (par exemple si tu dois passer du tout asm à du asm/C, ou bien si en asm/C la convention d'appel change, et que tu dois modifier le bout de code qui te permet de chopper les arguments de tes fonctions).
Quelque soit "l'altitude" de programmation (niveau ici porte à confusion), bas-niveau, haut-niveau, entre les 2, la dev' est toujours un voyage inachevable. Ce qui compte, ce n'est ni d'où l'on part, ni où on arrive, mais c'est le chemin parcouru.