Краткая информация по архитектуре
Сводные данные по архитектуре и основам программирования
- Тип: секционируемая 8-разрядная микроЭВМ с микропрограммным управлением.
- Операционный блок (ОБ): построен из 4 двухразрядных ЦПЭ (центральных процессорных элементов).
- ОЗУ (оперативное запоминающее устройство): 256 байт (адреса 0016–FF16).
- Магистрали:
- A — адресная магистраль (адрес ОЗУ или ВУ)
- B — вход данных от клавиатуры и внешних устройств
- D — выход данных в ОЗУ и ВУ
- M — обмен данными между ОЗУ и операционным блоком
Внутри ЦПЭ (центрального процессорного элемента) имеются следующие регистры:
Регистр | Назначение |
---|---|
AC | Аккумулятор (накапливающий регистр) |
R0–R7 | Регистры общего назначения |
R8 | Счётчик |
R9 | Указатель стека (SP) |
R10 | Используется совместно с AC для расширения разрядности |
RA | Регистр адреса ОЗУ/ВУ |
PC | Программный счётчик — не доступен напрямую |
Содержимое регистров AC, R0–R7, SP дублируется в ОЗУ по фиксированным адресам.
Адрес (hex) | Содержимое |
---|---|
00 | Область |
… | стека и программы |
F5 | пользователя |
F6 | SP (указатель стека) |
F7 | R0 |
F8 | R1 |
F9 | R2 |
FA | R3 |
FB | R4 |
FC | R5 |
FD | R6 |
FE | R7 |
FF | AC (аккумулятор) |
- Реализован в ОЗУ.
- Указатель стека — регистр R9 (SP).
- Команды:
- CALL n — вызов подпрограммы: SP уменьшается на 1, в [SP] записывается адрес возврата = адрес команды CALL + 2.
- RET — возврат: из [SP] читается адрес возврата → загружается в PC, SP увеличивается на 1.
Все команды кодируются в шестнадцатеричном виде. Длина команды — 1, 2 или 3 байта.
5.1 Арифметические и логические операции
- 0 → Rn — обнулить регистр Rn
- Rn + AC → Rn, AC — сложить Rn и аккумулятор, результат в оба
- ĀC → AC — инверсия содержимого аккумулятора
- FF → AC — загрузить FF16 в аккумулятор
5.2 Работа с памятью
- Mn → AC — загрузить из ОЗУ (адрес n) в аккумулятор
- AC → Mn — сохранить аккумулятор в ОЗУ по адресу n
- Rn → RA, M → AC — косвенная загрузка: адрес из Rn, данные → AC
- Rn → RA, AC → M — косвенная запись: адрес из Rn, данные из AC
5.3 Ввод-вывод (ВУ — внешние устройства)
- INn → AC — ввести данные с ВУ (адрес n) в аккумулятор
- AC → OUTn — вывести данные из аккумулятора на ВУ (адрес n)
- MSC — воспроизведение музыкального текста (см. таблицу нот)
5.4 Переходы
Команда | Длина | Описание |
---|---|---|
GOTOn | 2 байта | Безусловный переход на адрес n |
T Z Rn | 3 байта | Если Rn = 0 → переход на адрес из 2-го байта, иначе — из 3-го |
A L Rn | 3 байта | Сложить Rn + AC → AC, затем условный переход по сигналу результата |
SRA0 / SRA1 | 3 байта | Сдвиг AC вправо; в старший разряд — 0 (SRA0) или 1 (SRA1); переход по младшему биту ДО сдвига |
IFS | 3 байта | Переход по сигналу RDY0 от звуковой платы (1 — молчание, 0 — звук) |
5.5 Работа со стеком
- CALL n — вызов подпрограммы (2 байта)
- RET — возврат из подпрограммы (1 байт)
МикроЭВМ поддерживает до 256 ВУ (адреса 0016–FF16).
Адрес | Устройство |
---|---|
00 | Счётчик длительности звука |
01 | Дисплей DL01 |
02 | Дисплей DL02 |
03 | Дисплей DL03 |
04 | Дисплей DL04 |
05 | Буфер звукового генератора |
06 | Регистр внешнего признака |
07 | Тумблерный регистр TRG (ввод) |
08 | Светодиодный регистр DRG (вывод) |
Каждый сегмент индикатора управляется отдельным битом:
───
f│ │b
│ g │
───
e│ │c
│ │
───
d • h
Сегмент | Значение |
---|---|
a | 0116 |
b | 0216 |
c | 0416 |
d | 0816 |
e | 1016 |
f | 2016 |
g | 4016 |
h | 8016 |
Пример: символ L = f + e + d = 2016 + 1016 + 0816 = 3816.
Код «8» = a+b+c+d+e+f+g = 01+02+04+08+10+20+40 = 7F16
10 9E Mn → AC ; прочитать код из памяти по адресу 11 00 00 ; адрес = 00 (там лежит 7F) 12 A4 AC → OUTn ; вывести на 1 индикатор 13 01 01 ; DL01 = адрес 01 14 A0 END
Тумблеры TRG (адрес ВУ = 07) позволяют вручную задать 8-битное значение. Программа читает его в аккумулятор и может использовать для вывода, хранения или вычислений.
Сценарий: ввести число и сохранить его в память по адресу 10
10 4E INn → AC ; прочитать значение с тумблеров TRG 11 07 07 ; адрес ВУ = 07 12 9F AC → Mn ; записать в память 13 10 10 ; адрес ячейки = 10 14 A0 END
Сценарий: ввести два байта и сложить их
Первое число — ввести и сохранить в R0. Второе — ввести и сложить с R0.
10 4E INn → AC ; первое число с TR6 11 07 07 12 5A AC → R0 ; сохранить в R0 13 4E INn → AC ; второе число с TR6 14 07 07 15 77 R0 + AC → R0, AC ; сложить (результат в AC и R0) 16 A4 AC → OUTn ; вывести сумму на DRG (для контроля) 17 08 08 ; DRG = адрес 08 18 A0 END
После запуска программы в пошаговом режиме:
— установить тумблеры в нужное положение,
— нажать «Пуск»,
— при повторном вводе — снова установить новое значение и нажать «Пуск».