Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MASM32字符串比较_Masm32 - Fatal编程技术网

MASM32字符串比较

MASM32字符串比较,masm32,Masm32,我已经编写了以下代码来比较两个字符串,一个是预定义的,另一个作为用户的输入。但每次节目都显示他们是不平等的。请帮助我。我正在使用MASM32汇编程序 .data msg1 db '***Welcome to My Program***',13,10,0 msg2 db 'Please Enter a Product: ',0 msg3 db 'You Entered Shoes: ',0 p1 db 'Shoes',0 .data? product db 100 dup(?) .code s

我已经编写了以下代码来比较两个字符串,一个是预定义的,另一个作为用户的输入。但每次节目都显示他们是不平等的。请帮助我。我正在使用MASM32汇编程序

.data
msg1 db '***Welcome to My Program***',13,10,0
msg2 db 'Please Enter a Product: ',0
msg3 db 'You Entered Shoes: ',0
p1 db 'Shoes',0

.data?
product db 100 dup(?)
.code

start:
invoke StdOut,ADDR msg1
invoke StdOut,ADDR msg2
invoke StdIn,ADDR product,100 ; receive text input

lea    esi, p1          ; Load the buffer start address
lea    edi, product     ; Load the save buffer start address
mov    ecx, 10          ; Load the operation count
repe   cmpsb            ; Compare the byte into the buffer
jne Terminate
invoke StdOut,ADDR msg3

Terminate:
invoke ExitProcess,0
END start

我手头没有MASM32引用,但从内存中,StdIn还将从控制台中点击enter键获取回车+换行符,这将反映在您读取到的变量中

MASM32有一个名为StripLF的内置函数或类似的函数来处理这个问题。然后比较应该通过

对于像这样的问题,我强烈建议使用OllyDbg,它可以让您单步执行代码并查看内存转储和堆栈


编辑:刚刚在MASM32论坛上找到一个帖子,正好演示了我所描述的内容(忽略一个事实,这是一个bug报告,但是hutch对StdIn指定行为的评论):

感谢您的回复,但我没有时间了解更多信息。请有人告诉我如何修复此代码,以便它将工作!