|
CREER UNE ZONE DE "BOOT" |
| ;Le programme ci-dessous est un programme de "boot". ;Au moment ou le BIOS détectera le secteur de "boot", il chargera ce programme ;à l'adresse 7C00h puis exécutera le programme. ;La chaîne de caractères qui sera affichée à l'écran est : "Hello World !" ;On utilisera l'injection directe dans la mémoire vidéo. MonCode SEGMENT ORG 0h ;Calcul des "offsets" à partir du début du segment de "boot". ;--- Zone de code --- Main: ;Adresse de segment pour les données. mov ax, 7C0h mov ds, ax ;Ecriture directement en mémoire vidéo. mov ax,0B800h mov es,ax ;Mode vidéo 80 x 25 xor ah, ah mov al, 2h int 10h mov di, 7C2h ;La chaîne "Hello World !" est centrée. mov ah, 0Eh ;Couleur jaune. mov si, OFFSET GoodMorning ;Affichage de la chaîne : "Hello World !" en jaune. ShowHelloWorld: lodsb stosw or al, al jnz ShowHelloWorld mov di, 0F58h ;Coin inférieur droit mov ah, 0Ah ;Couleur verte. mov si, OFFSET PressAnyKey ;Affiche la chaîne : "Pressez une touche pour continuer..." en vert. ShowPressAnyKey: lodsb stosw or al, al jnz ShowPressAnyKey ;Cache le curseur. mov ah,2 mov bh, 0 mov dh,25 mov dl, 80 int 10h ;Attends l'appui sur une touche. xor ah, ah int 16h ;Efface l'écran. mov ah, 0Fh mov al, 0 mov cx, 7D0h xor di, di Clear: stosw loop Clear mov di, 7C6h ;Centre la chaîne. mov ah, 9h ;Couleur bleu mov si, OFFSET ByeBye ;Affiche la chaîne : "Bye Bye !" en bleu. ShowByeBye: lodsb stosw or al, al jnz ShowByeBye ;Fin du programme. TheEnd: jmp TheEnd ;--- Zone des données --- GoodMorning db "Hello World !",0 PressAnyKey db "Pressez une touche pour continuer...",0 ByeBye db "Bye Bye !",0 ORG 510 ;--- Signature du secteur de "boot" --- DW 0AA55h MonCode ENDS END Main |