1. 程式人生 > >keyboard not found! Please press F1 to continue.

keyboard not found! Please press F1 to continue.

boot.asm程式碼:

[org 0x7c00]
KERNEl_ADDR equ 0x820;資料要載入到0x8200:0000處(姑且當作是核心)
mov bx,LOADING_STR
call print_str;輸出loading...字串,bx是字串地址引數

mov ah,0x02;2h代表讀盤
mov al,1;讀一個扇區
mov ch,0;0柱面
mov dh,0;0磁頭
mov cl,2;2扇區
mov dl,0;0號驅動器
mov ax,KERNEl_ADDR
mov es,ax;資料最終載入到es:bx處
mov bx,0
int 13h;讀取磁碟到記憶體
jnc readDisk_successful;如果讀取成功CF標誌為置0
jmp readDisk_error;讀取失敗,輸出資訊 loop: jmp loop readDisk_successful: mov bx,READ_DISK_SUCCESS call print_str jmp loop readDisk_error: mov bx,READ_DISK_ERROR call print_str jmp loop print_str:;和上一個程式不同,這次我講輸出字串的程式改成了一個函式 mov ah,0x0e mov bp,bx mov al,[bp] cmp al,0 jz return int 10h add bx,1 jmp print_str return:
ret LOADING_STR: db "loading...",13,10,0 READ_DISK_SUCCESS: db "read disk successful!",13,10,0 READ_DISK_ERROR: db "read disk error!",13,10,0 times 510-($-$$) db 0 dw 0x55aa times 510 db 0 dw 0x55aa

編譯指令:
nasm boot.asm -f bin -o boot.img
Virtual Box 執行結果:
這裡寫圖片描述
參考:
BIOS int 13h功能引數表
BIOS int 10h功能引數表