Описать близкую процедуру F(X, N, P) - Assembler

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

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

Здравствуйте. Помогите, пожалуйста, решить задачу на Assembler. Описать близкую процедуру F(X, N, P), определяющую, сколько элементов мас- сива X из N байтов равно байту P, и возвращающую результат через регистр AL. Использовать эту процедуру для вычисления K ? F(A, 70, F(B, 30, K)) где A – массив из 70 байтов, B – массив из 30 байтов, а K – байтовая пере- менная. Выполнить это упражнение при условии, что параметры передаются переменной через регистры. Поиском пользовался, нашел только решение с передачей через стек.

Решение задачи: «Описать близкую процедуру F(X, N, P)»

textual
Листинг программы
pop dx  ; по выходу из процедуры выравниваем стек выталкивая из него загруженные перед процедурой параметры (третий)
pop dx  ;  (второй)
pop dx  ;  (первый)
 
lea dx,a ; адрес начала массива как первый параметр 
push dx ; в стек
mov dx,70 ; размер массива 
push dx 
push ax ; используемый ранее как счётчик совпадений этот регистр теперь выступает как код заданного символа
call num_eq 
pop dx  ; по выходу из процедуры выравниваем стек выталкивая из него загруженные перед процедурой параметры (третий)
pop dx  ;  (второй)
pop dx  ;  (первый)
 
 
outword ax ; количество символов второго массива 
; совпавших по значению с числом совпавших символов первого массива которые в свою очередь совпали с заданным байтом
 
 
 
MOV AX, 4C00h; 
INT 21h ;End Program
 
code ends
 
end start

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

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