[tasm] Найти в двухмерном массиве количество появлений заданного числа - Assembler

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Помогите, пожалуйста, дописать программу поиска в небольшом двухмерном массиве (2 на 3) количества появлений заданного числа (например - 5). Вот код программы:
; cx - счетчик числа повторений
; al - искомое число появлений
; bx - индексный регистр для изменения строк
; si - индексный регистр для изменения элементов в строке
 
.model      tiny                        ; модель памяти, используемая для COM
.code                                   ; начало сегмента кода
            org     100h                ; начальное значение счетчика - 100h
 
start:      mov     al, 0               ; обнуление счетчика появлений
            mov     cx, 2               ; число повторений внешнего цикла
            mov     bx, 0               ; начальный индекс по строкам
label_1:    mov     dx, cx              ; сохранить внешний счетчик в регистре dx
            mov     cx, 3               ; внутренний счетчик по строке
            mov     si, 0               ; начальный индекс элемента в строке
label_2:    cmp     M2D[bx][si], 5      ; сравнение M2D[i,j] с 5
            jne     label_3             ; обход совпадения
            inc     al                  ; увеличение счетчика появлений
label_3:    add     si, 2               ; увеличение индекса элемента в строке
            loop    label_2             ; внутренний цикл
            mov     cx, dx              ; восстановление внешнего счетчика
            add     bx, 6               ; bx=(bx)+2*3, т.е. переход к следующей строке
            loop    label_1             ; внешний цикл
        
            ret                         ; завершение COM программы
 
M2D         dw      2 dup (3 dup (?))   ; задаем небольшой двухмерный массив 2 на 3
 
            end     start               ; конец программы
Думаю, что сделал неправильно тут:
            add     bx, 6               ; bx=(bx)+2*3, т.е. переход к следующей строке

Решение задачи: «[tasm] Найти в двухмерном массиве количество появлений заданного числа»

textual
Листинг программы
M2D     dw      3, 6, 5, 8, 9, 5    ; задаем небольшой двухмерный массив 2 на 3

Объяснение кода листинга программы

Вот список действий, которые выполняются в этом коде:

  1. Создание двухмерного массива M2D: Переменная M2D объявлена как двухмерный массив 2 на 3. Значения массива: 3, 6, 5, 8, 9, 5.
    • M2D: [3, 6, 5], [5, 8, 9], [5]
  2. Инициализация счётчика: Переменная Counter инициализируется значением 0. Она будет использоваться для подсчета количества появлений заданного числа.
    • Counter: 0
  3. Заданное число: Переменная Key задается значением 5.
    • Key: 5
  4. Цикл по двум измерениям массива M2D: Переменные X и Y инициализируются значениями 0 и 1 соответственно. Цикл выполняется, пока X меньше 2 и Y меньше 3.
    • X: 0, Y: 1
  5. Проверка элемента массива M2D: Выполняется проверка, равен ли элемент массива M2D по индексам (X, Y) заданному числу Key. Если это так, значение счётчика Counter увеличивается на 1.
    • Элемент M2D по индексам (X, Y): 5
    • Counter: 1
  6. Увеличение индексов X и Y: Значения X и Y увеличиваются на 1.
    • X: 1, Y: 2
  7. Выход из цикла: Цикл завершается, когда X становится больше или равным 2 или Y становится больше или равным 3.
  8. Вывод результата: Значение счётчика Counter выводится на экран.
    • Counter: 1 В результате выполнения этого кода на экран будет выведено число 1, так как заданное число 5 встречается в массиве M2D только один раз.

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

Оцени полезность:

14   голосов , оценка 3.786 из 5
Похожие ответы