Ассемблерный код для поиска нулевых значений в массиве (с использованием emu8086) - PullRequest
0 голосов
/ 01 мая 2020

Я новичок здесь и полный новичок в сборке, так что, пожалуйста, имейте это в виду;)

Хорошо, в общем, мне представлен этот кусок кода сборки, который должен рассчитывать количество нулевых значений:

   MOV CX, 100h 
   MOV BX, 0000h 
   MOV SI, 200h 
Etq2 : CMP [SI], 0 
     JNZ Etq1 
     INC BX 
Etq1 : INC SI 
     DEC CX 
     JNZ Etq2 
     MOV [400], BX 
HLT 

Меня просят поместить следующие числа в массив (таблица?) [1,3,0,5,0,0,6,0,9,0 ] запустите код и передайте содержимое BX для проверки.

Я понимаю следующее: размер массива (таблицы) равен 100h. Он начинается с 200h. Результаты будут помещены в 400 ч.

Что я не получаю как мне ввести числа в массив? Я погуглил как сумасшедший, и я не могу сделать из этого ни головы, ни хвоста.

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 03 мая 2020

спасибо за понимание!

В итоге я сделал следующее:

org 100h

.data
array db 1,3,0,5,0,0,6,0,9,0

   .code
    MOV CX, 0Ah               ;10 is the size of the array I am given
    MOV BX,0000h 
    MOV SI, 200h
    LEA SI,array
Etq2:   
        CMP [SI], 0
JNE Etq1 
        INC BX 
Etq1:
        INC SI 
        DEC CX 
        JNE Etq2 
        MOV [400], BX 
        HLT

Мой BX оказался равным 5, что является правильным числом 0 в моем массиве ..

Я надеюсь, что учитель доволен этим! :)

Еще раз спасибо!

0 голосов
/ 02 мая 2020

Раньше я никогда не сталкивался с какой-либо сборкой x86, но у меня есть кое-какие знания об IBM Assembler, поэтому я ожидаю, что концепции более или менее совпадают.

Сначала я подумал, что вы захотите что-то вроде команды перемещения (MOV), которая будет хранить значения массива в последовательных ячейках памяти, начиная с первой позиции (200h, как вы указали).

Что-то вроде MOV SI,1 для первого числа и MOV SI+1,3 за второе число, et c. предполагая, что каждое из чисел массива имеет размер 1 байт.

Извините за множественные правки здесь, но я думаю, что я обернул голову вокруг этого сейчас.

...