为了函数调用,必须先把栈建起来。
0x7c00 +-----------------+
| |
| 512字节 |
. .
. .
. .
0x7e00 | --------------- | <- 栈底
| |
| |
| |
| |
| 8k字节 |
| |
| |
| |
|-----------------| <- %sp 栈顶
代码 boot.s
:
.code16
.global init
init:
mov $0x07c0, %ax
mov %ax, %ds
mov $0x07e0, %ax
mov %ax, %ss
mov $0x2000, %sp
mov $0x41, %al
call print_char
jmp .
print_char:
mov $0x0e, %ah
int $0x10
ret
.=510
.byte 0x55
.byte 0xaa
$ as -o boot.o boot.s
$ ld -o boot.bin --oformat binary -e init boot.o
把boot.bin
做为虚拟机的软盘,启动:
网友评论