|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 兰陵月 于 2018-3-13 00:46 编辑
源程序:
- ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- ; ******************【程】***【序】***【信】***【息】******************
- ;------------------------------------------------------------------------
- ; 程序基本信息
- ;------------------------------------------------------------------------
- ; 程序名称:SB.asm
- ; 程序功能:调用MessageBox函数生成一个对话框,演示基本功能的Windows程序
- ; 编辑软件:Notepad++ 编码格式:ANSI
- ; 创建日期:2018.03.12
- ; 创 建 者: by 鱼C论坛 兰陵月 QQ:2186745820
- ;------------------------------------------------------------------------
- ; MakeFile 文件
- ;------------------------------------------------------------------------
- ;NAME = SB
- ;OBJS = $(NAME).obj
- ;LINK_FLAG = /subsystem:windows
- ;ML_FLAG = /c /coff
- ;$(NAME).exe: $(OBJS)
- ; Link $(LINK_FLAG) $(OBJS)
- ;.asm.obj:
- ; ml $(ML_FLAG) [ DISCUZ_CODE_0 ]lt;
- ;clean:
- ; del *.obj
- ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- ; 【模式定义】
- ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- .386
- .model flat,stdcall
- option casemap: none
- ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- ; 【include 文件定义】
- ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- include windows.inc
- include user32.inc
- includelib user32.lib
- include kernel32.inc
- includelib kernel32.lib
- ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- ; 【Equ等值定义】,对应资源代码文件中的define部分
- ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- ; ××× equ ×××
- ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- ; 【数据段】
- ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- ;------------------------------------------------------------------------
- ; 可读可写已初始化变量
- ;------------------------------------------------------------------------
- .data
- ;------------------------------------------------------------------------
- szCaption db '鱼C论坛-汇编语言交流-by 兰陵月',0
- szText db '这就是消息框内的消息内容......',0dh
- db 'MessagBox函数原型:',0dh
- db 'MessagBox hWnd, IpText, IpCaption, UType',0
- szTextCs1 db '消息内容不分行情况:',0dh,0ah
- db '鱼C论坛好;','鱼C论坛妙;','鱼C论坛呱呱叫!',0
- szTextCs2 db '消息内容分行情况:(在要分行的地方加0dh,0ah)',0dh,0ah
- db '鱼C论坛好;',0dh,0ah,'鱼C论坛妙;',0dh,0ah,'鱼C论坛呱呱叫!',0
- szTextCs3 db '消息内容分行情况:',0dh,'(在要分行的地方加0dh和0ah,或者只需要其中任意一个也行,原因不清楚!)',0ah
- db '鱼C论坛好;',0dh,'鱼C论坛妙;',0ah,'鱼C论坛呱呱叫!',0
- szTextCs4 db '将第三个参数lpCaption的值变为NULL。',0dh
- db 'MessagBox NULL, offset szTextCs4, NULL, MB_OK',0ah
- db '请看消息框标题栏的变化情况,变成了“错误”二字!',0
- szTextCs5 db '将函数的uType参数值变为:',0dh,'MB_ABORTRETRYIGNORE(十六进制值0x02)',0ah
- db 'MessagBox NULL, offset szTextCs5, NULL, MB_ABORTRETRYIGNORE',0
- szTextCs6 db '将函数的uType参数值变为:',0dh,'MB_CANCELTRYCONTINUE(十六进制值0x06)',0ah
- db 'MessagBox NULL, offset szTextCs6, NULL, MB_CANCELTRYCONTINUE',0
- ;------------------------------------------------------------------------
- ; 可读可写未初始化变量
- ;------------------------------------------------------------------------
- ; .data?
- ;------------------------------------------------------------------------
- hInstance dd ?
- ;------------------------------------------------------------------------
- ; 可读不可写初始化常量
- ;------------------------------------------------------------------------
- ; .const
- ;------------------------------------------------------------------------
- ; ×××变量定义区×××
- ;------------------------------------------------------------------------
- ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- ; 【代码段】
- ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- .code
- ;------------------------------------------------------------------------
- start:
- invoke MessageBox,\
- NULL,\
- offset szText,\
- offset szCaption,\
- MB_OK or MB_TASKMODAL
- invoke MessageBox,\
- NULL,\
- offset szTextCs1,\
- offset szCaption,\
- MB_OK
- invoke MessageBox,\
- NULL,\
- offset szTextCs2,\
- offset szCaption,\
- MB_OK
- invoke MessageBox,\
- NULL,\
- offset szTextCs3,\
- offset szCaption,\
- MB_OK
- invoke MessageBox,\
- NULL,\
- offset szTextCs4,\
- NULL,\
- MB_OK
- invoke MessageBox,\
- NULL,\
- offset szTextCs5,\
- NULL,\
- MB_ABORTRETRYIGNORE
- invoke MessageBox,\
- NULL,\
- offset szTextCs6,\
- NULL,\
- MB_CANCELTRYCONTINUE or MB_ICONEXCLAMATION or MB_TASKMODAL
- invoke ExitProcess,\
- NULL
- ;------------------------------------------------------------------------
- ; 程序起始点
- ;------------------------------------------------------------------------
- end start
- ;------------------------------------------------------------------------
- ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
-
-
-
复制代码
MAKEFILE文件内容:
- NAME = SB
- OBJS = $(NAME).obj
- LINK_FLAG = /subsystem:windows
- ML_FLAG = /c /coff
- $(NAME).exe: $(OBJS)
- Link $(LINK_FLAG) $(OBJS)
- .asm.obj:
- ml $(ML_FLAG) [ DISCUZ_CODE_1 ]lt;
- clean:
- del *.obj
复制代码
运行结果:
另外,经过试验,字符数目最多允许252个,如果超过252个,则编译不会成功。字符显示的时候会自动换行,可能是80个一行。
下图表示刚好显示252个字符:
下图表示超过252个字符情况,显示编译不成功:
|
-
-
|