首页
社区
课程
招聘
汇编获取字符串长度这样对吗?
发表于: 2006-6-18 23:10 9397

汇编获取字符串长度这样对吗?

2006-6-18 23:10
9397
这是关键的部分代码
.data?
myl dd ?
enen db 20 dup(?)
.data
mystr db "abcd",0
.code
xor esi,esi
.WHILE mystr[esi] != 0
inc esi
.ENDW
mov myl,esi   ;这个myl就是字符串的长度对吗?
invoke dw2a,addr myl,addr enen
invoke MessageBox,NULL,addr enen,NULL,MB_OK
;这里我想用对话框弹出myl的值,我先用dw2a转换类型,然后弹出,但是弹出来
;的是很长一个数字4206608


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
2
呵呵,还是建议楼主多看看基础知识。
dw2a proc dwValue:DWORD, lpBuffer:DWORD

    ; -------------------------------------------------------------
    ; convert DWORD to ascii string
    ; dwValue is passed as a value, direct, indirect or in register
    ; lpBuffer is the ADDRESS of the receiving buffer
    ; EXAMPLE:
    ; invoke dw2a,edx,ADDR buffer
    ;
dw2a的第一个参数是要转换的数值,不是地址。第二个参数才是指向输出转换后的字符串地址。所以上面的调用你必须改成如下:
.data?
myl dd ?
enen db 20 dup(?)
.data
mystr db "abcd",0
.code
xor esi,esi
.WHILE mystr[esi] != 0
inc esi
.ENDW
mov myl,esi   ;这个myl就是字符串的长度对吗?
invoke dw2a,myl,addr enen
invoke MessageBox,NULL,addr enen,NULL,MB_OK
2006-6-19 11:35
0
雪    币: 221
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
3
非常感谢小虾版主给我讲解这些简单问题~~~~~~
我的书是DOS的,我只把在Win32里面用得到的看了
DOS、BIOS还有什么中断那些就一点也没看```
经常出错,可能是因为基础还不牢固吧,也不熟悉
Thank you very much...
2006-6-19 12:38
0
游客
登录 | 注册 方可回帖
返回
//