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

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

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.

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

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

Висновок:

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

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

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

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.