masm32 求字符串长度

    学习写windows下的汇编程序,自己琢磨出来的练习例子。代码如下:

 .386 .model flat,stdcall option casemap:none include windows.inc include user32.inc includelib user32.lib include kernel32.inc includelib kernel32.lib .DATA szCaption db "提示",0 szText db "我想知道自己的长度Length(非Unicode方式).",0 szFormat db 'szText字符串的长度是%d',0 szReturn db 8 dup(?) .CODE start: push esi push offset szText pop esi ;将要求长度的字符串地址存入ESI xor ecx,ecx ;ECX清零,用以计数 @@: lodsb ;从esi 指向的源地址中逐一读取一个字符,送入AL中,ESI=ESI+1 or al,al ;判断AL中的字符是否为0,字符串以0结束 jz @f ;after 向下第一个@@:跳 inc ecx ;ECX计数器加1 jmp @b ;before 向上第一个@@:跳,即装载下一个字符 @@: mov eax,ecx ;将字符串长度结果转存到EAX pop esi invoke wsprintf,addr szReturn,addr szFormat,eax ;数值转换为字符串,结果存在szReturn invoke MessageBox,NULL,addr szReturn,addr szCaption,MB_OK ;显示结果 invoke ExitProcess, eax ;退出程序 end start   

你可能感兴趣的:(windows,汇编,user,null,include)