⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bootsec.asm

📁 国内的一个小型操作系统
💻 ASM
字号:
[BITS 16]
[ORG 0x7C00]
	jmp start
				
msg1            db  'Loading System$'	;loading信息
bootdrive	db	0	;启动驱动器号

start:
	xor ax,ax		; 设置 DS
	mov ds,ax		; DS=0X0000

	; 清屏
	mov ax,3		; 设置清屏功能号
	int 0x10		; 调用 BIOS 10 号中断清屏
ResetFloppy:			; 重置磁盘
	mov ax,0		; 设置重置磁盘的功能号
	mov dl,[bootdrive]	; 选择启动磁盘
	int 0x13
	jc ResetFloppy		; 如果出错则重试

	mov si,msg1     	; 打印字符串
	call print	

ReadFloppy:			; 读内核到内存中 0000:9000 (es:bx)处
	xor ax,ax		; 设置 es 寄存器
	mov es,ax
	mov bx,0x9000
	mov ah,2		; 设置读磁盘功能号
	mov dl,[bootdrive]	; 设置欲读驱动器号
	mov ch,0		; 磁头号
	mov cl,2		; 起始扇区号
	mov al,10		; 读入扇区数量
	int 13h
	jc ReadFloppy

	;软盘控制寄存器的I/O地址为3F0 - 3F7
	mov dl,[bootdrive]		; 停止驱动器
	mov dx,0x3f2
	mov al,0x0c
	out dx,al
	
	mov ax,0x0000
	mov ds,ax
	jmp 0x9000		;jump to setup.s

print:
        lodsb           ; AL=字符存放在DS:SI

        cmp al,'$'      ; If AL='$' then hang
        je return

        mov ah,0Eh     ; Print AL
        mov bx,0
        int 10h

        jmp print       ; 打印下一个字符
return:	
	ret
	

times 510-($-$$) db 0
db 0x55
db 0xAA

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -