2020年10月21日 星期三

自幹OS筆記 - 03 來個Hello World吧

一樣是寫程式  怎麼能不寫個Hello world呢?

所以接下來就是印個Hello world在螢幕上

BIOS 裡有提供簡單的 interrupt 可以完成這件事情

然後詳細的內容 可以翻閱 wikipedia 

簡單的說就是要設定 ax register 裡面的值 

分為 ah (高位址)和 al (低位址)

ah 設定成 0x0e 代表 Teletype output 會顯示 al 裡面存的ASCII code

--<boot.asm>---------------------------------------------------------------------

mov ah 0x0e

mov al, 'H'

int 0x10

mov al, 'e'

int 0x10

mov al, 'l'

int 0x10

mov al, 'l'

int 0x10

mov al, 'o'

int 0x10

mov al, ' '

int 0x10

mov al, 'w'

int 0x10

mov al, 'o'

int 0x10

mov al, 'r'

int 0x10

mov al, 'l'

int 0x10

mov al, 'd'

int 0x10

jmp $

times 510-($-$$) db 0x00

dw 0xaa55

-----------------------------------------------------------------------------------

簡單的說就是一個字一個字的填上去

然後 interrupt 讓字顯示上去

因為 ah 都一樣所以就不用動

填完之後 一樣一個 infinite loop

最後填上 0 跟 0xaa55就好了~

沒有留言:

張貼留言

Go lang 學習筆記 - 17 Pointers

``` package main import "fmt" func zeroval(n int) {         n = 0 } func zeroptr(n *int) {         *n = 0 } func main() {         ...