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

Изучение элементов структуры микропроцессора i80386 и алгоритмов выполнения множества команд. Разработка проекта структуры АЛУ и структуры микро-ЭВМ на базе гипотетического процессора. Описание и создание программы эмуляции по выполнению заданных команд.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 07.09.2012
Размер файла 484,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon

dc.DrawIcon(x, y, m_hIcon);

}

else

{OnReset();

CDialog::OnPaint();

}}

HCURSOR CMP80386Dlg::OnQueryDragIcon()

{return (HCURSOR) m_hIcon;

}

void CMP80386Dlg::OnReset()

{int l;

int j=0;

CString str = "";

i=1;

for(l=1;l<8;l++)

DrawLine(l, false, 2);

for(l=8;l<29;l++)

DrawLine(l, false, 1);

m_TABLE_CS.DeleteAllItems();

m_TABLE_CS.DeleteColumn(0);

m_TABLE_CS.DeleteColumn(0);

m_TABLE_CS.DeleteColumn(0);

m_TABLE_CS.SetExtendedStyle(m_TABLE_CS.GetExtendedStyle()|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);

m_TABLE_CS.InsertColumn(0,"addr",LVCFMT_LEFT,40);

m_TABLE_CS.InsertColumn(1,"data",LVCFMT_LEFT,60);

m_TABLE_CS.InsertColumn(2,"value",LVCFMT_LEFT,70);

m_TABLE_CS.InsertItem(0,"1000");

m_TABLE_CS.SetItem(0,1,LVIF_TEXT,"82C0",0,0,0,0);

m_TABLE_CS.SetItem(0,2,LVIF_TEXT,"ADD AL,8D",0,0,0,0);

m_TABLE_CS.InsertItem(1,"1000");

m_TABLE_CS.SetItem(1,1,LVIF_TEXT,"",0,0,0,0);

m_TABLE_CS.SetItem(1,2,LVIF_TEXT,"label:",0,0,0,0);

m_TABLE_CS.InsertItem(2,"1002");

m_TABLE_CS.SetItem(2,1,LVIF_TEXT,"88C1",0,0,0,0);

m_TABLE_CS.SetItem(2,2,LVIF_TEXT,"MOV AL,BL",0,0,0,0);

m_TABLE_CS.InsertItem(3,"1004");

m_TABLE_CS.SetItem(3,1,LVIF_TEXT,"EBFFFC",0,0,0,0);

m_TABLE_CS.SetItem(3,2,LVIF_TEXT,"JMP label",0,0,0,0);

for (l=0x1007;l<0x1012;l++)

{j++;

str.Format("%X",l);

m_TABLE_CS.InsertItem(3+j,str);

m_TABLE_CS.SetItem(3+j,1,LVIF_TEXT,"90",0,0,0,0);

m_TABLE_CS.SetItem(3+j,2,LVIF_TEXT,"NOP",0,0,0,0);

}

m_BR1.ResetContent();

m_BR2.ResetContent();

m_RR.ResetContent();

m_BAD.ResetContent();

m_RO.ResetContent();

m_OF.ResetContent();

m_OF.InsertString(0,"0");

m_CF.ResetContent();

m_CF.InsertString(0,"0");

m_EAX.ResetContent();

m_EAX.InsertString(0,"F018");

m_EBX.ResetContent();

m_EBX.InsertString(0,"18B2");

m_EIP.ResetContent();

m_EIP.InsertString(0,"0000");

m_CS.ResetContent();

m_CS.InsertString(0,"0100");

m_DS.ResetContent();

m_DS.InsertString(0,"0900");

m_RK.ResetContent();

m_RK.InsertString(0,"ADD AL,8D");

}

void CMP80386Dlg::Triang(int left,int top,int trend,bool On)

{POINT p[]={{left-7,top-3},{left,top},{left-7,top+3}};//влево

POINT p2[]={{left,top},{left+7,top-3},{left+7,top+3}};//вправо

POINT p3[]={{left,top},{left+3,top+7},{left-3,top+7}};//вверх

POINT p4[]={{left,top},{left+3,top-7},{left-3,top-7}};//вниз

CClientDC dc(this);

CPen Pen;

CBrush Brush;

CBrush* oldbrush;

CPen* oldpen;

if (On)

{Pen.CreatePen(PS_SOLID, 1, RGB(200,0,0));

Brush.CreateSolidBrush(RGB(200,0,0));

}

else

{ Pen.CreatePen(PS_SOLID, 1, RGB(0,0,0));

Brush.CreateSolidBrush(RGB(0,0,0));

}

oldpen=dc.SelectObject(&Pen);

oldbrush=dc.SelectObject(&Brush);

dc.SetBkMode(TRANSPARENT);

switch (trend)

{ case 1:dc.Polygon (p,3);

break;

case 2:dc.Polygon (p2,3);

break;

case 3:dc.Polygon (p3,3);

break;

case 4:dc.Polygon (p4,3);

break;

}

dc.SelectObject(oldpen);

Pen.DeleteObject();

dc.SelectObject(oldbrush);

Brush.DeleteObject();

}

void CMP80386Dlg::DrawLine(int name, bool status, int thickness)

{ POINT ps1[]={{30,360},{493,360}};// Шина А

POINT ps2[]={{30,140},{493,140}};// Шина С

POINT ps3[]={{30,30},{580,30}};// ША

POINT ps4[]={{30,50},{580,50}};// ШУ

POINT ps5[]={{30,70},{580,70}};// ШД

POINT

ps6[]={{515,85},{525,70},{535,85},{530,85},{530,100}, {535,100},{525,113},{515,100},{520,100},{520,85},{516,85}};//Ш-УУ

POINT ps7[]={{60,70},{60,88}};//Ш-БАД

POINT py1[]={{432,500},{495,500}};// МУУ-УУ

POINT py2[]={{352,500},{265,500},{265,476}};//АЛУ-МУУ

POINT py3[]={{420,486},{420,466}};//МУУ-РФ

POINT py4[]={{380,486},{380,360}};//шинаА-МУУ

POINT py5[]={{215,475},{215,500}};//АЛУ-РР

POINT py6[]={{200,425},{200,443}};//BR1-АЛУ

POINT py7[]={{270,425},{270,443}};//BR2-АЛУ

POINT py8[]={{200,360},{200,405}};//шинаА-BR1

POINT py9[]={{275,360},{275,405}};//шинаА-BR2

POINT py10[]={{215,520},{215,530},{150,530},{150,360}};//РР-шинаА

POINT py11[]={{50,360},{50,405}};//шинаА-Регистры

POINT py12[]={{50,358},{50,326}};//шинаА-РО

POINT py13[]={{270,358},{270,326}};//шинаА-РК

POINT py14[]={{400,358},{400,140}};//шинаА-шинаС

POINT py15[]={{270,305},{270,140}};//шинаС-РК

POINT py16[]={{50,276},{50,307}};//сегменты-РО

POINT py17[]={{50,193},{50,210}};//СФА-сегменты

POINT py18[]={{90,193},{90,210}};//СФА-сегменты(2)

POINT py19[]={{90,202},{190,202},{190,140}};//СФА-сегменты-шинаС

POINT py20[]={{60,138},{60,110}};//шинаС-БАД

POINT py21[]={{60,163},{60,140}};//СФА-шинаС

CPen Pen;

CBrush Brush;

CPen* oldpen;

CBrush* oldbrush;

CClientDC dc(this);

if (status)

{ Pen.CreatePen(PS_SOLID, thickness, RGB(200,0,0));

Brush.CreateSolidBrush(RGB(200,0,0));

}

else

{ Pen.CreatePen(PS_SOLID, thickness, RGB(0,0,0));

Brush.CreateSolidBrush(RGB(0,0,0));

}

oldpen=dc.SelectObject(&Pen);

oldbrush=dc.SelectObject(&Brush);

if (name == 1)

dc.Polyline(ps1,2);//шинаА

if (name == 2)

dc.Polyline(ps2,2);//шинаС

if (name == 3)

dc.Polyline(ps3,2); //ША

if (name == 4)

dc.Polyline(ps4,2); //ШУ

if (name == 5)

dc.Polyline(ps5,2); //ШД

if (name == 6)

dc.Polyline(ps6,11); //УУ-Ш

if (name == 7)

{ dc.Polyline(ps7,2); //БАД-Ш

Triang(60,70, 3, status);

Triang(60, 88, 4, status);

}

if (name == 8)

{ dc.Polyline(py1,2); // МУУ-УУ

Triang(432,500, 2, status);

Triang(495, 500, 1, status);

}

if (name == 9)

{ dc.Polyline(py2,3); //АЛУ-МУУ

Triang(352, 500, 1, status);

Triang(265, 476, 3, status);

}

if (name == 10)

{ dc.Polyline(py3,2); //МУУ-РФ

Triang(420,486, 4, status);

Triang(420, 466, 3, status);

}

if (name == 11)

{ dc.Polyline(py4,2);//шинаА-МУУ

Triang(380,360, 3, status);

Triang(380, 486, 4, status);

}

if (name == 12)

{ dc.Polyline(py5,2);//АЛУ-РР

Triang(215,500, 4, status);

}

if (name == 13)

{ dc.Polyline(py6,2); //BR1-АЛУ

Triang(200,443, 4, status);

}

if (name == 14)

{ dc.Polyline(py7,2); //BR1-АЛУ

Triang(270,443, 4, status);

}

if (name == 15)

{ dc.Polyline(py8,2);//шинаА-BR1

Triang(200,405, 4, status);

}

if (name == 16)

{ dc.Polyline(py9,2);//шинаА-BR2

Triang(275,405, 4, status);

}

if (name == 17)

{ dc.Polyline(py10,4);//РР-шинаА

Triang(150,360, 3, status);

}

if (name == 18)

{ dc.Polyline(py11,2);//шинаА-Регистры

Triang(50,360, 3, status);

Triang(50,405, 4, status);

}

if (name == 19)

{ dc.Polyline(py12,2);//шинаА-РО

Triang(50,326, 3, status);

Triang(50,358, 4, status);

}

if (name == 20)

{ dc.Polyline(py13,2);//шинаА-РК

Triang(270,358, 4, status);

}

if (name == 21)

{ dc.Polyline(py14,2);//шинаА-шинаС

Triang(400,140, 3, status);

Triang(400,358, 4, status);

}

if (name == 22)

{ dc.Polyline(py15,2);//шинаС-РК

Triang(270,305, 4, status);

}

if (name == 23)

{ dc.Polyline(py16,2);//сегменты-РО

Triang(50,307, 4, status);

Triang(50,276, 3, status);

}

if (name == 24)

{dc.Polyline(py17,2);//СФА-сегменты

Triang(50,192, 3, status);

}

if (name == 25)

{ dc.Polyline(py18,2);//СФА-сегменты(2)

Triang(90,192, 3, status);

Triang(90,212, 4, status);

}

if (name == 26)

dc.Polyline(py19,3);//СФА-сегменты-шинаС

if (name == 27)

{ dc.Polyline(py20,2);//шинаС-БАД

Triang(60,110, 3, status);

Triang(60,138, 4, status);

}

if (name == 28)

{dc.Polyline(py21,2);//СФА-шинаС

Triang(60,140, 3, status);

}

dc.SelectObject(oldpen);

Pen.DeleteObject();

dc.SelectObject(oldbrush);

Brush.DeleteObject();

}

void CMP80386Dlg::Msg(LPCTSTR txt)

{ CPen Pen(PS_SOLID, 1, RGB(212,208,200));

CBrush Brush(RGB(212,208,200));

CClientDC dc(this);

dc.SelectObject(Pen);

dc.SelectObject(Brush);

dc.SetBkColor(RGB(212,208,200));

dc.Rectangle(20,560,750,580);

dc.TextOut(20, 560, txt);

}

void CMP80386Dlg::MicroOperations(int step)

{ CString str,str2;

switch(step)

{//ADD AL,

case 1:

{Msg("В УУ подается сигнал о выполнении команды");

DrawLine(20,true,1);

DrawLine(1,true,2);

break;}

case 2:

{DrawLine(20,false,1);

Msg("УУ подает сигнал чтения из регистра EAX");

DrawLine(18,true,1);

break;}

case 3:

{DrawLine(18,false,1);

Msg("Считывание регистра AL и запись его в буферный регистр BR1");

m_EAX.GetText(0, str.GetBuffer(5));

m_BR1.ResetContent();

str.ReleaseBuffer();

m_BR1.InsertString(0,str.Right(2));

DrawLine(15,true,1);

break;}

case 4:

{DrawLine(15,false,1);

Msg("Считывание непосредственного операнда из РК и запись его в буферный регистр BR2");

m_BR2.ResetContent();

m_BR2.InsertString(0,"8D");

DrawLine(16,true,1);

break;}

case 5:

{DrawLine(1,false,2);

DrawLine(16,false,1);

Msg("УУ передает управление МУУ");

DrawLine(8,true,1);

break;}

case 6:

{DrawLine(8,false,1);

Msg("МУУ подает сигнал АЛУ на выполнение операции. Выполнение операции");

DrawLine(9,true,1);

DrawLine(13,true,1);

DrawLine(14,true,1);

break;}

case 7:

{DrawLine(13,false,1);

DrawLine(14,false,1);

Msg("АЛУ подает сигнал МУУ установить флаги. МУУ устанавливает флаги");

DrawLine(10,true,1);

break;}

case 8:

{DrawLine(9,false,1);

DrawLine(13,false,1);

DrawLine(14,false,1);

DrawLine(10,false,1);

Msg("Запись результата в РР и выдача его на шину А");

m_RR.ResetContent();

m_RR.InsertString(0,"00A5");

DrawLine(12,true,1);

DrawLine(17,true,1);

DrawLine(1,true,2);

break;}

case 9:

{DrawLine(12,false,1);

DrawLine(17,false,1);

Msg("Запись результата из РР в AL");

m_RR.GetText(0, str.GetBuffer(5));

str.ReleaseBuffer();

m_EAX.GetText(0, str2.GetBuffer(5));

str2.ReleaseBuffer();

m_EAX.ResetContent();

m_EAX.InsertString(0,str2.Left(2)+str.Right(2));

DrawLine(18,true,1);

break;}

//Наращивание EIP

case 10:

{DrawLine(1,false,2);

DrawLine(18,false,1);

Msg("Выдача EIP в регистр обмена(РО)");

m_EIP.GetText(0, str.GetBuffer(5));

m_RO.ResetContent();

str.ReleaseBuffer();

m_RO.InsertString(0,str);

DrawLine(23,true,1);

break;}

case 11:

{DrawLine(23,false,1);

Msg("Выдача регистра обмена(РО) через шину А в BR1");

m_RO.GetText(0, str.GetBuffer(5));

m_BR1.ResetContent();

str.ReleaseBuffer();

m_BR1.InsertString(0,str);

DrawLine(1,true,2);

DrawLine(19,true,1);

DrawLine(15,true,1);

break;}

case 12:

{DrawLine(19,false,1);

DrawLine(15,false,1);

Msg("УУ посылает значение в BR2 (размер команды)");

m_BR2.ResetContent();

m_BR2.InsertString(0,"0002");

DrawLine(16,true,1);

break;}

case 13:

{DrawLine(19,false,1);

DrawLine(15,false,1);

DrawLine(1,false,2);

DrawLine(16,false,1);

Msg("УУ передает управление МУУ");

DrawLine(8,true,1);

break;}

case 14:

{DrawLine(8,false,1);

DrawLine(1,false,2);

Msg("МУУ подает сигнал АЛУ на выполнение сложения. АЛУ работает и помещает результат в РР");

m_RR.ResetContent();

m_RR.InsertString(0,"0002");

DrawLine(12,true,1);

break;}

case 15:

{DrawLine(12,false,1);

Msg("Запись результата из РР В EIP через шину А и РО");

m_RR.GetText(0, str.GetBuffer(5));

m_RO.ResetContent();

m_EIP.ResetContent();

str.ReleaseBuffer();

m_RO.InsertString(0,str);

m_EIP.InsertString(0,str);

DrawLine(1,true,2);

DrawLine(17,true,1);

DrawLine(19,true,1);

DrawLine(23,true,1);

break;}

//Выбор следующей команды

case 16:

{DrawLine(1,false,2);

DrawLine(17,false,1);

DrawLine(19,false,1);

DrawLine(23,false,1);

Msg("CS и EIP подаются СФА для формирования физического адреса команды");

DrawLine(24,true,1);

DrawLine(25,true,1);

break;}

case 17:

{DrawLine(17,false,1);

DrawLine(19,false,1);

DrawLine(23,false,1);

DrawLine(24,false,1);

DrawLine(25,false,1);

Msg("Сформированный адрес подается в БАД (буфер адреса данных)");

m_BAD.ResetContent();

m_BAD.InsertString(0,"1002");

DrawLine(2,true,2);

DrawLine(27,true,1);

break;}

case 18:

{DrawLine(2,false,2);

DrawLine(27,false,1);

Msg("Выдача полученного адреса на шину адреса");

DrawLine(7,true,2);

DrawLine(3,true,2);

break;}

case 19:

{DrawLine(7,false,2);

DrawLine(3,false,2);

Msg("УУ посылает сигнал чтения на шину управления");

DrawLine(6,true,2);

DrawLine(4,true,2);

break;}

case 20:

{DrawLine(6,false,2);

DrawLine(4,false,2);

Msg("Чтение данных из оперативной памяти");

//m_TABLE_CS.SetSelectedColumn(2);

break;}

case 21:

{ m_TABLE_CS.Update(2);

Msg("На УУ посылается сигнал завершения работы ОП, выдача данных через шину данных и шину С в РК");

m_RK.ResetContent();

m_RK.InsertString(0,m_TABLE_CS.GetItemText(2,2));

DrawLine(6,true,2);

DrawLine(5,true,2);

DrawLine(2,true,2);

DrawLine(22,true,1);

break;}

//Выполнение MOV AL,BL

case 22:

{DrawLine(6,false,2);

DrawLine(5,false,2);

DrawLine(2,false,2);

DrawLine(22,false,1);

Msg("В УУ подается сигнал о выполнении команды");

DrawLine(20,true,1);

DrawLine(1,true,2);

break;}

case 23:

{DrawLine(20,false,1);

Msg("УУ подает сигнал чтения из регистра EBX");

DrawLine(18,true,1);

break;}

case 24:

{Msg("Считывание регистра EBX(BL) и УУ подает сигнал записи его в регистр EAX(AL)");

m_EBX.GetText(0, str.GetBuffer(5));

str.ReleaseBuffer();

m_EAX.GetText(0, str2.GetBuffer(5));

str2.ReleaseBuffer();

m_EAX.ResetContent();

m_EAX.InsertString(0,str2.Left(2)+str.Right(2));

break;}

//Наращивание EIP

case 25:

{DrawLine(1,false,2);

DrawLine(18,false,1);

Msg("Выдача EIP в регистр обмена(РО)");

m_EIP.GetText(0, str.GetBuffer(5));

m_RO.ResetContent();

str.ReleaseBuffer();

m_RO.InsertString(0,str);

DrawLine(23,true,1);

break;}

case 26:

{DrawLine(23,false,1);

Msg("Выдача регистра обмена(РО) через шину А в BR1");

m_RO.GetText(0, str.GetBuffer(5));

m_BR1.ResetContent();

str.ReleaseBuffer();

m_BR1.InsertString(0,str);

DrawLine(1,true,2);

DrawLine(19,true,1);

DrawLine(15,true,1);

break;}

case 27:

{DrawLine(19,false,1);

DrawLine(15,false,1);

Msg("УУ посылает значение в BR2 (размер команды)");

m_BR2.ResetContent();

m_BR2.InsertString(0,"0002");

DrawLine(16,true,1);

break;}

case 28:

{DrawLine(19,false,1);

DrawLine(15,false,1);

DrawLine(1,false,2);

DrawLine(16,false,1);

Msg("УУ передает управление МУУ");

DrawLine(8,true,1);

break;}

case 29:

{DrawLine(8,false,1);

DrawLine(1,false,2);

Msg("МУУ подает сигнал АЛУ на выполнение сложения. АЛУ работает и помещает результат в РР");

m_RR.ResetContent();

m_RR.InsertString(0,"0004");

DrawLine(12,true,1);

break;}

case 30:

{DrawLine(12,false,1);

Msg("Запись результата из РР В EIP через шину А и РО");

m_RR.GetText(0, str.GetBuffer(5));

m_RO.ResetContent();

m_EIP.ResetContent();

str.ReleaseBuffer();

m_RO.InsertString(0,str);

m_EIP.InsertString(0,str);

DrawLine(1,true,2);

DrawLine(17,true,1);

DrawLine(19,true,1);

DrawLine(23,true,1);

break;}

//Выбор следующей команды

case 31:

{DrawLine(1,false,2);

DrawLine(17,false,1);

DrawLine(19,false,1);

DrawLine(23,false,1);

Msg("CS и EIP подаются СФА для формирования физического адреса команды");

DrawLine(24,true,1);

DrawLine(25,true,1);

break;}

case 32:

{DrawLine(17,false,1);

DrawLine(19,false,1);

DrawLine(23,false,1);

DrawLine(24,false,1);

DrawLine(25,false,1);

Msg("Сформированный адрес подается в БАД (буфер адреса данных)");

m_BAD.ResetContent();

m_BAD.InsertString(0,"1004");

DrawLine(2,true,2);

DrawLine(27,true,1);

break;}

case 33:

{ DrawLine(2,false,2);

DrawLine(27,false,1);

Msg("Выдача полученного адреса на шину адреса");

DrawLine(7,true,2);

DrawLine(3,true,2);

break;}

case 34:

{DrawLine(7,false,2);

DrawLine(3,false,2);

Msg("УУ посылает сигнал чтения на шину управления");

DrawLine(6,true,2);

DrawLine(4,true,2);

break;}

case 35:

{DrawLine(6,false,2);

DrawLine(4,false,2);

Msg("Чтение данных из оперативной памяти");

break;}

case 36:

{Msg("На УУ посылается сигнал завершения работы ОП, выдача данных через шину данных и шину С в РК");

m_RK.ResetContent();

m_RK.InsertString(0,m_TABLE_CS.GetItemText(3,2));

DrawLine(6,true,2);

DrawLine(5,true,2);

DrawLine(2,true,2);

DrawLine(22,true,1);

break;}

//Выполнение JMP label

case 37:

{DrawLine(6,false,2);

DrawLine(5,false,2);

DrawLine(2,false,2);

DrawLine(22,false,1);

Msg("В УУ подается сигнал о выполнении команды");

DrawLine(20,true,1);

DrawLine(1,true,2);

break;}

case 38:

{DrawLine(1,false,2);

DrawLine(20,false,1);

Msg("Выдача EIP в регистр обмена(РО)");

m_EIP.GetText(0, str.GetBuffer(5));

m_RO.ResetContent();

str.ReleaseBuffer();

m_RO.InsertString(0,str);

DrawLine(23,true,1);

break;}

case 39:

{DrawLine(23,false,1);

Msg("Выдача регистра обмена(РО) через шину А в BR1");

m_RO.GetText(0, str.GetBuffer(5));

m_BR1.ResetContent();

str.ReleaseBuffer();

m_BR1.InsertString(0,str);

DrawLine(1,true,2);

DrawLine(19,true,1);

DrawLine(15,true,1);

break;}

case 40:

{DrawLine(19,false,1);

DrawLine(15,false,1);

Msg("Пересылка размера перехода из РК в BR2");

m_BR2.ResetContent();

m_BR2.InsertString(0,"FFFC");

DrawLine(20,true,1);

DrawLine(16,true,1);

break;}

case 41:

{DrawLine(19,false,1);

DrawLine(15,false,1);

DrawLine(1,false,2);

DrawLine(16,false,1);

DrawLine(20,false,1);

Msg("УУ передает управление МУУ");

DrawLine(8,true,1);

break;}

case 42:

{DrawLine(8,false,1);

DrawLine(1,false,2);

Msg("МУУ подает сигнал АЛУ на выполнение сложения. АЛУ работает и помещает результат в РР");

m_RR.ResetContent();

m_RR.InsertString(0,"0000");

DrawLine(12,true,1);

break;}

case 43:

{DrawLine(12,false,1);

Msg("Запись результата из РР В EIP через шину А и РО");

m_RR.GetText(0, str.GetBuffer(5));

m_RO.ResetContent();

m_EIP.ResetContent();

str.ReleaseBuffer();

m_RO.InsertString(0,str);

m_EIP.InsertString(0,str);

DrawLine(1,true,2);

DrawLine(17,true,1);

DrawLine(19,true,1);

DrawLine(23,true,1);

break;}

case 44:

{DrawLine(1,false,2);

DrawLine(17,false,1);

DrawLine(19,false,1);

DrawLine(23,false,1);

Msg("Дальнейшая работа...");

}}

}

void CMP80386Dlg::OnClose()

{OnOK();}

void CMP80386Dlg::OnInfo()

{CAboutDlg dlgAbout;

dlgAbout.DoModal();

}

void CMP80386Dlg::OnNext()

{

MicroOperations(i);

if(i<45) i++;

}

void CMP80386Dlg::OnAuto()

{

int j;

m_Next.EnableWindow(FALSE);

m_Auto.EnableWindow(FALSE);

for (j=i;j<45;j++)

{MicroOperations(j);

Sleep(800);

}

m_Next.EnableWindow(TRUE);

m_Auto.EnableWindow(TRUE);

i=44;

}

Размещено на Allbest.ru


Подобные документы

  • Разработка программы эмулятора, которая должна имитировать рабочий цикл процессора для каждой команды. Анализ структуры микропроцессора. Моделирующие переменные. Мнемоника команд моделируемого процессора. Разработка структуры программы: классов, методов.

    курсовая работа [156,8 K], добавлен 07.11.2012

  • Функциональный состав микро-ЭВМ, разработка системы команд. Описание взаимодействия всех блоков электронно-вычислительной машины при выполнении команд программы. Арифметико-логическое устройство, кэш-память процессора, функциональное моделирование.

    курсовая работа [981,4 K], добавлен 27.05.2013

  • Внутренняя архитектура микропроцессора Intel 486. Формат данных и команд. Регистры общего назначения. Программная модель устройства FPU, регистр флагов. Разработка структуры и микропрограммы микропроцессора, управляющего автомата с жесткой логикой.

    курсовая работа [1,6 M], добавлен 27.05.2013

  • Синтез структуры простого магистрального процессора с одним АЛУ, выполняющего 8 заданных команд. Разработка формата и кодировки команд, структурной схемы процессора, функциональные схемы всех его блоков в целом с указанием шин и управляющих сигналов.

    реферат [123,9 K], добавлен 18.05.2009

  • Изучение базовых команд ПК на базе МП i286 и их форматов. Изучение прямых способов адресации данных. Наработка практических навыков работы с командами. Разработка регистровой модели выполнения операций передачи данных. Программа реализации команд.

    контрольная работа [42,2 K], добавлен 12.03.2011

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

    реферат [29,1 K], добавлен 13.11.2009

  • Функциональная схема микропроцессора Intel 8086 (i8086). Формирование физического адреса памяти, выборка команд из памяти и запись их в очередь команд. Система команд процессора. Суть защищенного режима, переход из защищенного режима в реальный режим.

    практическая работа [93,3 K], добавлен 24.03.2013

  • Изучение архитектуры персонального компьютера на примере микропроцессора фирмы Intel. Регистры общего назначения. Оперативная память; форматы данных и команд. Команд пересылки с различными способами адресации операндов. Структура программы на Ассемблере.

    курс лекций [506,4 K], добавлен 03.05.2014

  • Строение схемы микропроцессора: все устройства, необходимые для приема из памяти, хранения, и выполнение команд, заданных согласно варианту режима адресации. Описания языка Ассемблера и его функции. Основные функции макропроцессора, варианты построения.

    курс лекций [44,1 K], добавлен 06.03.2009

  • Разработка вычислительной структуры, реализующей заданный набор операций для обработки запросов в реляционной базе данных (БД). Описание общей структуры системы с машиной баз данных. Разработка схем исполнительных процессоров и алгоритмов их операций.

    реферат [140,3 K], добавлен 27.10.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.