[問題] nasm bios撰寫

作者: erspicu (.)   2016-02-15 16:36:13
ORG 0xffff0000 ; 64k BIOS
BITS 16
rom_start:
nop
mov ax,0xb800
mov es,ax
mov ax,message ; offset ofMessage string terminating with $
mov si,ax ; Make Si point to string address
mov di,0 ; Make Destination Index point to
B800:0000
loop1:
mov al,[si] ; Read First Character
mov [es:di],al ; Write to Video
inc si ; Point to next character
inc di
inc di ; Next Display Area
cmp al,'$'
jne loop1 ; if not '$' jump to loop1
stoploop:
nop
jmp stoploop
message db "Hello World $" ; Message to be displayed terminating with a $
gdtEnd:
TIMES 0xfff0-($-$$) DB 0xff
reset_entry: ; power on
jmp rom_start
TIMES 0x10000-($-$$) DB 0xff
參考一些範例修改而來的
我想做的事情很簡單 因為想寫一個簡單的8086模擬器
想說先從最基本能跑完簡化版bios的完整度開始
因此這個bios只做很簡單的事情 那就是透過memory address
直接寫入字元印到文字模式的螢幕上
不過這寫好後 透過一些模擬器 ex,fake86 or Bochs
都沒有任何畫面出來
在我的觀念裡vga卡預設應該就是文字模式
把char code寫入到mapping的記體裡 應該就會看到字元
不過後來觀察到一點 vga卡本身也有bios
流程應該是 bios會先跑些東西後跳去vga的bios 做些初始化動作後 在跳回bios
不知道是不是因為vga卡要能夠用文字模式列印
還需要先進行初始化硬體的過程?
(只是文字模式透過memory寫入印字,還需要這麼麻煩??沒透過INT去做)

Links booklink

Contact Us: admin [ a t ] ucptt.com