Voici une curiosité que je viens de faire.
Conversion d'un Boot-loader (récupérer sur un site) en assembleur écrit pour Nasm que j'ai convertis au plus proche (enfin je crois) avec Fasm. Peut générer un fichier img (image disquette)
Testé sur Virtual Box, fonctionnel.
Voici les codes pour ceux que ça intéresse.
Version Nasm:
Version Fasm:
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
34
35
36
37
38 BITS 16 start: mov ax, 07C0h ; Set up 4K stack space after this bootloader add ax, 288 ; (4096 + 512) / 16 bytes per paragraph mov ss, ax mov sp, 4096 mov ax, 07C0h ; Set data segment to where we're loaded mov ds, ax mov si, text_string ; Put string position into SI call print_string ; Call our string-printing routine jmp $ ; Jump here - infinite loop! text_string db 'This is my cool new OS written with NASM!', 0 print_string: ; Routine: output string in SI to screen mov ah, 0Eh ; int 10h 'print char' function .repeat: lodsb ; Get character from string cmp al, 0 je .done ; If char is zero, end of string int 10h ; Otherwise, print it jmp .repeat .done: ret times 510-($-$$) db 0 ; Pad remainder of boot sector with 0s dw 0xAA55 ; The standard PC boot signature
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 use16; Initialisation du mode 16bits start: mov ax, 07C0h; add ax,288; mov ss,ax mov sp,4096 mov ax,07C0h; mov ds,ax mov si,welcome; call affichage; welcome: db "Ceci est mon nouvel OS ecrit avec FASM!",0 affichage: mov ah,0Eh; repeter: lodsb; cmp al,0x00; je sortirdeboucle; int 0x10; jmp repeter; sortirdeboucle: ret; times 510 - ($-$$) db 0 dw 0xAA55
Partager