鱼C论坛

 找回密码
 立即注册
查看: 2926|回复: 6

win32子程序问题

[复制链接]
发表于 2016-8-31 23:36:17 | 显示全部楼层 |阅读模式
20鱼币
本帖最后由 u654f 于 2016-8-31 23:48 编辑

问题一:这样的方式调用有何不妥?为什么弹出的是乱码?
QQ截图20160831233707.png
问题二:写两个子程序只能调用第一个子程序,是不是一个里面只能写一个子程序?
QQ截图20160831234055.png
源代码:
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Sample code for < Win32ASM Programming 3rd Edition>
; by 罗云彬, http://www.win32asm.com.cn
; 视频讲座 by 小甲鱼, http://www.fishc.com
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Hello.asm
; 使用 Win32ASM 写的 Hello, world 程序
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 使用 nmake 或下列命令进行编译和链接:
; ml /c /coff Hello.asm
; Link /subsystem:windows Hello.obj
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                .386
                .model flat,stdcall
                option casemap:none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include                windows.inc
include                user32.inc
includelib        user32.lib
include                kernel32.inc
includelib        kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.const

.data
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>全局变量声明
szCaption        db        '来自鱼C工作室', 0
szText                db        'Hello, World !', 0
;szYesText         db        '你选择了Yes',0
;szNoText        db        '你选择了No',0
;szTst db  1024 dup ('你')

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
start:
;>>>>>>>>>>>>>>>>>>>>>>>>>>局部变量声明


MyProc proc public Arg1:DWORD,Arg2:DWORD

invoke MessageBoxA,NULL, Arg1, Arg2,MB_YESNO OR MB_ICONWARNING
ret
MyProc endp
MyProc proto :dword,:dword
invoke MyProc,offset szText,offset szCaption
;>>>>>>>>>>>>>>>>>>>>>>>>>>函数调用测试
;invoke        MessageBoxA,NULL,offset szText,offset szCaption,MB_YESNO OR MB_ICONWARNING

;                cmp eax,6               
;je @F
               
                ;invoke        MessageBoxA,NULL,offset szYesText,offset szCaption,MB_OK OR MB_ICONINFORMATION
;mov cx,1
;                @@:
;                invoke        MessageBoxA,NULL,offset szNoText,offset szCaption,MB_OK OR MB_ICONINFORMATION

               
;loop @B

invoke        ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end        start



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-10-7 21:20:39 | 显示全部楼层
传入参数不对,你看情况小甲鱼例子里面,代码是这样的:
invoke        MessageBoxA,NULL,offset szNoText,offset szCaption,MB_OK OR
第2个和第3个传入的是一个字符串地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-10-9 09:29:12 | 显示全部楼层
my_angel 发表于 2016-10-7 21:20
传入参数不对,你看情况小甲鱼例子里面,代码是这样的:
invoke        MessageBoxA,NULL,offset szNoTex ...

我把invoke        MessageBoxA,NULL,offset szNoText,offset szCaption,MB_OK OR封装在自定义的函数里面,这个函数是带参的,就是测试自定义带参的函数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-10-9 09:45:19 | 显示全部楼层
自己解决了。
.386
.model flat,stdcall
option casemap:none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include         windows.inc
include         user32.inc
includelib         user32.lib
include         kernel32.inc
includelib         kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.const

.data
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>全局变量声明
szCaption        db        '来自鱼C工作室',0
szText                db        'Hello World !',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code

;>>>>>>>>>>>>>>>>>>>>>>>>>>局部变量声明
MyProc proc public Arg1:DWORD,Arg2:DWORD
invoke MessageBoxA,NULL, Arg1, Arg2,MB_YESNO OR MB_ICONWARNING
ret
MyProc endp
start:
MyProc proto :dword,:dword
invoke MyProc,offset szText,offset szCaption
invoke ExitProcess,NULL

end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-10-21 19:35:24 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-10-25 14:42:48 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-10-25 14:43:28 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 20:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表