finish
This commit is contained in:
parent
8ff1943441
commit
5a65458c56
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
*.bin
|
||||||
|
*.img
|
||||||
19
Makefile
Normal file
19
Makefile
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
CC = gcc
|
||||||
|
ASM = nasm
|
||||||
|
QEMU = qemu
|
||||||
|
IMG = boot.bin
|
||||||
|
|
||||||
|
boot.bin: boot.asm
|
||||||
|
$(ASM) $< -o $@
|
||||||
|
|
||||||
|
compile: boot.bin
|
||||||
|
|
||||||
|
.DEFAULT_GOAL=compile
|
||||||
|
|
||||||
|
run: compile
|
||||||
|
$(QEMU) -boot order=c -drive file=$(IMG),format=raw
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm boot.bin
|
||||||
|
|
||||||
|
.PHONY: compile clean run
|
||||||
29
boot.asm
29
boot.asm
@ -5,14 +5,27 @@
|
|||||||
call DispStr ; 调用显示字符串例程
|
call DispStr ; 调用显示字符串例程
|
||||||
jmp $ ; 无限循环
|
jmp $ ; 无限循环
|
||||||
DispStr:
|
DispStr:
|
||||||
mov ax, BootMessage
|
mov ax, 0600h
|
||||||
mov bp, ax ; ES:BP = 串地址
|
mov bx, 0h
|
||||||
mov cx, 16 ; CX = 串长度
|
mov cx, 0h
|
||||||
mov ax, 01301h ; AH = 13, AL = 01h
|
mov dh, 25-1
|
||||||
mov bx, 000ch ; 页号为0(BH = 0) 黑底红字(BL = 0Ch,高亮)
|
mov dl, 80-1 ; vga text-mode: 80x25
|
||||||
mov dl, 0
|
int 10h ; clear screen
|
||||||
int 10h ; 10h 号中断
|
mov ax, 0200h
|
||||||
|
mov bx, 0h
|
||||||
|
mov dx, 1326h ; 19=13H, 38=26H
|
||||||
|
int 10h ; set cursor position
|
||||||
|
mov ax, NWPU
|
||||||
|
mov bp, ax ; ES:BP = 串地址, es has been set to the same seg
|
||||||
|
mov cx, 4 ; CX = 串长度
|
||||||
|
mov ax, 01300h ; AH = 13, AL = 01h
|
||||||
|
mov bx, 00f9h ; 页号为0(BH = 0) 黑底红字(BL = 0Ch,高亮)
|
||||||
|
int 10h ; 10h 号中断
|
||||||
|
mov ax, 0200h
|
||||||
|
mov bx, 0h
|
||||||
|
mov dx, 0h
|
||||||
|
int 10H ; reset cursor to 0,0
|
||||||
ret
|
ret
|
||||||
BootMessage: db "Hello, OS world!"
|
NWPU: db "NWPU"
|
||||||
times 510-($-$$) db 0 ; 填充剩下的空间,使生成的二进制代码恰好为512字节
|
times 510-($-$$) db 0 ; 填充剩下的空间,使生成的二进制代码恰好为512字节
|
||||||
dw 0xaa55 ; 结束标志
|
dw 0xaa55 ; 结束标志
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user