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:
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
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
 
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