Логотип Автор24реферат
Задать вопрос
%
уникальность
не проверялась
Решение задач на тему:

Составить макроопределение для задания Для проведения отладки макрокоманды составить программу

уникальность
не проверялась
Аа
1866 символов
Категория
Программирование
Решение задач
Составить макроопределение для задания Для проведения отладки макрокоманды составить программу .pdf

Зарегистрируйся в 2 клика в Кампус и получи неограниченный доступ к материалам с подпиской Кампус+ 🔥

Условие

Составить макроопределение для задания. Для проведения отладки макрокоманды составить программу, включающую макрообращение. Макрокоманда, аналогичная оператору IF в языке PL/M. Eсли Х больше Y, то Z присваивается значение Х, в противном случае Z присваивается значение Y. Параметрами могут быть не только константы, но регистры, ячейки памяти, прямо или косвенно адресуемые.

Решение

Потяни, чтобы посмотреть
Разработаем макрокоманду для работы с 16-разрядными аргументами. В качестве X и Y могут выступать: регистры: AX, BX, CX, DX, SI, DI, BP, SP; прямо адресуемые ячейки памяти; косвенно адресуемые ячейки памяти (через регистры BX, BP, SI, DI – это обусловлено системой команд i8086); а также константы. Параметром Z может выступать аналогично X и Y, кроме констант.
Текст макрокоманды
; макрокоманда
ifm macro x, y, z
local mge1, mge2
ifidni <y>, <ax>
cmp ax, x; сравнить y и x
jge mge1; переход, если y > x
mov ax, x; иначе, AX = x
mge1:
mov z, ax; запись результата
else
mov ax, x; AX = x
cmp ax, y; сравнить x и y
jge mge2; переход, если x > y
mov ax, y; иначе AX = y
mge2:
mov z, ax; запись результата
endif
endm
Фрагмент листинга программы
34 ; 1-й вызов макрокоманды
35ifm op1, 40, max
1 360005 A1 0002rmov ax, op1 ; AX = op1
1 370008 3D 0028cmp ax, 40 ; сравнитьop1 и 40
1 38000B 7D 03jge ??0001 ; переход,если op1 > 40
1 39000D B8 0028mov ax, 40 ; иначе AX= 40
1 400010??0001:
1 410010 A3 0000rmov max, ax ; запись результата
42
430013 BE 0002rlea si, op1 ; SI = адрес операнда 1
44; 2-й вызов макрокоманды
45ifm [si], ax, bx
1 460016 3B 04cmp ax, [si] ; сравнитьax и [si]
1 470018 7D 02jge ??0002 ; переход, если ax > [si]
1 48001A 8B 04mov ax, [si] ; иначе, AX = [si]
1 49001C??0002:
1 50001C 8B D8mov bx, ax ; запись результата
50% задачи недоступно для прочтения
Переходи в Кампус, регистрируйся и получай полное решение
Получить задачу
Больше решений задач по программированию:
Все Решенные задачи по программированию
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач