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

📄 realmode.asm

📁 jserv写的orz小内核 有详细的注释
💻 ASM
字号:
;-----------------------------------------------------------------------------------;;;; IN: AL - interrupt number;;;;     [rmode_ax] .... [rmode_flags] - real mode registers;;;;;;;; OUT: [rmode_ax] .... [rmode_flags] - real mode registersRmodeInt:	pushad	push es	push fs	push gs	mov [RmodeIntNum], al	mov ax, ss	mov [RmodeInt_ss], ax	mov [RmodeInt_esp], esp	xor eax, eax	mov cr3, eax	jmp DWORD (real_mode_code - _GDT):(RmodeInt0 - KERNEL_START)[BITS 16]	align 2RmodeInt0:	cli	cld	call PrepareIRQs	mov ax, real_mode_data - _GDT	mov ds, ax	mov es, ax	mov ss, ax	mov fs, ax	mov gs, ax	lidt [_RM_IDTR]	mov eax, cr0	and al, 0xFE	mov cr0, eax	jmp WORD KERNEL_START_SEG:(RmodeInt1 - KERNEL_START)	align 2RmodeInt1:	mov ax, 0x1000	mov ss, ax	mov sp, 0	call RestoreRmodeIRQs	mov ax, [cs:(rmode_ax - KERNEL_START)]	mov bx, [cs:(rmode_bx - KERNEL_START)]	mov cx, [cs:(rmode_cx - KERNEL_START)]	mov dx, [cs:(rmode_dx - KERNEL_START)]	mov si, [cs:(rmode_si - KERNEL_START)]	mov di, [cs:(rmode_di - KERNEL_START)]	mov bp, [cs:(rmode_bp - KERNEL_START)]	mov ds, [cs:(rmode_ds - KERNEL_START)]	mov es, [cs:(rmode_es - KERNEL_START)]	push WORD [cs:(rmode_flags - KERNEL_START)]	popf	sti		db 0xCDRmodeIntNum	db 0x00	cli	pushf	pop WORD [cs:(rmode_flags - KERNEL_START)]	mov [cs:(rmode_es - KERNEL_START)], es	mov [cs:(rmode_ds - KERNEL_START)], ds	mov [cs:(rmode_bp - KERNEL_START)], bp	mov [cs:(rmode_di - KERNEL_START)], di	mov [cs:(rmode_si - KERNEL_START)], si	mov [cs:(rmode_dx - KERNEL_START)], dx	mov [cs:(rmode_cx - KERNEL_START)], cx	mov [cs:(rmode_bx - KERNEL_START)], bx	mov [cs:(rmode_ax - KERNEL_START)], ax	cli	cld	call PrepareIRQs	call A20En	mov eax, cr0	or al, 1	mov cr0,eax	jmp DWORD (kernel_code - _GDT):RmodeInt2[BITS 32]	align 4RmodeInt2:	mov ax, kernel_data - _GDT	mov ds, ax	mov es, ax	mov fs, ax	mov gs, ax	mov ax, 0x1234RmodeInt_ss	equ $-2	mov ss, ax	mov esp, 0x12345678RmodeInt_esp	equ $-4	lidt [_IDTR]	call EnableIRQs	pop gs	pop fs	pop es	popad	retrmode_axrmode_al	db 0rmode_ah	db 0rmode_bxrmode_bl	db 0rmode_bh	db 0rmode_cxrmode_cl	db 0rmode_ch	db 0rmode_dxrmode_dl	db 0rmode_dh	db 0rmode_si	dw 0rmode_di	dw 0rmode_bp	dw 0rmode_ds	dw 0rmode_es	dw 0rmode_flags	dw 0

⌨️ 快捷键说明

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