A0 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40@@@@@@@@@@@@@@
B0 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40@@@@@@@@@@@@@@
C0 40 40 40 40 40 40 40 40 45 58 30 34 40 40 40 40@@@@@@EX04@@
D0 02 54 58 54 40 00 00 20 40 40 00 04 40 40 00 01 TXT @@@@@
E0 00 00 00 0C 50 00 40 40 40 40 40 40 40 40 40 40P@@@@@@@@
F0 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40@@@@@@@@@@@@@@
40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40@@@@@@@@@@@@@@
40 40 40 40 40 40 40 40 45 58 30 34 40 40 40 40@@@@@@EX04@@
02 54 58 54 40 00 00 24 40 40 00 04 40 40 00 01 TXT @ $@@@@
00 00 00 00 50 00 40 40 40 40 40 40 40 40 40 40P@@@@@@@@
40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40@@@@@@@@@@@@@@
40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40@@@@@@@@@@@@@@
40 40 40 40 40 40 40 40 45 58 30 34 40 40 40 40@@@@@@EX04@@
02 45 4E 44 40 40 40 40 40 40 40 40 40 40 40 40 END@@@@@@@@@@
00000380 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40@@@@@@@@@@@@@@
40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40@@@@@@@@@@@@@@
A0 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40@@@@@@@@@@@@@@
B0 40 40 40 40 40 40 40 40 45 58 30 34 40 40 40 40@@@@@@EX04@@
На виході покрокове виконання інструкцій програми з відображенням поточної команди, значенням регістрів і пам'яті програми:
Рис. 2 Висновок завантажувача
компілятор програмування асемблер
Аналіз поставленого завдання
У вхідному файлі з'явилися дві нові команди, невідомі для завантажувача, це команди LA з кодом 0x41 і MVN з кодом 0xD1. Розглянемо формат байт-коду цих команд:
. Команда LA:
· має розмір 4 байта
· тип RX
· формат:
де
· 0x41 - код команди
· R1 містить номер регістра РОН, в який буде записаний результат роботи команди
· X2 містить номер регістра РОН, що використовується в якості індексу
· B2 містить номер регістра РОН, що використовується для зберігання адреси в пам'яті, що містить дані
· D2 являє зсув щодо базової адреси, що міститься в регістрі загального призначення
. Команда MVN:
· має розмір 6 байт
· тип SS (Storage- Storage)
· формат:
де:
· 0xD1 - код команди
· B1, B2 містять номер регістра РОН, що використовується для зберігання адреси в пам'яті, що містить дані першого і другого операндів відповідно
· D1, D2 являє зсув щодо базової адреси, що міститься в регістрі загального призначення для першого і другого операндів відповідно
Решта команд вихідний завантажувач вже підтримує.
Обмеження
· Емулятор команди MVN підтримує дані довжиною тільки 3 байта;
· Обмеження стосуються завантаження TXT-карт. Підтримується завантаження тільки однієї команди на карті. Тобто на TXT-карті може бути тільки одна команда довжиною 2, 4 або 6 байт;
· Завантажувач може завантажувати тільки одну програму;
· Підтримуються програми максимальною довжиною в 50 карт;
Модифікація бази даних вихідного макета
У таблицю машинних операцій (TMOP) були додані нові команди LA і MVN.
Модифікація алгоритму вихідного макета
У емулятор додані програми реалізації семантики команд LA і MVN.
У завантажувач додані функції завантаження 6ти-байтових команд за аналогією обробки 2ух і 4ех-байтових команд.
В результаті проведеної роботи, модифікований завантажувач отримав нову функціональність, яка дозволяє впоратися з поставленим завданням.
Плюси даної реалізації:
· Підтримка нових команд: LA і MVN;
· Завантажувач підтримує 6ти-байтові команди;
Мінуси даної реалізації:
· Емулятор для команди MVN підтримує дані довжиною тільки 3 байта;
· Підтримується завантаження тільки однієї команди на TXT-карті;
· Завантажувач може завантажув...