nullnullJust a Little 16位DOS与32位Windows-116位DOS与32位Windows-116位DOS操作系统工作于实地址方式
DOS是单任务操作系统,一个正在运行的程序独占了所有系统资源
DOS系统只有一个特权级别,任何程序和操作系统都是同级的16位DOS与32位Windows-216位DOS与32位Windows-2DOS平台下
只有1MB物理存储空间
必须分成不大于64KB的逻辑段16位DOS与32位Windows-316位DOS与32位Windows-3DOS操作系统为程序员提供中断服务程序
以中断调用的
进行系统功能调用
DOS中断调用采用寄存器传递参数对程序员来说,
操作系统由其提供的系统功能调用定义16位DOS与32位Windows-416位DOS与32位Windows-4DOS下的程序以字符方式显示给用户
程序需要用户输入时,就停下来;用户不输入就不再执行;而且,需要输入一个数据,用户不能输入另一个数据。Win32ASM程序结构一个最简单的Win32汇编语言程序
显示
Windows消息窗口的程序
消息框显示:欢迎进入32位Windows世界!
标题:Win32示例Win32ASM程序结构ltwin01-1/2ltwin01-1/2 .386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.libltwin01-2/2ltwin01-2/2 .data
szCaption db 'Win32示例',0
szText db '欢迎进入32位Windows世界!',0
.code
start: invoke MessageBox,NULL,\
addr szText, addr szCaption,MB_OK
invoke ExitProcess,NULL
end startMessageBoxMessageBox在Win32程序员参考手册中的定义:
int MessageBox(
HWND hWnd, // handle of owner window
LPCTSTR lpText, // address of text in message box
LPCTSTR lpCaption, // address of title of message box
UINT uType // style of message box
);
在user32.inc的声明:
MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD
MessageBox equ
ExitProcessExitProcess在Win32程序员参考手册中的定义:
VOID ExitProcess(
UINT uExitCode // exit code for all threads
);
在user32.inc的声明:
ExitProcess PROTO :DWORD
在windows.inc 的定义:
NULL equ 0
MB_OK equ 0
MASM32开发环境MASM32开发环境Steve Hutchesson的免费软件包
编辑器geditor.exe
MASM 6.14汇编程序和链接程序
相当完整的Win32的包含文件、库文件以及教程和示例等MASM32的网络资源MASM32的网络资源Hutch的32位MASM第7版(masm32v7.zip)
http://www.movsd.com/
Iczelion的Win32教程
http://spiff.tripnet.se/~iczelion
http://asm.yeah.net/
API文档
http://www.microsoft.com/msdn创建一个窗口的过程创建一个窗口的过程1.取得程序的实例句柄(hInstance)
2.注册窗口类,即为你的窗口指定处理消息的过程,定义光标,窗口风格,颜色等参数
3.创建窗口
4.显示窗口
5.然后进入消息循环,也就是不停地检测有无消息,并把它发送给窗口进程去处理ltwin02.asmltwin02.exe窗口处理的过程窗口处理的过程1. 从Windows传给窗口过程的参数uMsg 得到消息类型,并转到不同的分支去处理
2. 对已经处理的消息,返回 Windows 时必须在eax 中返回0
3. 不处理的消息,调用DefWindowProc 处理,并把返回值传回Windows;否则,Windows会无法显示ltwin03.asmltwin03.exe谢谢各位的支持谢谢各位的支持