В системе команд базовой модели SIC представлены следующие операции:
- запись регистров в память и их загрузка из памяти;
- арифметические операции над целыми числами (все через регистр A);
- сравнение;
- логические операции;
- безусловный и условные переходы;
- взаимодействие с подпрограммами;
- операции обмена с внешними устройствами
и некоторые другие.
В SIC/XE добавлены:
- арифметические операции над вещественными числами и их сравнение;
- перевод чисел из целой формы в вещественную и обратно; нормализация;
- запись и чтение из памяти для дополнительных регистров;
- межрегистровые пересылки и операции;
- сдвиги;
- обращение к супервизору (операционной системе);
- чтение в память показаний таймера;
- симуляция DMA обмена
и некоторые другие.
Ниже приведена полная система команд для базовой модели SIC. Расширенную систему команд для SIC/XE можно посмотреть, например, на
этой странице
или в
этой презентации (ее размер более 7 мб).
Мнемоника | Код | Действия | Комментерии |
LDA m | 00 |
A <== (m..m+2) | (m..m+2) – 3 байта с адреса m |
LDX m | 04 | X <== (m..m+2) | |
LDL m | 08 | L <== (m..m+2) | |
STA m | 0C | (m..m+2) <== A | |
STX m | 10 | (m..m+2) <== X | |
STL m | 14 | (m..m+2) <== L | |
ADD m | 18 |
A <== A + (m..m+2) | |
SUB m | 1C |
A <== A - (m..m+2) | |
MUL m | 20 |
A <== A * (m..m+2) | |
DIV m | 24 |
A <== A / (m..m+2) | |
COMP m | 28 |
A : (m..m+2) | устанавливаются условные признаки |
TIX m | 2C |
X <== X +1; X : (m..m+2) | для организации циклов |
JEQ m | 30 |
PC <== m при = | |
JGT m | 34 |
PC <== m при > | |
JLT m | 38 |
PC <== m при < | |
JEQ m | 3C |
PC <== m | безусловный переход |
AND m | 40 | A <== A & (m..m+2) | |
OR m | 44 | A <== A | (m..m+2) | |
JSUB m | 48 |
L <== PC; PC <== m | обращение к подпрограмме |
RSUB m | 4C |
PC <== L | возврат из подпрограммы |
LDCH m | 50 |
A <== (m) | значение заносится в младший байт A |
STCH m | 54 |
(m) <== A | значение берется из младшего байта A |
RD m | D8 |
A <== устройство m | значение заносится в младший байт A |
WD m | DC |
устройство m <== A | значение берется из младшего байта A |
TD m | E0 |
тестировать устройство m | если ответ =0, то устройство занято |
STSW m | E8 |
(m..m+2) <== SW | чтение регистра состояния |
На первый взгляд кажется странным, что коды операций нарастают не на 1, как это традиционно принято, а на 4 (0, 4, 8, C, 10, 14, ...). Но такая нумерация позволяет сохранить незадействованными два младших бита, которые в SIC/XE используются для задания расширенных методов адресации.