Составители:
58
{
if(pole== “ifo” ) mema0.ifo=findcode(ifo,pol);
if(pole== “basa” ) mema0.basa=findcode(basa,pol);
if(pole== “basb” ) mema0.basb=findcode(basb,pol);
……………………………. }
void __fastcall TForm1::Codmema(void) //формировать бинарный код микрокоманды , найти
ее адрес DCM[16] и сохранить адрес в ROMM[RAMM]
{
char i;
codDCM=(((((((((mema0.ifo<<3)+mema0.basa)<<4+mema0.basb)<<4+mema0.wrb)<<4+mema0.b
asc)<<4+mema0.wrc)<<4)+mema0.adsfr)<<3)+mema0.unicod;
for(i=0; i<16; i++) //i-адрес, mcod-декод в таблице кодов
{if(DCM[i]==codDCM) continue;
if(DCM[i]==0) { DCM[i]=codDCM; //i mk
ROMM[RAMM]=i; continue;}
void MicroCodMem( char *SS)
{ //лексический разбор строки SS
//найти имя поля *pole и выполнить Coding(*pole)
// выполнить Codmema(void) }
//==============================================-моделирование
void __fastcall TForm1::Reset(TObject *Sender)
{ //функция клавиши Сброс
//tab1.mom.aa=5;
PC=0; Ram[Sp]=07;
for(char i=0x28;i<0x28;i++) ADC[i]=0x11; // декодирование команд add a,r0-r7
ADC[0x24]=0x12; // декодирование команды add a,#d
for(char i=0x11;i<0xF1;i=i+0x10) ADC[i]=0x14; // декодирование команд acall met
ADC[0x82]=0x15; // декодирование команды anl c, bit
//начальное состояние
Ram[0]=0x11;
ACC=0; //Edit6->Text='0';
PC=0; //Edit2->Text='0';
SP=07; Ram[Sp]=SP;
RAMM=0; //Text='0';
}
void __fastcall TForm1::PSWC(char *name)
{ //вычисление признаков результата для операции *name }
void __fastcall TForm1::Step(TObject *Sender) /Функция клавиши ШАГ
{
{ IR=Code[PC++]; //ROMM[0] выборка команды в начале цикла
MicroCodMem(“BasA=PC, basB=Code, Mr=IR, incPC”);
RAMM=ADC[IR]<<3; //начальный адрес трассы микрокоманд
switch(ADC[IR]) //декодирование команд
{
case 0x11: //микропрограмма add a,ri
Страницы
- « первая
- ‹ предыдущая
- …
- 56
- 57
- 58
- 59
- 60
- …
- следующая ›
- последняя »