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

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

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;

}