Составители:
52
6.4. Арифметические команды
Форматы команд:
7 3 2 0
аdd a, Ri 0x28 Ri
add a, #d
Ri – поле адреса регистра
#d – байт непосредственной константы
Микропрограмма выполнения арифметических команд в Cи
Char IR=0, // регистр команд
Wrk, //рабочий регистр
ACC, //аккумулятор
Ram[256], //память Ram
Code[0x7ff],
ADC[256]; //декодер инструкций
Int PC=0;//программный счетчик-
//кодирование команд в ADC блока управления CU.
For(i=0x28;i<0x28;i++) ADC[i]=0x11; //add a,R0-R7
ADC[0x24]=0x12; //add a.#d
ADC[0]=0x10;
Main()
{
while(ПУСК) //цикл исполнения команд
{
RAMM=0; IR=Code[PC++]; //выборка команды – первая микрокоманда цикла
switch(ADC[IR]) //адрес начала трассы микропрограммы;
{
case 0x11: //add a,ri
switch(step)
{ case 0: RA=ACC, RB= Ram[(PSW&0x18)|(IR&0x7)];RAMM++; break;
case 1: ACC=RA+RB, PSWC(Add); RAMM++; break;
case 2: Ram[Acc]=ACC; RAMM++; break;
case 3: Ram[Psw]=PSW; RAMM=0; break;
}
break;
case: 0x12 //add a,#d
switch(step)
{
case 0: RA=ACC, RB=Code[PC++];RAMM++; break;
case 1: ACC=RA+RB, PSWC(Add); RAMM++; break;
case 2: Ram[Acc]=ACC; RAMM++; break;
case 2: Ram[Psw]=PSW; RAMM=0; break;
}
0
x24
#d
Страницы
- « первая
- ‹ предыдущая
- …
- 50
- 51
- 52
- 53
- 54
- …
- следующая ›
- последняя »