Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пример семы по эвм.doc
Скачиваний:
55
Добавлен:
14.03.2016
Размер:
332 Кб
Скачать
☆

Команда nor rd, Imm8.

Начальный адрес в памяти микропрограмм 0100000b = 32d.

Адрес 32. В temp0 поместить rd, продолжить со следующей микрокоманды.

temp0 ← SET (RD, IR)

A=*; B=111; C=100;

AMUX=0; BMUX=CMUX=1;

WR=RD=0;

ALU=000;

COND=NEXT;

Адрес 33. Поместить в temp0 результат NAND над rd и temp0 ( инвертированный rd), продолжить со след. микрокоманды.

temp0 ← NAND (RD, temp0)

A=*; B=100; C=100;

AMUX=0; BMUX=CMUX=1;

WR=RD=0;

ALU=100;

COND=NEXT;

Адрес 34. Поместить в temp1 результат NAND над ir и ir ( инвертированный ir), продолжить со следующей микрокоманды.

temp1 ← NAND (IR, IR)

A=111; B=111; C=101;

AMUX=BMUX=CMUX=1;

WR=RD=0;

ALU=100;

COND=NEXT;

Адрес 35. Поместить в temp0 результат NAND над temp0 и temp1, продолжить со следующей микрокоманды.

temp0← NAND (temp0, temp1)

A=100; B=100; C=101;

AMUX=BMUX=CMUX=1;

WR=RD=0;

ALU=100;

COND=NENT;

Адрес 36. Поместить в rd результат инвертирования temp0, продолжить с адреса 106

RD ← NAND (temp0, temp0); GOTO 106

A=100; B=100; C=*;

AMUX=1; BMUX=1; CMUX=0;

WR=RD=0;

ALU=100;

COND=JImm;

JMPADDR=1101010;

Команда inc rd.

Начальный адрес в памяти микропрограмм 010 1000b = 40d.

Адрес 40. Переместить в регистр rd результат сложения rd и temp1, продолжить с адреса 106.

RD ← ADD (RD, temp1); GOTO 106.

A=*; B=101; C=*;

AMUX=0; BMUX=1; CMUX=0;

WR=RD=0;

ALU=001;

COND=JImm;

JMPADDR=1101010;

Команда SHRA rd, rs.

Начальный адрес в памяти микропрограмм 011 0000b = 48d.

Адрес 48. Поместить в регистр rd результат сдвига вправо регистра rs, продолжить с адреса 106

RD ← SHRA (RS, IR); GOTO 106.

A=*; B=111; C=*;

AMUX=0; BMUX=1; CMUX=0;

WR=RD=0;

ALU=011;

COND=JImm;

JMPADDR=1101010;

Команда SLC rd, rs.

Начальный адрес в памяти микропрограмм 011 1000b = 56d.

Адрес 56. Поместить в регистр rd результат сдвига влево регистра rs, продолжить с адреса 106.

RD ← SLC (RS, IR); GOTO 106.

A=*; B=111; C=*;

AMUX=0; BMUX=1; CMUX=0;

WR=RD=0;

ALU=010;

COND=JImm;

JMPADDR=1101010;

Команда JC Imm8.

Начальный адрес в памяти микропрограмм 1000 000b = 64d.

Адрес 64. Поместить в temp0 ir. Если CF = 0, то продолжить с микрокоманды 106.

temp0 ← SET (temp0, IR)

A=100; B=111; C=100;

AMUX=BMUX=CMUX=1;

WR=RD=0;

ALU=000;

COND=JC;

JMPADDR=1101010;

Адрес 65. Переслать регистр temp0 в регистр pс; продолжить с 0 микрокоманды.

PC← SET (temp0, temp0); GOTO 0

A=100; B=100; C=110;

AMUX=BMUX=CMUX=1;

WR=RD=0;

ALU=000;

COND=JImm;

JMPADDR=0;

Команда JC rs,Imm8.

Начальный адрес в памяти микропрограмм 1001 000b = 72d.

Адрес 72. Поместить в temp0 результат сложения rs и ir. Если CF=0 то продолжить с микрокоманды 106.

temp0 ← ADD (RS, IR); GOTO 106

A=*; B=111; C=100;

AMUX=0; BMUX=CMUX=1;

RD=1; WR= 0;

ALU=000;

COND=JC;

JMPADDR=1101010;

Адрес 73. Переслать регистр temp0 в регистр pс; продолжить с 0 микрокоманды.

PC← SET (temp0, temp0); GOTO 0

A=100; B=100; C=110;

AMUX=BMUX=CMUX=1;

RD=WR= 0;

ALU=000;

COND=JImm;

JMPADDR=0;

Команда LD rd, Imm8.

Начальный адрес в памяти микропрограмм 1010 000b = 80d.

Адрес 80. Переслать ir через АЛУ, произвести чтение памяти, продолжить с адреса 106.

RD ← SET (IR, IR); GOTO 106

A=111; B=111; C=*;

AMUX=BMUX=1; CMUX=0;

RD=10; WR= 0;

ALU=000;

COND=JImm;

JMPADDR=1101010;

Команда LD rd, Imm8, rs.

Начальный адрес в памяти микропрограмм 1011 000b = 88d.

Адрес 88. Поместить в temp0 результат сложения rs и ir, продолжить со следующей микрокоманды.

temp0 ← ADD (RS, IR)

A=*; B=111; C=100;

AMUX=0; BMUX=CMUX=1;

RD=01; WR= 0;

ALU=000;

COND=NEXT;

Адрес 89. Произвести чтение памяти, продолжить с адреса 106.

RD ← SET (temp0, temp0); READ; GOTO 106

A=100; B=100; C=*;

AMUX=1; BMUX=1; CMUX=0;

RD=10; WR= 0;

ALU=000;

COND=JImm;

JMPADDR=1101010;

Команда ST rd, Imm8.

Начальный адрес в памяти микропрограмм 110 0000b = 96d.

Адрес 96. Переслать rd в регистр temp0

temp0 ← NOP (RD, IR)

A=*; B=111; C=100;

AMUX=0; BMUX=CMUX=1;

RD=WR= 0;

ALU=000;

COND=NEXT;

Адрес 97. Переслать ir и temp0 через АЛУ, произвести запись в память, продолжить с адреса 106.

temp1 ← ADD (IR, temp0); GOTO 106

A=111; B=100; C=101;

AMUX=BMUX=CMUX=1;

RD=0; WR= 1;

ALU=001;

COND=JImm;

JMPADDR=1101010;