注册 登录
编程论坛 汇编论坛

程序所在目录的路径 。有别的方法么?

onepc 发布于 2009-09-24 18:29, 596 次点击
程序代码:
push esi ;保存esi
mov esi,offset szFpname ;mov 里不能用addr
invoke lstrlen,addr szFpname ;计算长度
add esi,eax   ;esi指向szFpname的第一个字符的地址,esi=esi+eax 这时esi指向路径的最后一个字符地址
mov al,'\'
.while TRUE
  .break .if byte ptr [esi-1]==al  ;esi指向的位置一遇到\就退出循环
dec esi
.endw
xor eax,eax ;把eax置0
mov word ptr [esi-1],ax   ;esi-1,及后一个字节为0 这样别的api函数就会戴断。得到所需的
invoke MessageBox,NULL,addr szFpname,CTXT("path"),0
pop esi

参照罗云彬的加\*.*方法
3 回复
#2
东海一鱼2009-09-24 20:29
更低的可以用

repnz scansb


更高的可以用

char *strrchr(char *str, char c)
#3
onepc2009-09-25 07:49
以下是引用东海一鱼在2009-9-24 20:29:54的发言:

更低的可以用

repnz scansb


更高的可以用

char *strrchr(char *str, char c)
char 这个是C函数么?
加入C的入栈方式就OK么??
#4
东海一鱼2009-09-25 08:13
是的,它是ANSI C库函数

函数作用:查找一个字符串在另一个字符串中末次出现的位置,并返回字符串中的这个位置指针。
1