Лабораторнаробота № 3
Інтерпретатор
Мета роботи:
Засвоїти принципи написання інтерпретаторів на прикладі написання програми, виконуючий команди мови асемблера процесора 8086.
Індивідуальне завдання:
розробити програму – інтерпретатор, виконуючу розбір та виконання команд мови асемблера.
Розробка алгоритму:
Основні дії, які повинен виконувати інтерпретатор:
ввід команди.
розбір введеної команди.
виконання команди.
відображення усіх змін у внутрішніх структурах даних.
Типи даних:
У програмі були використані наступні структури, типи даних та змінні.
Структури:
Для збереження введених змінних використовувалася структура:
struct mems{
char name[8];
unsigned int data;
mems *next;
mems *prev;
};
Для збереження тексту програми використовувалася структура:
struct list{
char strg[80];
list *next;
list *prev;
};
Для збереження функцій-обробників команд мови асембера використовувалася структура:
struct op{
char name[5];
void (*func)(char *);
};
Для збереження стану регістрів використовувалася структура:
struct REG{
char name[3];
unsigned int z;
};
Змінні
R – масив для збереження стану регістрів;
S – масив для збереження стану стека;
var – список змінних;
lst – список – текст програми;
Константи:
ERRORCOLOR 4 – колір повідомлення про помилку
NORMALCOLOR 7 – колір звичайного тексту;
N 16 – кількість обробляемих команд;
VERSION 0.98 – версія програми;;
SP 13 – об’єм стеку.
Сообщения об ошибках.
Регистры Листинг Переменые Стек
AX = 0003 b = 0003 0000
AH-++-AL a = 091D 0000
BX = 0001 0000
BH-++-BL mov ax, 3 0000
CX = FFFF push ax 0000
CH-++-CL a dw 2333 0000
DX = 0000 b db 21 0000
DH-++-DL inc bx 0000
ES = 0000 and a,b 0000
DS = 0000 pop b 0000
BP = 0000 dec ac 0000
SP = 001A dec cx 0000
> 0003
Помощь
Обрабатываемые команды: INC, DEC, MOV, PUSH, POP, AND, DW, DB
Команды интерпретатора: q(quit) s(save filename)
Интерпретатор. v0.98 (с) voidSoft.
Висновок:
Вивчені основні принципи створення інтерпретаторів.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.