Краткая информация по архитектуре
Сводные данные по архитектуре и основам программирования
- Тип: секционируемая 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
После запуска программы в пошаговом режиме:
— установить тумблеры в нужное положение,
— нажать «Пуск»,
— при повторном вводе — снова установить новое значение и нажать «Пуск».