Данному образовательному сайту пришлось несколько раз менять свое имя. С 2011 года доступ к нему обеспечивается по URL
http://educomp.runnet.ru

emc.km.ru (2001-2007) ==> educomp.org.ru (2007-2011) ==> educomp.runnet.ru (2011-...)
Более подробно об истории сайта можно прочитать здесь.


Учебные модели компьютера



Модели (software):

"Е14" (parallel !!!)

Модели (hardware):






Награды сайта
Награды сайта

Учебная модель ЭВМ: кодирование команд

Способы адресации

Код ТАТип адресацииИсполнительный адрес
0Прямая (регистровая)ADR (R)
1Непосредственная —
2КосвеннаяO3У(ADR)[3:5]
3ОтносительнаяADR + RB
4Косвенно-регистроваяPOH(R)[3:5]
5Индексная с постинкрементом POH(R)[3:5], R:= R + l
6Индексная с преддекрементом R:= R – l, POH(R)[3:5]

Таблица команд

\Ст.
 \
Мл.\
012 34
0NOPJMP  MOV 
1INJZ RDRDRDI
2OUTJNZ WRWR 
3IRETJS ADDADDADI
4WRRBJNS SUBSUBSBI
5WRSPJO MULMULMULI
6PUSHJNO DIVDIVDIVI
7POPJRNZ  IN 
8RETINT EIOUT 
9HLTCALL DI  

Мнемокоды команд и соответствующие им машинные коды операций. Старшая цифра кода – номер столбца, младшая – номер строки. Команды столбца 2 относятся к операциям с ячейками ОЗУ, а подобные команды столбца 3 – к операциям с РОН. Команды столбца 4 имеют формат 4 (двойную длину). Полное описание команд, упорядоченных по коду операций, приведено в таблице

Таблица команд, упорядоченная по кодам операций:

КОПМнемо-
код
НазваниеДействие
00NOPПустая операция Нет
01INВвод Acc <== IR
02OUTВывод OR <== Acc
03IRETВозврат из прерывания FLAGS.PC <== M(SP); INC(SP)
04WRRBЗагрузка RB RB <== CR[ADR]
05WRSPЗагрузка SP SP <== CR[ADR]
06PUSHПоместить в стек DEC(SP); M(SP) <== R
07POPИзвлечь из стека R <== M(SP); INC(SP)
08RETВозврат PC <== M(SP); INC(SP)
09HLTСтоп Конец командных циклов
10JMPБезусловный переход PC <== CR[ADR]
11JZПереход, если 0 if Acc = 0 then PC <== CR[ADR]
12JNZПереход, если не 0 if Acc ≠ 0 then PC <== CR[ADR]
13JSПереход, если отрицательно if Acc < 0 then PC <== CR[ADR]
14JNSПереход, если неотрицательно if Acc 0 then PC <== CR[ADR]
15JOПереход, если переполнение if |Acc| > 99999 then PC <== CR[ADR]
16JNOПереход, если нет переполнения if |Acc| 99999 then PC <== CR[ADR]
17JRNZЦикл DEC(R); if R ≠ 0 then PC <== CR[ADR]
18INTПрограммное прерывание DEC(SP); M(SP) <== FLAGS.PC; PC <== M(V)
19CALLВызов подпрограммы DEC(SP); M(SP) <== PC; PC <== CR(ADR)
20Нет   
21RDЧтение Acc <== DD
22WRЗапись M(*) <== Acc
23ADDСложение Acc <== Acc + DD
24SUBВычитание Acc <== Acc – DD
25MULУмножение Acc <== Acc x DD
26DIVДеление Acc <== Acc/DD
27Нет   
28EIРазрешить прерывание IF <== 1
29DIЗапретить прерывание IF <== 0
30MOVПересылка R1 <== R2
31RDЧтение Acc <== R*
32WRЗапись R* <== Acc
33ADDСложение Acc <== Acc + R*
34SUBВычитание Acc <== Acc – R*
35MULУмножение Acc <== Acc x R*
36DIVДеление Acc <== Acc/R*
37INВвод Acc <== ВУ(CR[ADR*])
38OUTВывод ВУ(CR[ADR*]) <== Acc
39Нет  
40Нет  
41RDIЧтение Acc <== I
42Нет  
43ADIСложение Acc <== Acc + I
44SBIВычитание Acc <== Acc –& I
45MULIУмножение Acc <== Acc x I
46DIVIДеление Acc <== Acc/I

В таблице приняты следующие обозначения:

Acc – аккумулятор
PC – счётчик команд
SP – указатель стека
RB – регистр базы
IR – регистр ввода
OR – регистр вывода
FLAGS – вектор флагов: IF,OV,S,Z
IF - флаг разрешения прерывания
DD –  данные, формируемые командой в качестве (второго) операнда: прямо или косвенно адресуемая ячейка памяти или трехразрядный непосредственный операнд;
R – содержимое регистра общего назначения (РОН)
R* –  содержимое РОН или косвенно адресуемой через регистр ячейки памяти;
M( ) – содержимое ячейки памяти
M(*) – содержимое ячейки памяти, прямо или косвенно адресуемой в команде;
CR – регистр команды
CR[ADR] – трёхразрядное поле ADR регистра CR;
CR[ADR*] – два младших разряда поля ADR регистра CR;
V –  адрес памяти, соответствующий вектору прерывания;
I –  пятиразрядный непосредственный операнд со знаком.


© Жмакин Анатолий Петрович (Курский государственный университет). anatoly.zhmakin@gmail.com

Оформление Web-страницы - Е.А.Еремин, 2010


Автор сайта - Евгений Александрович Еремин (Пермский государственный педагогический университет). e_eremin@yahoo.com