+ -
当前位置:首页 → 问答吧 → Win32汇编时如何实现字符串比较

Win32汇编时如何实现字符串比较

时间:2007-11-13

来源:互联网

在Win32汇编中,用两个变量保存两个字符串,,想比较他们是否相等,,不知如何实现。。请高手指教!!先谢谢了

作者: MFCbird   发布时间: 2007-11-13

用循环逐个比较字符串的每个字符的ascall码

作者: rumy_walking   发布时间: 2007-11-13

只有这种方法么?

作者: MFCbird   发布时间: 2007-11-13

还可以用CMPSB指令,重复前缀用REPE,但是在使用CMPSB指令前,必须知道较长字符串的长度.

具体要求LZ看一下INTEL汇编语言程序设计(第四版)这本书的第9章

初学不对之处请原谅!!

作者: dongyi940333   发布时间: 2007-11-13

win32 中还可以调用现成库中的函数,比如 lstrcmp 等等。

作者: mydo   发布时间: 2007-11-13

是strcmp还是lstrcmp??需要Include什么文件??

作者: MFCbird   发布时间: 2007-11-14

UP

哪个库?想知道

作者: alan001   发布时间: 2007-11-14

kernel32.inc

作者: mydo   发布时间: 2007-11-14

invoke GetDlgItemText, hWnd, IDC_NUM, offset szGetNum, 5
invoke lstrcmp, offset szNum, offset szGetNum
.if eax == 0
invoke MessageBox, NULL, offset szMBFace, offset szGetNum, MB_OK
.endif

原意是从ID为IDC_NUM的edit ctrl控件中获取文本,存放在szGetNum中,再与已知的字符串szNum比较。相等就弹出MessageBox。但为什么上面的句子不能达到目的啊??
希望高手指教哦。。。。。

作者: MFCbird   发布时间: 2007-11-14

C/C++ code

invoke lstrcmp,addr strtemp,addr lpSet
   .if eax>=NULL
   invoke SetWindowText,hCtrl,addr lpQuit 
   .elseif eax<NULL
   invoke SetWindowText,hCtrl,addr lpSet
   .endif


郁闷,没有效果

作者: Jay_16   发布时间: 2011-03-22

引用 9 楼 jay_16 的回复:
C/C++ code

invoke lstrcmp,addr strtemp,addr lpSet
.if eax>=NULL
invoke SetWindowText,hCtrl,addr lpQuit
.elseif eax<NULL
invoke SetWindowText,hCtrl,addr lpSet
.endif


郁闷,没有效……

C/C++ code

 invoke lstrcmp,addr strtemp,addr lpSet
   .if eax==NULL
   invoke SetWindowText,hCtrl,addr lpQuit 
   .else
   invoke SetWindowText,hCtrl,addr lpSet
   .endif


解决了,只能等呀!呜呜,费了好大劲...才发现,太悲哀了

作者: Jay_16   发布时间: 2011-03-22

看着跟C似的~

作者: masmaster   发布时间: 2011-03-22