为什么在调试模式下ecx等于0时循环不会停止?

时间:2018-04-07 17:32:33

标签: assembly masm

我的汇编程序在调试模式下表现得很奇怪。我正在使用Visual Studio 2017来运行循环,当ecx等于0时,我希望它会中断。但是,在调试模式下,循环在等于0后继续递减ecx。我尝试了许多不同的值对ecx而言,结果是一样的。当我在没有调试的情况下运行程序时,循环工作正常。非常感谢让我的程序在调试模式下工作的任何提示。

Include Irvine32.inc

.data
edward BYTE "edward cox",0
array BYTE 0,1
dat BYTE ?
.code

main proc
    call ReadChar
    sub eax,48 ; convert char to int
    mov ecx, eax
    sub ecx, 1 ; loop will run ecx-1 times
    mov bl, 2 ; next value in fib sequence
    L1: ; continues looping after ecx = 0
        loop L1
    mov edx, OFFSET edward
    call WriteString
    call crlf
    invoke ExitProcess,0
main endp
end main

1 个答案:

答案 0 :(得分:-2)

如果在调试期间遇到问题,但在执行期间没有问题,可能应该尝试使用gdb,它很有用且易于使用。