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

📄 student(9).asm

📁 汇编上机试验。简单的学生成绩管理系统
💻 ASM
字号:
.386
.model flat,stdcall
option casemap:none

include Student.inc

.code

start:
	invoke	GetModuleHandle,NULL
	mov	hInstance,eax
	invoke	GetCommandLine
	invoke	InitCommonControls
	mov	CommandLine,eax
	invoke	WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT
	invoke	ExitProcess,eax

_ProcInsertDlg		proc	hWnd, uMsg, wParam, lParam
	mov	eax, uMsg
	.if	eax == WM_INITDIALOG
		invoke	SetWindowText, hDlg, addr EditInsert
	.elseif	eax == WM_CLOSE
		invoke EndDialog, hDlg, NULL
	.elseif	eax == WM_COMMAND
		mov	eax, wParam
		.if	eax == IDOK
			invoke	GetDlgItemText, hDlg, IDC_TEXTNO, addr pMemory, 8
			invoke	GetDlgItemText, hDlg, IDC_TEXTNAME, addr strName, 6
			invoke	GetDlgItemText, hDlg, IDC_TEXTASM, addr strASM, 3
			invoke	GetDlgItemText, hDlg, IDC_TEXTCA, addr strCA, 3
			invoke	GetDlgItemText, hDlg, IDC_TEXTOS, addr strOS, 3
;			invoke	SendMessage,hwndEdit,WM_GETTEXT,MEMSIZE-1,pMemory
;			invoke	WriteFile, hFile, pMemory, GeteaxValue, addr SizeReadWrite, NULL
			invoke	EndDialog, hDlg, NULL
;;;;;;;			invoke	SetDlgItemText, hWnd, IDC_STNO, addr strNo
		.elseif	eax == IDCANCEL
			invoke	EndDialog, hDlg, NULL
		.endif
	.else
		mov 	eax, FALSE
		ret
	.endif
	mov	eax, TRUE
	ret
	
_ProcInsertDlg endp

WinMain	proc
;	hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
	LOCAL	wc:WNDCLASSEX
	LOCAL	msg:MSG

	mov	wc.cbSize,sizeof WNDCLASSEX
	mov	wc.style,CS_HREDRAW or CS_VREDRAW
	mov	wc.lpfnWndProc,offset WndProc
	mov	wc.cbClsExtra,NULL
	mov	wc.cbWndExtra,DLGWINDOWEXTRA
	push	hInstance
	pop	wc.hInstance
	mov	wc.hbrBackground,COLOR_BTNFACE+1
	mov	wc.lpszMenuName,IDM_MENU
	mov	wc.lpszClassName,offset ClassName
	invoke	LoadIcon,NULL,IDI_APPLICATION
	mov	wc.hIcon,eax
	mov	wc.hIconSm,eax
	invoke	LoadCursor,NULL,IDC_ARROW
	mov	wc.hCursor,eax
	invoke	RegisterClassEx,addr wc
	invoke	CreateDialogParam,hInstance,IDD_DIALOG,NULL,addr WndProc,NULL
	invoke	ShowWindow,hWnd,SW_SHOWNORMAL
	invoke	UpdateWindow,hWnd
	.while	TRUE
		invoke	GetMessage, addr msg, NULL, 0, 0
		.break	.if	eax == 0
		invoke	IsDialogMessage, hDlg, addr msg
		invoke	TranslateMessage, addr msg
		invoke	DispatchMessage, addr msg
	.endw
	mov	eax,msg.wParam
	ret
WinMain endp

WndProc	proc	uses ebx edi esi, hWnd, uMsg, wParam, lParam
;hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
	mov	eax,uMsg
	.if	eax == WM_INITDIALOG
		push	hWnd
		pop	hWnd
	.elseif	eax == WM_COMMAND
		mov	eax,wParam
		and	eax,0FFFFh
		.if	eax == IDM_FILE_EXIT
			invoke	SendMessage,hWin,WM_CLOSE,0,0
		.elseif	eax == IDM_HELP_ABOUT
			invoke	ShellAbout,hWin,addr AppName,addr AboutMsg,NULL
		.elseif	eax == IDM_FILE_OPEN
			invoke	CreateFile, \
				addr FileName, \
				GENERIC_READ or GENERIC_WRITE, \
				FILE_SHARE_READ or FILE_SHARE_WRITE, \
				NULL, \
				OPEN_EXISTING, FILE_ATTRIBUTE_ARCHIVE, \
				NULL
			mov	hFile, eax
			invoke	GlobalAlloc, GMEM_MOVEABLE or GMEM_ZEROINIT, MEMSIZE
			mov	hMemory, eax
			invoke	GlobalLock, hMemory
			mov	pMemory, eax
			invoke	ReadFile, hFile, pMemory, MEMSIZE-1, addr SizeReadWrite, NULL
;			invoke	SendMessage, hWnd, WM_SETTEXT, NULL, pMemory
			invoke	SetDlgItemText, hWnd, IDC_TEXTAREA, pMemory
;			invoke	CloseHandle, hFile
;			invoke	GlobalUnlock,pMemory
;			invoke	GlobalFree,hMemory
		.elseif	eax == IDM_FILE_SAVE
;			invoke	CreateFile, \
;				ADDR FileName, \
;				GENERIC_READ or GENERIC_WRITE , \
;				FILE_SHARE_READ or FILE_SHARE_WRITE, \
;				NULL, \
;				CREATE_ALWAYS, \
;				FILE_ATTRIBUTE_ARCHIVE, \
;				NULL
;			mov 	hFile, eax
;			invoke	GlobalAlloc, GMEM_MOVEABLE or GMEM_ZEROINIT, MEMSIZE
;			mov 	hMemory, eax
;			invoke	GlobalLock, hMemory
;			mov	pMemory, eax
;			invoke	SendMessage, hWnd, WM_GETTEXT, MEMSIZE-1, pMemory
;			invoke	WriteFile, hFile, pMemory, MEMSIZE-1, ADDR SizeReadWrite, NULL
;			invoke	CloseHandle, hFile
;			invoke	GlobalUnlock,pMemory
;			invoke	GlobalFree,hMemory
		.elseif	eax == IDM_EDIT_INSERT
			invoke	DialogBoxParam, hInstance, IDD_INSERT, hWin, _ProcInsertDlg, NULL

;			invoke	WriteFile, hFile, addr lptrInsert, 8, addr SizeReadWrite, NULL
;			invoke	CloseHandle, hFile
;			invoke	CreateFile, \
;				addr FileName, \
;				GENERIC_READ or GENERIC_WRITE, \
;				FILE_SHARE_READ or FILE_SHARE_WRITE, \
;				NULL, \
;				OPEN_EXISTING, FILE_ATTRIBUTE_ARCHIVE, \
;				NULL
;			mov	hFile, eax
;
;			invoke	ReadFile, hFile, pMemory, MEMSIZE-1, addr SizeReadWrite, NULL
;
;			invoke	SetDlgItemText, hWnd, IDC_TEXTAREA, pMemory
			
		.endif
;	.elseif eax==WM_SIZE`
	.elseif	eax==WM_CLOSE
		invoke	DestroyWindow,hWin
	.elseif	uMsg==WM_DESTROY
		invoke	PostQuitMessage, NULL
	.else
		invoke	DefWindowProc, hWin, uMsg, wParam, lParam
		ret
	.endif
	xor    eax,eax
	ret

WndProc endp

end start

⌨️ 快捷键说明

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