startup.s
来自「一个操作系统,用C语言实现开发的,我在一个浙江大学的操作系统实验网站找到.大家学」· S 代码 · 共 51 行
S
51 行
# Loader for XSFS
# Loaded at 0800:0000
.text
.global _start
.code16
.org 0
# input from boot sector
# INPUT: DX = head:drive
# SI = xsfs_desc
# ECX = l_base
# EAX = l_part
# BX = w_ext
# DS = segment of boot sector
_start:
# initialize segment registers
movl %eax, %edi # save EAX
movw %cs, %ax
movw %ax, %es
movw %ax, %ss
movw $0x7ff0, %sp
pushw %ds
movw %ax, %ds
movl %edi, %eax
# save parametters from boot sector
movw %dx, __bs_dx
movl %ecx, __bs_base
movl %eax, __bs_part
movw %bx, __bs_ext
popw %ds
addw $9, %si # skip signature
leaw __bs_xsfs, %di
movw $6, %cx # sizeof(XSFSDESC) = 6 * sizeof(_u32)
orw %cx, %cx # clear ZF
cld
rep
movsl
movw %cs, %ax
movw %ax, %ds
call _vmain
movw $0, %ax
int $0x16
int $0x19
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?