Разработка структуры гипотетического микропроцессора и центральной части МЭВМ на его базе. Эмуляция выполнения команд
Изучение элементов структуры микропроцессора 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