Переменная цикла массива ecx (-1) - PullRequest
0 голосов
/ 02 декабря 2018

Я хочу сосчитать числа, равные 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

1 Ответ

0 голосов
/ 02 декабря 2018

Вы программируете для 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...