引导程序之函数调用

2020-06-06  本文已影响0人  louyang

为了函数调用,必须先把栈建起来。

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做为虚拟机的软盘,启动:

image.png
参考

https://www.jianshu.com/p/b2c1d296a8a9

上一篇 下一篇

猜你喜欢

热点阅读