【问题标题】:MASM32 string comparsionMASM32 字符串比较
【发布时间】:2011-06-24 10:10:52
【问题描述】:

我编写了以下代码来比较两个字符串,一个是预定义的,另一个是用户的输入。但每次程序显示它们是不平等的。请帮助我。我正在使用 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


    【解决方案1】:

    我没有 MASM32 对 hand 的引用,但从内存中,StdIn 也会在控制台中按回车键获取回车+换行,这将反映在您读取的变量中。

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

    对于此类问题,我强烈推荐 OllyDbg,它可以让您单步执行代码并查看内存转储和堆栈。

    编辑:刚刚在 MASM32 论坛上发现了一个线程,该线程确切地展示了我所描述的内容(忽略这是一个错误报告,但对 StdIn 的指定行为的 hutch cmets):http://www.masm32.com/board/index.php?PHPSESSID=b98a1a56c52fdc4c07a2bca3553302e2&topic=51.0

    【讨论】:

    • 感谢您的回复,但我没有时间了解更多内容。请有人告诉我如何修复此代码以使其正常工作!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    相关资源
    最近更新 更多