Тема 17. Представлення інформації в полях назв, операцій, операндів та коментарів

Тема 16. Одно та двохпрохідний асемблери

Більшість асемблерів є двохпрохідними, так як для отримання правильного об’єктного коду вони здійснюють два перегляди початкової програми. Під час першого проходу асемблер створює таблицю символів та збирає всі імена, визначенні в програмі; під час другого проходу він транслює програму, використовуючи інформацію, що зібрана при першому проході. В загальному випадку символічні імена можуть бути визначені в будь-якому місці програми, оскільки в будь-якому випадку асемблер переглядає всю програму. Але програмісту буває зручно розміщати всі визначення на початку програми. Більшість двохпрохідних асемблерів тимчасово записують транслюєму програму на диск, так що повторне введення даних з зовнішнього носія не вимагається.

Крім двохпрохідних асемблерів часто використовуються однопрохідний асемблер, який працює швидше, так як повинен переглядати програму один раз. Але в однопрохідних асемблерах виникає проблема посилання вперед; часто такі посилання оброблює завантажувач. В загальному випадку однопрохідні асемблери задовольняють менше можливостей, ніж двохпрохідні. Крім того вони вносять додаткові обмеження на способи завдання адрес, використання імен, розподілення пам’яті або потребують більш складного завантаження, який виконує частину функцій асемблера в процесі завантаження програми в пам’ять.

 

 

Поле назв Поле операцій Поле операндів Поле коментарів
ABC@2: ADI 08h ;додавання безпосереднє

 

Поле назв призначено для запису символічного найменування оператору і використовується в двох випадках:

а) при організації символічних посилань на пойменовані оператори;

б) при ідентифікації елементів програми.

Якщо символічне ім’я в полі назв використовується для організації символічних посилань на пойменовані оператори, то воно називається міткою. Мітка містить від одного до 6 алфавітно-цифрових знаків (латинські букви від А до Z, цифри від 0 до 9 і символи ? та @), причому перший знак не повинен бути цифрою, і закінчується двокрапкою.

Поле операцій містить або мнемонічне ім’я машинної команди або ім’я псевдокоманди, або оператори макровизначення або макровиклику і відокремлюється одним або декількома проміжками.

В полі операндів визначені дані над якими буде виконана операція, або до яких буде застосована псевдокоманда. Це поле може бути вільним, визначати один або два операнда, що записані через кому. Якщо використовуються два операнда (при виконані команд передачі даних), перший зберігає результат виконання операції, а другий – вхідні дані.

Інформацію, що використовується в області операндів, можна представити регістрами; парами регістрів; безпосередньо даними; 16 – бітовими адресами. Вона може бути визначена за допомогою 16-х, 10-х, 8-х або 2-х даних; лічильника команд; рядка символів; імен, значення яких визначені псевдокомандами SET та EQU ; міток операторів; виразів; машинних команд.

16 – H, 10 – D або без букви; 8 – Q або O; 2 – B.

Адресне поле може бути визначене декількома способами:

1. Як число в шістнадцятковій, десятковій, вісімковій або в двійковій системі відліку.

2. З використанням поточного значення лічильника адреси.

3. Рядком символів в коді ASCII.

4. За допомогою символічних імен.

5. З використанням арифметичних або логічних виразів.