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


Компіляція коду Асемблера



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

Компіляція коду Асемблера


Рисунок 4.12 – Код програми


Надрукуйте ваш код всередині тексту (див. рис. 4.12) та натисніть кнопку [Compile]. Вас запитають, де зберегти скомпільований файл. Після завершення компіляції ви можете натиснути кнопку [Emulate] для завантаження скомпільованого файлу в емулятор.
Директиви, що визначають тип виконуваного файлу: # MAKE_COM #
# MAKE_BIN #
# MAKE_BOOT # # MAKE_EXE #
Ви можете вставити ці директиви в вихідний код для визначення потрібного вам типу виконуваного файлу. У тому випадку, якщо компілятор не знайде жодної з цих директив, він запитає у вас тип файлу перед його створенням.
Опис типів файлів, які виконуються:
# MAKE_COM # – найстарший та найпростіший формат виконуваного файлу. Такі файли завантажуються з префіксом 100h (256 байтів). Виберіть СОМ Template з меню New, якщо ви плануєте компілювати COM-файл. Директива компілятора ORG 100h має бути додана перед кодом. Виконання завжди починається з першого байта файлу. Підтримується командним рядком DOS і Windows.
# MAKE_EXE # – більш «просунутий» формат виконуваного файлу. Не обмежені розмір і кількість сегментів. Сегмент стека має бути визначений в програмі. Ви можете вибрати EXE Template з меню New для створення простої ЕХЕ-програми з певними сегментами Даних, Стека і Коду. Точка входу (де починається виконання) визначається програмістом. Підтримується командним рядком DOS і Windows.
# MAKE_BIN # – простий виконуваний файл. Ви можете визначити значення всіх регістрів, сегмент і зсув для області пам’яті, куди цей файл буде завантажений. Якщо завантажити файл «MY.BIN» в емулятор, його буде «бачити» файл «MY. BINF», і завантажиться файл «MY.BIN» до розташування, визначеного в файлі «MY.BINF». Регістри також встановляться з урахуванням інформації з цього файлу (рис. 4.13) (відкрийте цей файл у редакторі для зміни або вивчення). У тому випадку, якщо емулятор не знайде файл «MY.BINF», будуть використовуватися поточні значення регістрів, і файл «MY.BIN» завантажиться в поточний CS: IP.
Виконання починається зі значення в CS: IP. Цей тип файлу унікальний для Emu8086.
Файл «MY. BINF» створюється автоматично компілятором, якщо він знаходить директиву # MAKE_BIN #.
Обережно! якщо файл «. binf» існує, то він буде перезаписаний!

Рисунок 4.13 – Регістри файлу MY.BINF


Значення мають бути шістнадцяткові! Якщо ці значення не визначені, то вони встановлюються за замовчуванням:


LOAD_SEGMENT = 0100 LOAD_OFFSET = 0000 CS = ES = SS = DS =
0100 IP = 0000 Якщо LOAD_SEGMENT і LOAD_OFFSET не визначені, то використовуються значення CS і IP, і навпаки.
Якщо значення Load to offset не дорівнює нулю (0000), то ORG???? h має бути додана в файл. BIN, де???? h – це зміщення для завантаження. Це має бути зроблено для того, щоб компілятор міг обчислити правильні адреси.
# MAKE_BOOT # – ця директива копіює першу доріжку дискети (завантажувальний сектор).
Ви можете записати завантажувальний сектор віртуального дисковода (FLOPPY_0) через меню емулятора:
[Virtual Drive] -> [Write 512 bytes at 7C00 to Boot Sector] Спочатку ви маєте скомпілювати «. Boot»-файл, а потім завантажити його в емулятор (див. «micro-os_loader. Asm» і «micro-os_kernel. Asm» в розділі «Samples»).
Потім виберіть у меню [Virtual Drive] -> [Boot from Floppy], щоб завантажити емулятор з віртуального дисковода.
Потім, якщо вам цікаво, ви можете записати віртуальну дискету на реальну дискету і завантажити з неї ваш комп’ютер. Рекомендуємо використовувати «RawWrite for Windows» з: http://uranus. it. swin.edu. au / ~ jn / linux / rawwrite. htm (врахуйте, що «micro-os_loader. asm» не використовує MS-DOS-сумісний завантажувальний сектор, так що краще використовувати чисту дискету, хоча вона має бути відформатована IBM (MS-DOS)).
Директива компілятора ORG 7C00h має бути додана перед кодом, якщо комп’ютер починає завантажуватися з першої доріжки дискети на адресу 0000: 7C00.
Розмір BOOT-файлу має бути менше 512 байтів (обмежений розміром сектора дискети).
Виконання завжди починається з першого байта файлу. Цей тип файлу унікальний для емулятора Emu8086.


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




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

    Басты бет