Мета роботи
Вивчити і зрозуміти принцип роботи транслятора. Дослідити формат даних об'єктного файлу для Шестнадцатіразрядное системи DOS для подальшого перетворення його у файл програми. p align="justify"> Розрахунок варіанта завдання здійснюється за формулою:
компілятор програма асемблер алгоритм
де NG - останні дві цифри навчальної групи; NS - номер студента у списку; KV - кількість варіантів у відповідній групі команд.
Отримали наступні команди: NEG, JE, ADC, SHL, INC.
Завдання: Для заданого набору команд розробити, налагодити і протестувати програму - компілятор.
1. Розробка контрольного прикладу
. asm є програмою для знаходження різниці між двома великими числами (32 розряду). Використовує всі задані команди, JE, NEG, SHL, INC і крім того команди MOV, INT.segment; сегмент даннихdw 1001h; a1, a2, b1, b2 - вихідні данниеdw 10h; с1, с2 - результат
b1 dw 0abcdhdw 20h
c1 dw 0dw 0dw 4c00h; 4ch - ф-ція виходу, 00h - код повернення
datas endssegment: cs: codes, ds: datasax, datasds, ax ax, a1;
mov dx, a2; завантажити дані в bx, b1; регістри cx, b2; ax; m1; dx; інверсія першого числа
m1: neg dx; di, c1; 0 -> біт CF
shl di, 1; ax, bx; скласти молодші частини dx, cx; скласти старші частини і біт CF m2 c1, ax; зберегти: mov c2, dx; результат ax, vix; завершення
int 21h; программиendsstart
Знаходиться різниця між двома 32-розрядними операндами. Другий операнд інвертується і складається з першим. Операнди і результат розташовуються в пам'яті. Базовий набір команд доповнено командами: MOV і INT, директивою - DW. p align="justify"> Даний контрольний приклад без помилок компілюється і линкуется стандартними компіляторами і лінковщік.
2. Опис використовуваних директив і команд асемблера
: Додавання з переносом
Операція: Зазвичай використовується при додаванні ...