Пример 2.1. Исходные данные находятся в ОЗУ по адресам $ 90.$ 94. Произвольные значения чисел должны быть занесены в эти ячейки под управлением программы. Затем эти числа должны быть перемещены в другую область ОЗУ по адресам $A0.$A4.
Для начала решим задачу самым простым методом, используя непосредственную и прямую адресацию.
RamStart EQU $ 0000; Назначается адрес для первой ячейки ОЗУ.
RomStart EQU $E000; Назначается начальный адрес прикладной программы.
StartVector EQU $FFFE ;Назначается адрес для вектора начального запуска.
INITRG EQU $ 0011 ;Назначается адрес регистра, отвечающего за; начальный адрес области регистров специальных; функций.
С помощью команд EQU именам присваиваются; значения. По сути это всё-таки псевдокоманды, т.к. они не выполняют реальных действий в программе.
ORG RomStart.
EX2_11: LDAA #$ 08; Установка начального адреса области регистров STAA INITRG; специальных функций в $ 0800.
LDAA #$ 40 Загрузить в аккумулятор A число $ 40. Использована; непосредственная адресация.
STAA $ 90;Переместить число из A в ячейку памяти с адресом; $ 90. Использована прямая адресация.
LDAA #$ 29.
STAA $ 91.
LDAA #29.
STAA $ 92.
LDAA #%1 010 011.
STAA $ 93.
LDAA #$AC.
STAA $ 94 Загрузка ячеек ОЗУ начальными значениями; закончена. Приступим к перемещению данных из одной области памяти в другую.
LDAB $ 90; Загрузить данные из ячейки $ 90 в аккумулятор B.
STAB $A0; Загрузить данные из B в ячейку памяти с адресом $A0.
LDAB $ 91.
STAB $A1.
LDAB $ 92.
STAB $A2.
LDAB $ 93.
STAB $A3.
LDAB $ 94.
STAB $A4.
JMP *; Бесконечный переход по адресу текущей команды.
ORG StartVector.
DC.W EX2_11.
Рисунок 5. Построение программы с помощью языка ассемблера.
Рисунок 6. Построение программы с помощью языка ассемблера алгебра математический проектирование.