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

📄 mema.asm

📁 从dos下装载内核
💻 ASM
字号:
.386p
JUMP16 macro selector,offsetv
        db 0eah
        dw offsetv
        dw selector
endm
extrn _GdtPtrForBios:qword
public _ToProtectAndCopy
_TEXT	segment byte public use16 'CODE'
_TEXT	ends
_DATA	segment word public use16 'DATA'
_DATA	ends
_BSS	segment word public use16 'BSS'
_BSS	ends
DGROUP	group	_DATA,_BSS
	assume	cs:_TEXT,ds:DGROUP
_TEXT segment byte public use16 'CODE'
assume cs:_TEXT,ds:DGROUP
_ToProtectAndCopy:
;ToProtectAndCopy(void *SrcBuf,int WordSize)
;SrcBuf=bp+4,WordSize=bp+6
        push bp
        mov bp,sp
        pusha
        push ds
        push es
        cli
        lgdt _GdtPtrForBios
        mov eax,cr0
        or eax,1
        mov cr0,eax
        JUMP16 3*8,<offset Protect>
Protect:
        mov ax,1*8
        mov ss,ax
        mov ax,1*8
        mov ds,ax
        mov ax,2*8
        mov es,ax
        mov cx,[bp+6]
        mov si,[bp+4]
        mov edi,0
        cld
cycle1:
        test cx,cx
        jz ToReal
        lodsw
        mov es:[edi],ax
        inc edi
        inc edi
        dec cx
        jmp cycle1
ToReal:
        pop bx
        pop dx
        mov eax,cr0
        and eax,0fffffffeh
        mov cr0,eax
        JUMP16 <seg real>,<offset real>
real:
        mov es,bx
        mov ds,dx
        mov ss,dx
        popa
        pop bp
        sti
        ret
_TEXT ends
end



⌨️ 快捷键说明

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