console.asm

来自「windows下汇编语言 学习汇编语言好助手」· 汇编 代码 · 共 52 行

ASM
52
字号
;*********************************
;文件:Console.asm	             * 
;功能:演示控制台应用程序的编写  *
;*********************************
.386p
.model flat,stdcall		;平坦内存模式

NULL  = 0				;常量定义
MB_OK = 0
GENERIC_READ		equ	80000000H
GENERIC_WRITE		equ	40000000H
FILE_SHARE_READ		equ	00000001H
FILE_SHARE_WRITE	equ	00000002H
CONSOLE_TEXTMODE_BUFFER equ	 1
INVALID_HANDLE_VALUE	equ	-1
 
extrn WriteConsoleA:proc	;外部过程声明
extrn SetConsoleTitleA:proc
extrn CreateConsoleScreenBuffer:proc
extrn CloseHandle:proc
extrn SetConsoleActiveScreenBuffer:proc
extrn MessageBoxA:proc	
extrn ExitProcess:proc	;

.data 
	Caption db 'Hello World!',0
	Text    db '欢迎来到Win32汇编的世界',0
	ErrText	db 'Error',0
	align 4
	Written dd ?
	hCS		dd ?
.code
main:
 	call	SetConsoleTitleA ,offset Caption	;改变窗口标题

	;建立控制台的screen buffer
	call	CreateConsoleScreenBuffer,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CONSOLE_TEXTMODE_BUFFER,NULL
	cmp		eax,INVALID_HANDLE_VALUE			;建立失败?
	jz		Error
	mov		[hCS],eax
	call	SetConsoleActiveScreenBuffer,eax	;设置有效的制台screen buffer
	;写控制台
	call	WriteConsoleA,[hCS],offset Text,offset ErrText - offset Text,offset Written,NULL
	
	call	CloseHandle,[hCS]					;关闭句柄
	call ExitProcess,0	
Error:
	call MessageBoxA,NULL,offset ErrText,offset Caption,MB_OK
	call ExitProcess,1

	end main

⌨️ 快捷键说明

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