Надрукуйте ваш код всередині текстової області, і після клацання кнопки [Compile]. Вас запитають про місце, де зберегти компільований файл.
Після успішної компіляції Ви можете клацати кнопку [Emulate], щоб завантажити компільований файл в емуляторі.
Якщо Ви хочете завантажити ваш код в емулятор, тільки клацніть кнопку "Emulate".
Але Ви також можете використовувати емулятор, щоб завантажити executables, навіть якщо Ви не маєте первісного вихідного тексту. Виберіть "Show Emulator", меню "Emulator".
Спроба, завантажувати файли від папки "MyBuild". Якщо немає ніяких файлів в "MyBuild" папці, повертають вихідного редактору, вибирають Samples від меню File, завантажують будь-який зразок, вибирають і потім завантажуються в емулятор.
В пам'яті перераховують перший рядок - зсув, другий рядок - значення hexadecimal, третій рядок - десяткове значення, і останній рядок - значення символу ASCII.
Кнопка [Single Step] виконує команди, один за іншим зупиняють після кожної команди.
[Run] кнопка виконує команди один за іншим з затримкою, встановленої затримкою кроку між командами.
Двічі клацніть на текстових полях регістра, відкривається вікно "Extended Viewer" зі значенням того регістра, перетвореного до всіх можливих форм. Ви можете змінювати значення регістра безпосередньо в цьому вікні.
Двічі клацніть на елементі списку пам'яті, відкривається "Extended Viewer" зі значенням WORD, завантаженим зі списку пам'яті у вибраному місці розташування. Менш істотний байт - в молодшому адресу: LOW BYTE завантажений від обраної позиції і HIGH BYTE від наступного адреси пам'яті. Ви можете змінювати значення слова пам'яті безпосередньо у вікні "Extended Viewer", Ви можете змінювати значення регістрів в часі виконання, друкуючи по існуючим значенням.
Кнопка [Flags] дозволяє Вам розглядати і змінювати прапорці на часі виконання.
Компіляція кода Асемблера
Надрукуйте ваш код всередині текстової області і клацніть кнопку [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". Регістри також встановляться з урахуванням інформації з цього файлу (відкрийте цей файл в редакторі для зміни або вивчення). У тому випадку, якщо емулятор не знайде файл "MY.BINF", буде використовуватися поточні значення регістрів і файл "MY.BIN" завантажиться в поточний CS: IP.
Виконання починається зі значення в CS: IP.
Цей тип файлу унікальний для Emu8086.Файл
".BINF створюється автоматично компілятором, якщо він знаходить директиву #MAKE_BIN#.
ПОПЕРЕДЖЕННЯ! Якщо файл ".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.
Обробка помилок
Компілятор виводить звіт про помилки в окремому вікні:
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, 5m1: INC AX
LOOP m1; той самий код без помилок!
MOV AL, 0FFh; всі!
RET
При збереженні відкомпільованого файлу, компілятор також зберігає 2 інших файла, які використовуються емулятором для відображення фактичного вихідного коду при його виконанні і виборі відповідного рядка.
asm - цей файл містить оригінальний вихідний код, який був використаний для створення виконуваного файлу.
debug - цей файл містить інформацію, яка дозволяє емулятор вибирати рядки оригінального вихідного коду під час виконання машинного коду.
symbol - Таблиця символів. Вона містить інформацію, яка дозволяє відображати вікно "Variables" (Змінні). Це текстовий файл, так що ви можете подивитися його з текстового редактора.
binf - цей файл містить інформацію, яка використовується емулятором для завантаження BIN-файлу в зазначене місце розташування, і установки значень регістрів попередніх виконанню (створюється тільки в тому випадку, якщо здійснимих файл - це BIN-файл).