Разработка структуры гипотетического микропроцессора и центральной части МЭВМ на его базе. Эмуляция выполнения команд
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
false,2);(5,false,2);
DrawLine(2,false,2);(22,false,1);("В УУ подается сигнал о выполнении команды");
DrawLine(20,true,1);(1,true,2);;}
case 23:
{DrawLine(20,false,1);("УУ подает сигнал чтения из регистра EBX");(18,true,1);;}24:
{Msg("Считывание регистра EBX(BL) и УУ подает сигнал записи его в регистр EAX(AL)");
m_EBX.GetText(0, str.GetBuffer(5));.ReleaseBuffer();_EAX.GetText(0, str2.GetBuffer(5));.ReleaseBuffer();_EAX.ResetContent();_EAX.InsertString(0,str2.Left(2)+str.Right(2));;}
//Наращивание EIP25:
{DrawLine(1,false,2);
DrawLine(18,false,1);("Выдача EIP в регистр обмена(РО)");
m_EIP.GetText(0, str.GetBuffer(5));_RO.ResetContent();.ReleaseBuffer();_RO.InsertString(0,str);(23,true,1);;}26:
{DrawLine(23,false,1);("Выдача регистра обмена(РО) через шину А в BR1");_RO.GetText(0, str.GetBuffer(5));_BR1.ResetContent();.ReleaseBuffer();_BR1.InsertString(0,str);(1,true,2);(19,true,1);(15,true,1);;}27:
{DrawLine(19,false,1);(15,false,1);
Msg("УУ посылает значение в BR2 (размер команды)");
m_BR2.ResetContent();_BR2.InsertString(0,"0002");(16,true,1);;}28:
{DrawLine(19,false,1);(15,false,1);(1,false,2);(16,false,1);
Msg("УУ передает управление МУУ");
DrawLine(8,true,1);;}29:
{DrawLine(8,false,1);
DrawLine(1,false,2);("МУУ подает сигнал АЛУ на выполнение сложения. АЛУ работает и помещает результат в РР");
m_RR.ResetContent();_RR.InsertString(0,"0004");(12,true,1);;}30:
{DrawLine(12,false,1);("Запись результата из РР В EIP через шину А и РО");
m_RR.GetText(0, str.GetBuffer(5));_RO.ResetContent();_EIP.ResetContent();.ReleaseBuffer();_RO.InsertString(0,str);_EIP.InsertString(0,str);(1,true,2);(17,true,1);(19,true,1);(23,true,1);
break;}
//Выбор следующей команды31:
{DrawLine(1,false,2);(17,false,1);(19,false,1);
DrawLine(23,false,1);("CS и EIP подаются СФА для формирования физического адреса команды");
DrawLine(24,true,1);(25,true,1);;}32:
{DrawLine(17,false,1);(19,false,1);(23,false,1);(24,false,1);(25,false,1);
Msg("Сформированный адрес подается в БАД (буфер адреса данных)");
m_BAD.ResetContent();_BAD.InsertString(0,"1004");(2,true,2);(27,true,1);;}33:
{ DrawLine(2,false,2);(27,false,1);
Msg("Выдача полученного адреса на шину адреса");
DrawLine(7,true,2);(3,true,2);;}34:
{DrawLine(7,false,2);(3,false,2);
Msg("УУ посылает сигнал чтения на шину управления");
DrawLine(6,true,2);(4,true,2);;}35:
{DrawLine(6,false,2);(4,false,2);
Msg("Чтение данных из оперативной памяти");;}36:
{Msg("На УУ посылается сигнал завершения работы ОП, выдача данных через шину данных и шину С в РК");
m_RK.ResetContent();_RK.InsertString(0,m_TABLE_CS.GetItemText(3,2));(6,true,2);(5,true,2);(2,true,2);(22,true,1);;}
//Выполнение JMP label37:
{DrawLine(6,false,2);(5,false,2);
DrawLine(2,false,2);(22,false,1);("В УУ подается сигнал о выполнении команды");
DrawLine(20,true,1);(1,true,2);;}38:
{DrawLine(1,false,2);(20,false,1);
Msg("Выдача EIP в регистр обмена(РО)");
m_EIP.GetText(0, str.GetBuffer(5));_RO.ResetContent();.ReleaseBuffer();_RO.InsertString(0,str);(23,true,1);;}39:
{DrawLine(23,false,1);("Выдача регистра обмена(РО) через шину А в BR1");_RO.GetText(0, str.GetBuffer(5));_BR1.ResetContent();.ReleaseBuffer();_BR1.InsertString(0,str);(1,true,2);(19,true,1);(15,true,1);;}40:
{DrawLine(19,false,1);(15,false,1);
Msg("Пересылка размера перехода из РК в BR2");
m_BR2.ResetContent();_BR2.InsertString(0,"FFFC");(20,true,1);(16,true,1);;}41:
{DrawLine(19,false,1);(15,false,1);(1,false,2);(16,false,1);(20,false,1);
Msg("УУ передает управление МУУ");
DrawLine(8,true,1);;}42:
{DrawLine(8,false,1);
DrawLine(1,false,2);("МУУ подает сигнал АЛУ на выполнение сложения. АЛУ работает и помещает результат в РР");
m_RR.ResetContent();_RR.InsertString(0,"0000");(12,true,1);;}43:
{DrawLine(12,false,1);
Msg("Запись результата из РР В EIP через шину А и РО");
m_RR.GetText(0, str.GetBuffer(5));_RO.ResetContent();_EIP.ResetContent();.ReleaseBuffer();_RO.InsertString(0,str);_EIP.InsertString(0,str);(1,true,2);(17,true,1);(19,true,1);(23,true,1);;}44:
{DrawLine(1,false,2);(17,false,1);(19,false,1);(23,false,1);("Дальнейшая работа...");
}}
}CMP80386Dlg::OnClose()
{OnOK();}CMP80386Dlg::OnInfo()
{CAboutDlg dlgAbout;.DoModal();
}CMP80386Dlg::OnNext()
{(i);(i<45) i++;
}CMP80386Dlg::OnAuto()
{j;_Next.EnableWindow(FALSE);_Auto.EnableWindow(FALSE);(j=i;j<45;j++)
{MicroOperations(j);(800);
}_Next.EnableWindow(TRUE);_Auto.EnableWindow(TRUE);=44;
}