取文本长度repne scasb练习两个命令用法

易语言 2020-09-04 23:14:14

取文本长度repne scasb练习两个命令用法

' xor eax,eax eax清零 这里要用到al 清零后al=0
' mov edi, dword [ebp+0x08] 取文本地址
' mov edi, dword [edi] 取文本地址
' test edi,edi 判断变量是否为空
' je lab 如果传递的变量为空跳出 结束
' mov ecx,-1 这里ecx用来计次用每比较一次减去1,这里初始值是-1 因为如果是0的话就结束循环所以不能填0
' repne scasb 这里比较edi指向的文本每次取一个字节来和al做比较 这里 al始终是0 因为文本最后一个字符是0 所以遇到0文本就结束了
' mov eax,-2 汇编是从0开始 而易语言文本长度是从1开始 所以给eax个 -2 初始值
' sub eax, ecx ecx判断结束的值是负数也就是文本到结束的长度 eax -2 - ecx 负负得正后就是文本实际长度
' lab:
' leave 堆栈平衡下
' retn 0x04 返回4个字节整数数据