| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1511 人关注过本帖
标题:win32中的输出
只看楼主 加入收藏
toyix
Rank: 1
等 级:新手上路
帖 子:112
专家分:0
注 册:2008-7-14
结帖率:50%
收藏
 问题点数:0 回复次数:7 
win32中的输出
我看代码中输出都要写两句 ,invoke    wsprintf,addr @szBuffer,addr szFormat,dwCount
                        invoke    MessageBox,hWnd,offset @szBuffer,offset qqq,MB_OK有想 C语言 prinf写一句就可以的吗,
搜索更多相关主题的帖子: 输出 
2008-07-31 11:24
ONEPROBLEM
Rank: 6Rank: 6
来 自:广西 南宁
等 级:贵宾
威 望:21
帖 子:1569
专家分:349
注 册:2008-7-11
收藏
得分:0 
有像C语言printf写一句就可以的吗?
====================================
好像没那么简单吧?控制台程序我没有学过,听说有办法.
2008-07-31 12:07
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
[bo][un]toyix[/un] 在 2008-7-31 11:24 的发言:[/bo]

我看代码中输出都要写两句 ,invoke    wsprintf,addr @szBuffer,addr szFormat,dwCount
                        invoke    MessageBox,hWnd,offset @szBuffer,offset qqq,MB_OK有想 C语言 prinf写一句就可以的吗,


你要是那那么想一句完成 可以用 c 里的 printf 呀  

includelib msvcrt.lib

其实 windows 里的控制台输出还是很复杂的 呵呵
2008-07-31 14:20
toyix
Rank: 1
等 级:新手上路
帖 子:112
专家分:0
注 册:2008-7-14
收藏
得分:0 
[bo][un]zklhp[/un] 在 2008-7-31 14:20 的发言:[/bo]



你要是那那么想一句完成 可以用 c 里的 printf 呀  

includelib msvcrt.lib

其实 windows 里的控制台输出还是很复杂的 呵呵

怎么调用 啊  ,win32汇编 也可以调用printf吗
2008-07-31 14:24
MYWIN32
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-8-1
收藏
得分:0 
invoke    MessageBox,hWnd,offset 12333,offset 3434,MB_OK
2008-08-01 16:08
toyix
Rank: 1
等 级:新手上路
帖 子:112
专家分:0
注 册:2008-7-14
收藏
得分:0 
[bo][un]MYWIN32[/un] 在 2008-8-1 16:08 的发言:[/bo]

invoke    MessageBox,hWnd,offset 12333,offset 3434,MB_OK

你这个输出的是固定值啊 ,我想说的是输出变量
2008-08-01 17:33
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
[bo][un]toyix[/un] 在 2008-7-31 14:24 的发言:[/bo]


怎么调用 啊  ,win32汇编 也可以调用printf吗


如果是控制台程序  偶感觉不如用c的运行时库 win32汇编里的控制台输出其实很复杂的

你要是想用 printf 只要

includelib msvcrt.lib

再声明一下就是了

类似这样

printf proto c,n:DWORD,m:VARARG

不过 鬼龙之舞 写过一个 .inc 文件

;include xx.lib
;xx.lib可以用libc.lib(静态连接)
;或是msvcrt.lib(动态连接,推荐)
;函数的具体用法请参看MSDN或相关资料
;收集整理: 鬼龙之舞.
;E-mail:   k_badboy@
;主页:     http://kbadboy.
;汇编论坛: http://www.

;参数后辍说明
;_OUT结尾,则表示是输出参数,一般来讲,这个参数应该是地址
;_IN,输入参数
;_INOUT:既是输入,也是输出
;#########################字符与数值互转换函数###############################
ifndef _i64toa
_i64toa proto C qwNumber_IN:QWORD,lpszBuf_OUT:DWORD,radix_IN :DWORD
_ui64toa proto C qwNumber_IN:QWORD,lpszBuf_OUT:DWORD,radix_IN :DWORD
strtol proto C lpszBuf_OUT:DWORD ,lpszEndStr_OUT:DWORD ,radix_IN:DWORD
strtoul proto C lpszBuf_OUT:DWORD ,lpszEndStrf_OUT:DWORD ,radix_IN:DWORD
itoa proto C dwValue_IN:DWORD,lpszString_IN:DWORD, radix_IN:DWORD
atoi  proto C lpszString_IN:DWORD
atof proto C lpszString_IN:DWORD
;atof 的值返回在浮点数的栈里(不知怎样说..),可以用fstp保存到变量
;d dq ?
;invoke atof,ctext("1224.5678")
;fstp d

;#################字符串函数################################################
strtok PROTO C lpszToken_IN:DWORD ,lpszDelimit_IN:DWORD
sprintf PROTO C lpszBuf_OUT:DWORD,lpszFormat_IN:DWORD,var_IN:VARARG
strrev proto C lpszString_INOUT:DWORD

strstr  proto C lpszString_IN:DWORD,lpszStrToFind_IN:DWORD
strrstr proto C lpszString_IN:DWORD,lpszStrToFind_IN:DWORD

strcspn proto C lpszString_IN:DWORD,lpszStrToFind_IN:DWORD
strpbrk proto C lpszString_IN:DWORD,lpszChartoFind_IN:DWORD
strchr  proto C lpszString_IN:DWORD,char_IN:DWORD
strrchr proto C lpszString_IN:DWORD,char_IN:DWORD
strlen  proto C lpszString_IN:DWORD

strcat  proto C lpszDest_OUT:DWORD,lpszSrc_IN:DWORD
strncat proto C lpszDest_OUT:DWORD,lpszSrc_IN:DWORD,count_IN:DWORD

strcmp  proto C lpszString1_IN:DWORD,lpszString1_IN:DWORD
strncmp proto C lpszString1_IN:DWORD,lpszString1_IN:DWORD,count_IN:DWORD
_strcmpi   proto C lpszString1_IN:DWORD,lpszString1_IN:DWORD
_strnicmp  proto C lpszString1_IN:DWORD,lpszString1_IN:DWORD,count_IN:DWORD

strncpy proto C lpszDest_OUT:DWORD,lpszSrc_IN:DWORD,count_IN:DWORD
strcpy  proto C lpszDest_OUT:DWORD,lpszSrc_IN:DWORD

_strset  proto C lpszString_IN:DWORD,char_IN:DWORD
_strnset proto C lpszString_IN:DWORD,char_IN:DWORD,count_IN:DWORD

;============================================================================
;#################内存相关函数################################################
;============================================================================
memset  proto C lpBuf_IN:DWORD,char_IN:DWORD,count_IN:DWORD
memchr  proto C lpBuf_IN:DWORD,char_IN:DWORD,count_IN:DWORD
memcmp  proto C lpBuf1_IN:DWORD,lpBuf2_IN:DWORD,count_IN:DWORD
memcpy  proto C lpBuf_OUT:DWORD,lpBuf_IN:DWORD,count_IN:DWORD
memccpy proto C lpBuf_OUT:DWORD,lpBuf_IN:DWORD,dwLastCharToCopy_IN:DWORD,count_IN:DWORD
;当遇到LastCharToCopy时则停止复制

memmove proto C lpBuf_OUT:DWORD,lpBuf_IN:DWORD,count_IN:DWORD
;可以解决2个缓冲区重叠

_swab   proto C lpBuf_IN:DWORD,lpBuf_OUT:DWORD,count_IN:DWORD
malloc  proto C size_IN:DWORD
realloc proto C lpBuf_IN:DWORD,size_IN:DWORD
calloc  proto C count_IN:DWORD,size_IN:DWORD
;invoke calloc,4,sizeof DWORD,申请16个字节的内存,并填充为NULL

_expand proto C lpBuf_IN:DWORD,size_IN:DWORD
_msize  proto C lpBuf_IN:DWORD
free    proto C lpBuf_IN:DWORD
;============================================================================
;#################文件操作################################################
;============================================================================
fopen PROTO C lpszFileName_IN:DWORD,lpszMode_IN:DWORD
_fcloseall proto C
fclose PROTO C hFile_IN:DWORD

fgetc proto C  hFile_IN:DWORD
fputc proto C  Char_IN:DWORD,hFile_IN:DWORD


fsetpos proto C  hFile_IN:DWORD,lpqwPos_IN:DWORD
fgetpos proto C  hFile_IN:DWORD,lpqwPos_OUT:DWORD
;lpqwPos是一个64位数的指针
;将指针移动到第三个字节
;fPos dq 3
;invoke fsetpos,hFile,addr fPos

fseek proto C hFile_IN:DWORD,dwOffset_IN:DWORD,dwMode_IN:DWORD
ftell proto C hFile_IN:DWORD


fread proto C lpBuf_OUT:DWORD,size_IN:DWORD,count_IN:DWORD,hFile_IN:DWORD
fwrite proto C lpBuf_OUT:DWORD,size_IN:DWORD,count_IN:DWORD,hFile_IN:DWORD
;size:类型的大小
;count:要读取的数量,实际的读取字节为size*count
;invoke fread,lpBuf,sizeof DWORD,5,hFile
;表示读取5个DWORD值(即20个字节)

fprintf proto C hFile_IN:DWORD,lpszFormat_IN:DWORD,var_IN:VARARG
fscanf proto C hFile_IN:DWORD,lpszFormat_IN:DWORD,var_OUT:VARARG
chsize proto C hFile_IN:DWORD,dwNewSize_IN:DWORD

;============================================================================
;##########################其他函数##########################################
;============================================================================
printf PROTO C lpszFormat_IN:DWORD,var_IN:VARARG
srand proto C nSeed_IN:DWORD
rand proto C
qsort proto C lpBuf_IN:DWORD,count_IN:DWORD,size_IN:DWORD,lpfnCompare:DWORD
bsearch proto C key_IN:DWORD,base_IN:DWORD,num_IN:DWORD,width_IN:DWORD ,lpfnCompare:DWORD
_lsearch proto C key_IN:DWORD,base_IN:DWORD,num_IN:DWORD,width_IN:DWORD ,lpfnCompare:DWORD
_lfind proto C key_IN:DWORD,base_IN:DWORD,num_IN:DWORD,width_IN:DWORD ,lpfnCompare:DWORD
;函数Compare也要用C调用方式

endif

在偶的masmplus 里有  要是想用别的  再往里加就是了
2008-08-02 13:06
toyix
Rank: 1
等 级:新手上路
帖 子:112
专家分:0
注 册:2008-7-14
收藏
得分:0 
谢谢     大家
2008-08-02 21:30
快速回复:win32中的输出
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016670 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved