Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lekz._5.doc
Скачиваний:
1
Добавлен:
11.08.2019
Размер:
223.74 Кб
Скачать

Ключові моменти

  • Модель пам'яті вказує асемблеру, як використовувати сегменти, резервувати достатній простір для об'єктного коду та забезпечувати оптимальну швидкість виконання. Модель пам'яті може бути однією з наступних: Tiny, Small, Medium, Compact, Large, Huge, Flat.

  • Спрощені сегментні директиви генерують наступні імена: _DATA - для сегменту даних, STACK - для сегменту стека, і _ТЕХТ - для сегменту коду, а також кілька визначених еквівалентних імен.

  • В захищеному режимі всі програми працюють під управлінням Windows і використовують модель пам'яті Flat. Адресуючи сегменти 32-розрядними регістрами, можна використовувати до 4 Гбайт пам'яті.

  • Програма типу .СОМ завжди менша, ніж .ЕХЕ, що виконує аналогічні функції; одна з причин цього - наявність в програмі .ЕХЕ 512-байтного заголовка, відсутнього в програмах типу .СОМ.

  • Програма типу .СОМ обмежена одним сегментом розміром 64К. У програмі типу .СОМ не визначаються сегменти даних і стека і не ініціалізується регістр DS.

  • Програма, написана як .СОМ, вимагає наявності директиви ORG 100H відразу після речення SEGMENT в сегменті коду. Ця директива встановлює адресу зміщення на комірку, наступну відразу за PSP, і виконання програми починається з цієї комірки.

  • Система розміщує стек для програми .СОМ в кінці програми.

Питання для самоперевірки

1. Перепишіть програму із запитання 6 лекц. 4 з використанням спрощених сегментних директив. Відтранслюйте і скомпонуйте її, а потім порівняйте об'єктний код, таблиці символів і карти зв'язків цих двох програм. Використовуйте DEBUG для відстеження виконання програми та перегляду інструкцій і даних.

2. Перепишіть програму із запитання 7 лекц. 4 з використанням спрощених сегментних директив. Відтранслюйте і скомпонуйте її, а потім порівняйте об'єктний код, таблиці символів і карти зв'язків цих двох програм. Використовуйте DEBUG для тестування програми.

3. Який максимальний розмір програми типу .СОМ?

4. Які сегменти можна визначати для початкової програми, яка буде перетворена у формат .СОМ?

5. Поясніть, чому директива ORG 100H має бути присутня на початку сегменту коду програми, що підлягає перетворенню у формат .СОМ?

6. Чому необов'язково визначати стек в програмі типу .СОМ?

7. Перепишіть програму із запитання 7 лекц. 4 з використанням стандартних сегментних директив у формат .СОМ. Оттрансліруйте її, Скомпонуйте, перетворення у формат. СОМ і виконайте під управлінням DEBUG.

8. Перепишіть програму із запитання 2 з використанням стандартних сегментних директив у формат. СОМ. Відтранслюйте її, скомпонуйте, перетворіть у формат .СОМ і виконайте під управлінням DEBUG.

9. Наступна програма містить ряд помилок періоду трансляції, як показують коментарі справа. Виправте кожну помилку.

TITLE A05ASM2 (EXE) Program errors

.MODEL SMALL

.STACK 64

.DATA

DATA1 DB 25

DATA2 DB 280 ;1: Значення виходить за припустимі межі

DATA3 DW?

.CODE

MAIN PROC

MOV AX, data ;2: Неправильний тип операнда

MOV DS, AX

MOV AX, DATA1 ;3: Типи операндів повинні співпадати

ADD AX, DATA2 ;4: Типи операндів повинні співпадати

MOV DATA3, AX

MOV FX, 4C00H ;5: Символ не визначено

INT 21H

MAIN ENDP

END MAIN

Асемблер не виявив ще одну помилку, пов'язану з реченням MAIN PROC. У чому вона полягає?

11

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]