logo search
Разработка структуры гипотетического микропроцессора и центральной части МЭВМ на его базе. Эмуляция выполнения команд

6.3 Список процедур и функций

Основные процедуры и функции, используемые в программе, приведены в таблице 6.1.

Таблица 6.1 - Основные процедуры программы-эмулятора

№п/п

Объявление процедуры

Назначение

1

OnReset()

Установка начальных значений. Запускается при нажатии кнопки “Сброс”

2

OnNext()

Переход к следующей операции. Запускается при нажатии кнопки “Следующий шаг”

3

OnAuto()

Включение автоматического режима. Запускается при нажатии кнопки “Авто”.

4

MicroOperations(int step)

Прорисовка каждой микрооперации

6.4 Анализ результатов тестирования программы

В ходе тестирования были найдены неполадки в работе программы, которые благополучно были исправлены. В конечном итоге, на практике программа показала результаты аналогичные результатам, показанным микропроцессором-прототипом i8386.

ВЫВОДЫ

Целью настоящего проекта являлось изучение работы МП и создание системы, позволяющей изучить принцип и порядок выполнения команд гипотетического микропроцессора. В процессе создания данного проекта были выполнены следующие действия:

1. Спроектировано АЛУ гипотетического микропроцессора по способу реализации ЗМО, предназначенное для выполнения операций сложения, умножения и декремента;

2. Разработаны алгоритмы выполнения команд MUL, ADD, DEC, MOV и JMP, составляющих подмножество команд микропроцессора-прототипа 80386;

3. Разработана структурная схема гипотетического микропроцессора, систему команд которого составляют команды MUL, ADD, DEC, MOV и JMP с режимом реальной адресации;

4. Разработана структурная схема микроЭВМ на базе спроектированного гипотетического микропроцессора;

5. Создана программа эмуляции выполнения команд из системы команд гипотетического микропроцессора.

Созданный ПП не является окончательным вариантом готового приложения. В дальнейшем возможно внести следующие улучшения и усовершенствования:

1. Разработка более совершенной структуры гипотетического МП;

2. Предоставление в программе-эмуляторе возможность произвольного ввода стартовых значений;

3. Увеличение набора команд микропроцессора (при этом будет значительно усложняться структура АЛУ и структурной схемы гипотетического микропроцессора, но сама структура микроЭВМ принципиально не изменится).

ПЕРЕЧЕНЬ ССЫЛОК

1. Абель П. Язык Ассемблера для IBM PC и программирования / Пер. с англ. Ю.В.Сальникова. - М.: Высш. шк.,1992. - 447 с.: ил.

2. Юров В. “Assembler - учебник для ВУЗов”- СПб.;Питер,2002.-624с.:ил.

3. Журден Р. “Справочник программиста на ПК фирмы IBM” - перевод с англ.

микропроцессор алгоритм команда программа эмуляция

Приложение А

ТЕХНИЧЕСКОЕ ЗАДАНИЕ НА РАЗРАБОТКУ МИКРОЭВМ

А.1 Общие сведения

Полное наименование курсового проекта - «Разработка структуры гипотетического микропроцессора и центральной части МЭВМ на его базе. Эмуляция выполнения команд».

КП разрабатывается студенткой 3-го курса Донецкого государственного института искусственного интеллекта, факультета Современных компьютерных и информационных технологий, группы .

Основанием для создания КП является задание, выданное кафедрой технической информатики факультета СКИТ ДонГИИИ согласно учебному плану специальности программного обеспечения интеллектуальных систем.

Плановый срок начала разработки проекта года, срок окончания -года.

А.2 Назначение и цели создания проекта

Курсовой проект предназначен для знакомства пользователя с командами микро-ЭВМ на базе процессора 80386 посредством эмулятора этих команд.

Целью создания курсового проекта является исследование алгоритмов выполнения заданного набора команд в режиме реальной адресации микропроцессора i80386.

А.3 Требования к КП

А.3.1 Требования к КП в целом

В целом КП должен выполнять следующие требования:

- обеспечивать правильное выполнение каждой команды из заданного набора;

- каждый машинный цикл должен сопровождаться отображением потоков данных в структурной схеме микропроцессора и строкой комментария.

А.3.2 Требования к задачам и функциям КП

А.3.2.1 Требования к микроЭВМ

К разработке микроЭВМ выдвигаются следующие требования:

разработать алгоритм выполнения команд заданного подмножества;

реализовать реальный режим адресации;

разрядность шины данных - 32 бит;

разрядность шины адреса - 32 бит;

разработать программу эмуляции выполнения заданного подмножества команд, разработанного микропроцессора. Предусмотреть режимы пошагового и автоматического выполнения команд с изображением динамики исполнения на структурной схеме.

Требуется реализовать алгоритмы выполнения арифметической команды ADD, команды перехода JMP, посылочной операции MOV.

А.3.2.2 Требования к организации основной памяти микропроцессора семейства i80386

Требуется разработать структуру микроЭВМ со следующей организацией основной памяти микропроцессора семейства i80386 схемой и характеристиками. Минимальной адресуемой единицей основной памяти ПЭВМ является байт. Доступ к байтам основной памяти осуществляется по его физическим адресом в устройстве памяти. Для адресации основной памяти в микропроцессоре i80386 предусматриваются 32-битовые адреса, что позволяет работать с основной памятью до 4 Гб.

А.3.2.3 Требования к видам обеспечения

А.3.2.3.1 Требования к программному обеспечению

К программному обеспечению (ПО) предъявляется следующее требование: - операционная система - Microsoft Windows 95, 98, NT, Me, XP.

А.3.2.3.2 Требования к техническому обеспечению

К техническому обеспечению предъявляются следующие требования:

для функционирования проектируемой программы достаточно IBM совместимой машины типа АТ с процессором i80486 и выше или любого совместимого с ним;

оперативной памяти RAM не менее 16Мb;

монитор типа SVGA;

клавиатура.

А.4 Стадии и этапы разработки ПП

Стадии и этапы разработки ПП представлены в таблице А.1.

Таблица А.1 - Стадии и этапы разработки КП

№п.п

Наименование работы

Продолжительность (недель)

1

Анализ структуры и алгоритмов выполнения заданных команд в микропроцессоре - прототипе. Уяснение задания

1

2

Разработка технического задания на проект

1

3

Разработка структуры АЛУ микропроцессора для выполнения арифметических операций

1

4

Разработка алгоритмов выполнения АО

1

5

Разработка структуры микропроцессора, реализующего заданный набор команд

1

6

Разработка структуры микроЭВМ

1

7

Разработка алгоритмов выполнения команд

1

8

Разработка эмулятора выполнения заданных команд

2

9

Отладка эмулятора

2

10

Тестирование эмулятора

2

11

Написание пояснительной записки к проекту

1

12

Защита проекта

1

Приложение Б

ТЕХНИЧЕСКОЕ ЗАДАНИЕ НА ПРОГРАММУ-ЭМУЛЯТОР

Б.1 Сведения об условиях эксплуатации эмулятора

Данный программный продукт применим в учебных целях при изучении работы микропроцессоров, а также в качестве справочного материала. Его могут использовать разработчики для создания высокоэффективных программ, студенты, проходящие курс по сходной тематике.

Б.2 Требования к эмулятору

Б.2.1 Требования к эмулятору в целом

Условия функционирования системы соответствуют нормальным условиям эксплуатации вычислительной техники, на которых эта система установлена, и не требуют дополнительных оговорок.

Б.2.2 Требования к задачам и функциям программы-эмулятора

В курсовом проекте должны быть реализованы:

арифметико-логические операция ADC;

посылочная операция MOV;

команда перехода JMP.

Необходимо использовать режим реальной адресации для типа ОА АЛУ ЗМО.

Программа должна обеспечивать:

отображение на экране операндов в формате, используемом для хранения;

вывод результата выполнения операции в шестнадцатеричном виде;

проверку результатов вычисления;

понятный интерфейс для обеспечения удобной работы пользователя с ПП;

развитую систему помощи.

В проектируемом программном продукте решаются следующие задачи:

разработка структуры гипотетического МП для реализации заданного подмножества команд на основе МП прототипа и заданного способа адресации;

разработка структуры гипотетического МП для заданного подмножества команд на основе разработанного АЛУ;

разработка центральной части микро-ЭВМ, микропрограммы выполнения команд заданного подмножества;

разработка эмулятора.

Б.3 Требования к видам обеспечения

Б.3.1 Требования к программному обеспечению

К программному обеспечению предъявляется следующее требование:

обеспечение функционирования создаваемой программы в пользовательском режиме;

реализовать программу в виде отдельных процедур и функций;

организовать защиту от некорректного ввода;

обеспечить надежное хранение информации;

язык программирования - Visual C++.

Программа, реализующая изучение и эмуляцию команд АЛУ создается для операционной системы Microsoft Windows 95, 98, NT, Me, XP.

Б.3.2 Требования к техническому обеспечению

К техническому обеспечению предъявляются следующие требования:

для функционирования проектируемой программы достаточно IBM совместимой машины типа АТ с процессором i80486 и выше или любого совместимого с ним;

оперативной памяти RAM не менее 16Мb;

монитор типа SVGA;

клавиатура;

манипулятор мышь.

Приложение В

РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ

Для запуска программы-эмулятора работы микроЭВМ необходимо запустить файл mp80386.exe.

В появившемся окне будет изображена схема разработанной микроЭВМ, включающая в себя ОЗУ, структурную схему гипотетического микропроцессора и шинный интерфейс.

В правой части окна находится панель управления работой программы. Для начала выполнения команд необходимо нажать кнопку “Следующий шаг” (для пошагового выполнения программы) или “Авто”(для автоматической работы программы). Чтобы начать выполнение программы заново с самого начала, необходимо нажать кнопку “Сброс”.

При нажатии кнопки “О программе” появляется окно с информацией о назначении данного ПП.

Для выхода из программы нужно нажать кнопку “Выход”, либо закрыть окно стандартным способом (нажатием кнопки закрытия в правом верхнем углу окна).

Приложение Г

ЭКРАННЫЕ ФОРМЫ

Рисунок Г.1 - Иллюстрация работы программы

Приложение Д

ЛИСТИНГ ПРОГРАММЫ

// MP80386Dlg.cpp : implementation file

#include "stdafx.h"

#include "MP80386.h"

#include "MP80386Dlg.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

int i=0;

//////////////////////////////////////////////////////////////////

CAboutDlg dialog used for App About

class CAboutDlg : public CDialog

{public:

CAboutDlg();

// Dialog Data

//{{AFX_DATA(CAboutDlg)

enum { IDD = IDD_ABOUTBOX };

//}}AFX_DATA

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CAboutDlg)

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

//}}AFX_VIRTUAL

// Implementation

protected:

//{{AFX_MSG(CAboutDlg)

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)

{ //{{AFX_DATA_INIT(CAboutDlg)

//}}AFX_DATA_INIT

}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{ CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAboutDlg)

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

//{{AFX_MSG_MAP(CAboutDlg)

// No message handlers

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CMP80386Dlg dialog

CMP80386Dlg::CMP80386Dlg(CWnd* pParent /*=NULL*/)

: CDialog(CMP80386Dlg::IDD, pParent)

{//{{AFX_DATA_INIT(CMP80386Dlg)

//}}AFX_DATA_INIT

// Note that LoadIcon does not require a subsequent DestroyIcon in Win32

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

void CMP80386Dlg::DoDataExchange(CDataExchange* pDX)

{CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CMP80386Dlg)

DDX_Control(pDX, IDC_NEXT, m_Next);

DDX_Control(pDX, IDC_AUTO, m_Auto);

DDX_Control(pDX, IDC_RR, m_RR);

DDX_Control(pDX, IDC_RO, m_RO);

DDX_Control(pDX, IDC_RK, m_RK);

DDX_Control(pDX, IDC_OF, m_OF);

DDX_Control(pDX, IDC_EIP, m_EIP);

DDX_Control(pDX, IDC_EBX, m_EBX);

DDX_Control(pDX, IDC_EAX, m_EAX);

DDX_Control(pDX, IDC_DS, m_DS);

DDX_Control(pDX, IDC_CS, m_CS);

DDX_Control(pDX, IDC_CF, m_CF);

DDX_Control(pDX, IDC_BR2, m_BR2);

DDX_Control(pDX, IDC_BR1, m_BR1);

DDX_Control(pDX, IDC_BAD, m_BAD);

DDX_Control(pDX, IDC_TABLE_CS, m_TABLE_CS);

//}}AFX_DATA_MAP}

BEGIN_MESSAGE_MAP(CMP80386Dlg, CDialog)

//{{AFX_MSG_MAP(CMP80386Dlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_RESET, OnReset)

ON_BN_CLICKED(IDCLOSE, OnClose)

ON_BN_CLICKED(IDC_INFO, OnInfo)

ON_BN_CLICKED(IDC_NEXT, OnNext)

ON_BN_CLICKED(IDC_AUTO, OnAuto)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

////////////////////////////////////////////////////////

// CMP80386Dlg message handlers

BOOL CMP80386Dlg::OnInitDialog()

{CDialog::OnInitDialog();

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{CString strAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if (!strAboutMenu.IsEmpty())

{pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}}

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE);// Set small icon

return TRUE; // return TRUE unless you set the focus to a control

}

void CMP80386Dlg::OnSysCommand(UINT nID, LPARAM lParam)

{if ((nID & 0xFFF0) == IDM_ABOUTBOX)

{CAboutDlg dlgAbout;

dlgAbout.DoModal();

}

else

CDialog::OnSysCommand(nID, lParam);

UpdateData(FALSE);

}

void CMP80386Dlg::OnPaint()

{if (IsIconic())

{CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect.Width() - cxIcon + 1) / 2;