win32汇编问题
请大家看一下下面的代码段(假设 szOk,Num 在数据段也定义)
invoke MessageBox,NULL,addr szOk,addr szOk,4
mov Num,eax
invoke MessageBox,NULL,addr Num,addr Num,1
本来我是想看看第一函数调用的返回值,在win32汇编一切函数的返回值都存在eax中
我在用MessageBox显示它。为什么结果是一些字符了!请问我错在什么地方啦!
问题点数:50、回复次数:3Top
1 楼zara(Kyrie eleison)回复于 2005-06-01 22:41:04 得分 25
是要将 Num 转换为字符串格式再显示的:
.const
szFmt_d db '%d', 0
...
local cBuf[32]:BYTE
invoke MessageBox,NULL,addr szOk,addr szOk,4
invoke wsprintf, ADDR cBuf, ADDR szFmt_d, eax
invoke MessageBox,NULL,addr cBuf,addr cBuf,1Top
2 楼hitetoshi(绝影)回复于 2005-06-01 22:45:01 得分 25
eax返回是一个DWORD类型,但是你明显希望看到一个ASCII类型的。做法是先把eax的整形转换为字符串,再用MessageBox输出。
szFormat db '%d',0
szReturn db 8 dup(?)
...
invoke MessageBox,NULL,addr szOk,addr szOk,4
mov Num,eax
invoke wsprintf,addr szReturn,addr szFormat,Num
invoke MessageBox,NULL,addr szReturn,addr szReturn,MB_OK
Top
3 楼mblzds(想学但人又懒)回复于 2005-06-02 12:21:13 得分 0
原来是这样啦是不是要使用wsprintf转换类型,调试通过啦!谢谢楼上二位的帮助!!!Top




