[問題] nasm bios撰寫

看板ASM (組合語言)作者 (.)時間9年前 (2016/02/15 16:36), 9年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
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去做) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.121.24.207 ※ 文章網址: https://www.ptt.cc/bbs/ASM/M.1455525375.A.D50.html ※ 編輯: erspicu (122.121.24.207), 02/15/2016 16:40:49
文章代碼(AID): #1MmOt_rG (ASM)
討論串 (同標題文章)
文章代碼(AID): #1MmOt_rG (ASM)