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

📄 virtual.asm

📁 windows下汇编语言 学习汇编语言好助手
💻 ASM
字号:
;*************************
;文件:Virtual.asm	     * 
;功能:使用虚拟内存	     *
;*************************
.386p
.model flat,stdcall	;平坦内存模式,标准调用

;常量定义
NULL  = 0
MB_OK = 0
MEM_RESERVE   =  2000H
MEM_COMMIT    =  1000H
MEM_DECOMMIT  =  4000H
MEM_RELEASE   =  8000H
MEM_FREE      =  10000H
MEM_PRIVATE   =  20000H
MEM_MAPPED    =  40000H
MEM_RESET     =  80000H
MEM_TOP_DOWN  =  100000H
MEM_IMAGE     =  1000000H

PAGE_NOACCESS          = 01H
PAGE_READONLY          = 02H
PAGE_READWRITE         = 04H
PAGE_WRITECOPY         = 08H
PAGE_EXECUTE           = 10H
PAGE_EXECUTE_READ      = 20H
PAGE_EXECUTE_READWRITE = 40H
PAGE_EXECUTE_WRITECOPY = 80H
PAGE_GUARD             = 100H
PAGE_NOCACHE           = 200H

;外部过程声明
EXTRN	VirtualAlloc  :PROC
EXTRN	VirtualFree  :PROC
EXTRN	VirtualLock  :PROC
EXTRN	VirtualProtect  :PROC
EXTRN	VirtualProtectEx  :PROC
EXTRN	VirtualQuery  :PROC
EXTRN	VirtualQueryEx  :PROC
EXTRN	VirtualUnlock  :PROC
EXTRN	MessageBoxA:  PROC
EXTRN	ExitProcess:  PROC

.data 
	ErrCaption 	db 'Error',0
	ErrText		db '错误!',0
	lpMem		dd ?
	
.code
main:
	;保留
	call	VirtualAlloc,NULL,4096*3,MEM_RESERVE,PAGE_READWRITE
	mov		[lpMem],eax
	or		eax,eax
	jz		Error
	
	;分配
	mov		ebx,[lpMem]
	add		ebx,4096
	call	VirtualAlloc,ebx,4096,MEM_COMMIT,PAGE_READWRITE
	or		eax,eax
	jz		Error
	mov		[eax],12345678H
	
	;释放
	call	VirtualFree,[lpMem],NULL,MEM_RELEASE
	or		eax,eax
	jz		Error
	call	ExitProcess,0
Error:
	call	MessageBoxA,NULL,offset ErrText,offset ErrCaption,MB_OK
	call	ExitProcess,1

	end main

⌨️ 快捷键说明

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