Виконав:
студент групи АП-30б
Шпіка П. М.
Перевірив:
Межерицький С. Г.
1. Тема роботи.
Препроцесор у мові ассемблера.
2. Мета роботи.
Освоїти принципи написання програм, що обробляють вихідний текст програми мовою ассемблера, що містить
директиви препроцесора і макрокоманди.
3. Постановка задачі.
Необхідно розробити програму, що формує розширений лістинг фрагмента програми мовою ассемблера з використанням препроцесора.
4. Розробка рішення задачі.
4.1. Вибір перемінних.
Тут розглядаються тільки ті перемінні, котрі є найбільш основними для даної програми. Імена перемінних, їхній тип і функціональне призначення приведені в таблиці 4.1.
Таблиця 4.1.
Ім’я |
тип |
призначення |
*mnemonics[] *directives[] *registers[] opcode op1num op2num *mnem[] cop1[] cop2[] *F, *F1 |
char char char int int int char char char file |
Покажчик на елемент масиву : mnemonics. Цей масив містить найменування команд мови ассемблера, що зустрічаються у вихідному тексті. --//-- --//-- Індекс для масиву mnemonics -і//-і directives і registers -і//-і registers Покажчик на елемент масиву, утримуючого об'єктні коду команд -і//-і першого операнда команди -і//-і другого операнда команди Покажчики на вихідний файл і файл розширеного листинга |
4.2. Опис структури програми.
Імена функцій, їхній тип і призначення приведені в таблиці 4.2.
Таблиця 4.2.
ім’я |
тип |
призначення |
strtoi strupcase strcomp *parse findstr find_macro find_parameter findsym macro_def main |
int void char char int int int int void void |
Порівняння виділеної лексеми з десятковим числом. У випадку позитивного результату повер- тає значення 0. Перетворення рядкових символів. Порівняння двох рядків. Виділення лексеми з рядка. Пошук рядка в масиві рядків. У випадку присутності повертає її індекс у масиві, у противному випадку - 1. : -і- у таблиці форм парам макросу -і -і в таблиці макросів -і- -і- у таблиці символів -і- Обробка включа в ісходник Головна програма. |
4.3.Опис алгоритму рішення.
Поки не кінець вихідного файлу робимо след. дії
1. Вважати рядок з вихідного файлу.
2. Якщо цей рядок містить директиву INCLUDE, перевірити їсти файл, що чи включається цією директивою.
3. Якщо є, то викликати процедуру обробки, якщо немає - вихід з
програми з видачею повідомлення про це.
4. Якщо цей рядок містить директиву умовної компіляції, установити прапор умовної компіляції.
5. Якщо цей рядок містить виклик макровизначення, то якщо макрос викликаний вірно - сформувати макророзширення й у залежності від прапора умовної компіляції проробити нижче викладені дії.
6. Зробити синтаксичний аналіз рядка й у залежності від прапора умовної компіляції занести до протоколу роботи препроцесора рядок і вивести в рез. файл або розширений лістинг цього рядка або рядок.
7. Якщо кінець вихідного файлу, то виводимо у файл уміст таблиць сегментів, символів і макросів.
5. Текст програми PREPROC.C не наводиться.
6. Результат роботи.
Результатом роботи даної програми є файл "$text2.asm",
DATA SEGMENT PARA
AS DW 34
W DW 4536
M DB 0
DFGHA DW 87
DATA ENDS
CODE SEGMENT;
INC DX
MOV AX,AX
MOV DX,AX
MOV AX,CX
DDD: CMP CX,DI
A DB 0
MOV BX,5
MOV AX,AX
MOV CX,AX
DEC AX
CMP CX,DX
MOV DX,W
DEC AX
MOV AX,10
MOV CX,20
MOV BX,CX
DEC BX
INC CX
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.