[问题] 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