Лабораторна робота № 2
Препроцесор
Мета роботи:
Освоїти принципи написання програм, які обробляють текст програми на мові асемблера, яка містить директиви препроцесора та макрокоманди.
Індивідуальне завдання:
Створити програму – препроцесор системи команд макропроцесора мови асемблера, а також підготовка первісного файла до компіляції.
Розробка алгоритму:
· Відкриття вхідного файлу;
· Пошук та обробка директив include;
· Формування тимчасового файла з усіма підключаемими модулями;
· Відкриття тимчасового файла;
· Пошук та обробка директив умовної компіляції IFB, ELSE, ENDIF
· Запис другого тимчасового файла, в якому оброблені директиви умовної компіляції;
· Відкриття другого тимчасового файла;
· Пошук макровизначень та формування списку макросів;
· Пошук макровикликів та їх заміна;
· Формування результуючого файла;
Алгоритм функції обробки директиви include
Алгоритм функції обробки Алгоритм функції обробки
директиви ifb:макросів:
Типы данных:
У програмі були використані наступні данні:
Структура для збереження тіл макросів:
struct mac{
char string[255];
mac * next;
};
struct list_mac{
char name[34];
char prm[100];
int noprm;
mac * body;
list_mac * next;
list_mac * prev;
};
Змінні:
name1 – Ім’я тимчасового файла після обробки директив includ ;
name2 - Ім’я тимчасового файла після обробки директив ifb;
;-------------------------------- Included file 1
datas segment
a dd(?)
as db 'the is a text'
datas ends
code1 segment
cs:code
:----------------- А это компилить
mul dx,cx
add ax,bx
int 21h
code1 ends
;-------------------------------- end of included file 1
mov ax,5
nop
mov ax,FUNCTION
cpuid
push bx
; Include file 2 - void
NOP
;--- insert macro AP with paramline: ax,bx
push ax
push bx
pop ax
pop bx
;--- insert macro AP with paramline: si,dx
push si
push dx
pop si
pop dx
;--- insert macro aaa with paramline: ax,bx,cx
mov ax, bx
inc cx
END
Висновок:
Вивчені принципи побудови препроцесорів (обробка директив підключення файла, умовної компіляції та обробка макросів).
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.