Основи роботи в internet



бет49/54
Дата18.09.2022
өлшемі3,18 Mb.
#149849
түріЛабораторна робота
1   ...   46   47   48   49   50   51   52   53   54
Байланысты:
Архітектура ПК - Крупельницький (практикум)
Аралық ХАӘ

Обробка помилок


Компілятор виводить звіт про помилки в окремому вікні (рис. 4.14).

Рисунок 4.14 – Звіт про помилки компілятора


MOV DS, 100 – це неприпустима команда, тому що в сегментному регістрі не можна встановлювати безпосереднє значення – мають використовуватися регістри загального призначення:


MOV AX, 100 MOV DS, AX MOV AL, 300 – це неприпустима команда, оскільки регістр AL має тільки 8 бітів, і його максимальне значення 255 (або 11111111b), а мінімальне – 128.
Компілятор робить кілька проходів перед генерацією правильного машинного коду. Якщо він знаходить помилку і не виконує необхідну кількість проходів, він може видати неправильне повідомлення про помилку. Наприклад:
# Make_COM # ORG 100h MOV AX, 0
MOV CX, 5 m1: INC AX
LOOP m1; це не справжня помилка! MOV AL, 0FFFFh; помилка тут.
RET
Список генерування помилок:
(7) Condition Jump out of range (Умова переходу за межами діапазону)!: LOOP m1 (9) Wrong parameters (Неправильні параметри): MOV AL, 0FFFFh (9) Operands do not match (Операнди не відповідають): Second operand is over 8 bits (Другий операнд більше 8 бітів)! Перше повідомлення (7) – неправильне. Компілятор не закінчив обчислення зміщень для міток, тому він думає, що зміщення мітки m1 – це 0000. Ця адреса лежить за межами діапазону, тому що ми починаємо зі зсуву 100h.
Внесіть виправлення в цей рядок: MOV AL, 0FFFFh (AL не може містити значення 0FFFFh). Це усуне обидві помилки! Наприклад:
# Make_COM # ORG 100h MOV AX, 0
MOV CX, 5 m1: INC AX
LOOP m1; той же самий код без помилок! MOV AL, 0FFh; все!
RET
При збереженні файлу, який компілюється, компілятор також зберігає
2 інших файли, які використовуються емулятором для відображення фактичного вихідного коду при його виконанні і виборі відповідного рядка.
asm – цей файл містить оригінальний вихідний код, який був використаний для створення виконуваного файлу.
debug – цей файл містить інформацію, яка дозволяє емулятору вибирати рядки оригінального вихідного коду під час виконання машинного коду.
symbol – таблиця символів. Вона містить інформацію, яка дозволяє відображати вікно «Variables» (Змінні). Це текстовий файл, так що ви можете подивитися його з текстового редактора.
binf – цей файл містить інформацію, яка використовується емулятором для завантаження BIN-файлу у вказане місце розташування та встановлення значень регістрів попереднього виконання (створюється лише у тому випадку, якщо виконуваний файл – це BIN-файл).




Достарыңызбен бөлісу:
1   ...   46   47   48   49   50   51   52   53   54




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет