![]() |
#2
东海一鱼2009-09-24 20:29
|

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
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
参照罗云彬的加\*.*方法