我想计算为0的数字。
MASM错误:
循环变量
ecx
(-1)。
使用ollydb。
请帮助。为什么不起作用?
.586
.model flat, stdcall
extern ExitProcess@4:near
includelib c:\masm32\lib\user32.lib
includelib C:\masm32\lib\kernel32.lib
data segment
mas db 1,0,9,8,0,7,8,0,2,0
rez db 0
data ends
text segment
start:
mov cx, 10
xor ax, ax
xor si, si
jcxz exit
cycl:
cmp mas[si], 0
jne m1
inc al
m1:
inc si
loop cycl
mov rez,al
exit:
push 0
call ExitProcess@4
text ends
end start
答案 0 :(得分:0)
您正在为32位编程!
LOOP
指令将使用ECX
寄存器,,但是您仅初始化了CX
寄存器。会产生错误。
start:
mov ecx, 10
mov al, 0
xor esi, esi
cycl:
cmp mas[esi], 0
jne m1
inc al
m1:
inc esi
loop cycl
mov rez,al