Описать близкую процедуру 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