Page 198 - 149
P. 198
TITLE (заголовок), яка викликає перехід на наступну сторінку з друком
зверху сторінки заголовку програми, введеного програмістом.
9.3 Макрокоманди
При програмуванні виникає ситуація, коли деяка група команд, з
невеликими модифікаціями повторюється в програмі декілька разів. Цю
групу команд допускається виділити один раз як велику команду-
макрокоманду з своєю мнемонікою, яка не входить в систему команд МП.
Всякий раз програма-асемблер замінює її ланцюжком команд означених
макрокомандою.
Розглянемо загальні засади використання макрокоманд на простих
прикладах. Нехай в прикладній програмі декілька разів треба передати вміст
регістра (D,E) в покажчик стеку SP. Однією командою це здійснити
неможливо, оскільки в системі команд МП така команда відсутня. Необхідна
передача реалізується ланцюжком команд XCHG,SPHL,XCHG. Визначимо
приведену послідовність команд як макрокоманду з мнемонікою SPDE:
Мітка Код Операнд Коментар
SPDE MACRO ; Макрокоманда SPDE
XCHG ; передає вміст (D,E)
SPHL ; в покажчик стеку
XCHG
ENDM
***
SPDE ; Передати із (D,E) в SP
***
SPDE ; Передати із (D,E) в SP
***
Підкреслимо, що означена мнемоніка SPDE фігурує в полі мітки, а
MACRO i ENDM є спеціальними директивами асемблера. Після означення
макрокоманду SPDE можна використовувати як звичайну команду,
розміщуючи її в полі мнемоніки.
Означимо далі макрокоманду SHV, яка зсуває вміст акумулятора
вправо з записом у вільні біти нулів.
Число зсувів міститься в регістрі D:
Мітка Код Операнд Коментар
SHV MACRO
LOOP: RRC ;Макрокоманди SHV простого
ANI 7FH ; зсуву
DCR D ; акумулятора вправо
JNZ LOOP ; Константа зсуву в
ENDM ; регістрі D
Наступний фрагмент показує використання даної макрокоманди для
зсуву вправо вмісту комірки ІТЕМ на три біти:
199