Отладку программы проводите с помощью отладчика td.exe.
Пример 1. Определить, сколько раз заданный элемент elem встречается в двумерном массиве A(2, 5). Значения элементов массива задать в теле программы. Значение искомого элемента ввести с клавиатуры. Результат поиска вывести на экран монитора.
;Программа вводит элементы массива с клавиатуры и ;выводит на экран
;---
;---
model small
.data
;матрица размером 2x5 - если ее
;не инициализировать.
;то для наглядности она может быть описана так:
;array dw 2 DUP (5 DUP (?))
;но мы ее инициализируем:
array dw 1, 2, 3, 3, 5, 6, 7, 3, 9, 8
;логически это будет выглядеть так:
;аггау = (1, 2)
; (3, 3)
; (5, 6)
; (7, 3)
; (9, 8)
size_elem = 2 ;размер элемента
;(константа)
elem dw ? ;элемент для поиска
el db 0ah,0dh,'Введите элеменот для поиска ->', '$'
failed db 0ah,0dh,'Heт такого элемента в массиве!', '$'
success db 0ah, 0dh, 'Такой элемент в массиве
присутствует ', '$'
foundtime db ? ;количество найденных
;элементов
fnd db ' раз(а)', 0ah, 0dh, '$'
.stack 256h
.code
main proc
mov ax, @data
mov ds, ax
mov ah, 9h
lea dx, el
int 21h ;вывести предложение ввести ;элемент
mov ah, 01h ;функция ввода в al
;с клавиатуры
int 21h
sub al, 30h ;преобразование в символ
cbw ;преобразование в слово
mov elem, ax
xor ax, ax
mov si, 0 ;столбцы
mov bx, 0 ;строки
mov cx, 5 ;для цикла по строкам
external: ;внешний цикл по строкам
push cx
mov cx, 2 ;для цикла по столбцам
mov si,0
iternal: ;внутренний цикл по строкам
mov ax,array[bx][si] ;в ах первый (очередной) ;элемент матрицы
add si,size_elem ;передвижение на следующий ;элемент в строке
;сравниваем содержимое
;текущего элемента в ах
;с искомым элементом
cmp ax, elem
;если текущий совпал с искомым, то переход на него ;для обработки,
;иначе - цикл продолжения поиска
jne $+6
inc foundtime ;увеличиваем счетчик
;совпавших
loop iternal
move_next: ;продвижение в матрице
pop cx ;восстанавливаем СХ из
;стека (5)
add bx, size_elem*2 ;передвигаемся на следующую ;строку
loop external ;цикл (внешний)
cmp foundtime, 0 ;сравнение числа совпавших ja eql ;если больше 0, то переход