📄 startup.s
字号:
# 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -