Принципи написання інтерпретаторів на прикладі написання програми, виконуючий команди мови асемблера процесора 8086

Страницы работы

Содержание работы

Лабораторнаробота № 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.

Висновок:

Вивчені основні принципи створення інтерпретаторів.

Похожие материалы

Информация о работе