Краткая информация по архитектуре


Сводные данные по архитектуре и основам программирования

МП-589 — учебная микроЭВМ (микроэлектронная вычислительная машина), построенная на базе микропроцессорного комплекса К589. Используется для изучения принципов построения секционируемых процессоров с микропрограммным управлением.
1. Архитектура
  • Тип: секционируемая 8-разрядная микроЭВМ с микропрограммным управлением.
  • Операционный блок (ОБ): построен из 4 двухразрядных ЦПЭ (центральных процессорных элементов).
  • ОЗУ (оперативное запоминающее устройство): 256 байт (адреса 0016FF16).
  • Магистрали:
    • A — адресная магистраль (адрес ОЗУ или ВУ)
    • B — вход данных от клавиатуры и внешних устройств
    • D — выход данных в ОЗУ и ВУ
    • M — обмен данными между ОЗУ и операционным блоком
2. Регистры

Внутри ЦПЭ (центрального процессорного элемента) имеются следующие регистры:

Регистр Назначение
AC Аккумулятор (накапливающий регистр)
R0–R7 Регистры общего назначения
R8 Счётчик
R9 Указатель стека (SP)
R10 Используется совместно с AC для расширения разрядности
RA Регистр адреса ОЗУ/ВУ
PC Программный счётчик — не доступен напрямую

Содержимое регистров AC, R0–R7, SP дублируется в ОЗУ по фиксированным адресам.

3. Карта памяти ОЗУ
Адрес (hex) Содержимое
00 Область
              стека и программы
F5                                     пользователя
F6 SP (указатель стека)
F7 R0
F8 R1
F9 R2
FA R3
FB R4
FC R5
FD R6
FE R7
FF AC (аккумулятор)
4. Стек
  • Реализован в ОЗУ.
  • Указатель стека — регистр R9 (SP).
  • Команды:
    • CALL n — вызов подпрограммы: SP уменьшается на 1, в [SP] записывается адрес возврата = адрес команды CALL + 2.
    • RET — возврат: из [SP] читается адрес возврата → загружается в PC, SP увеличивается на 1.
5. Система команд

Все команды кодируются в шестнадцатеричном виде. Длина команды — 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 байт)
6. Адресация внешних устройств (ВУ)

МикроЭВМ поддерживает до 256 ВУ (адреса 0016FF16).

Адрес Устройство
00 Счётчик длительности звука
01 Дисплей DL01
02 Дисплей DL02
03 Дисплей DL03
04 Дисплей DL04
05 Буфер звукового генератора
06 Регистр внешнего признака
07 Тумблерный регистр TRG (ввод)
08 Светодиодный регистр DRG (вывод)
7. Семисегментные индикаторы (DL01–DL04)

Каждый сегмент индикатора управляется отдельным битом:

a
───
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» на DL01

Код «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
            
8. Ввод данных
Ручной ввод данных с тумблеров TR6

Тумблеры 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
        

После запуска программы в пошаговом режиме:
— установить тумблеры в нужное положение,
— нажать «Пуск»,
— при повторном вводе — снова установить новое значение и нажать «Пуск».

Важно: Сигналы для условных переходов формируются временно и сразу используются для выбора адреса. Все условные команды — трёхбайтовые и явно задают оба возможных адреса перехода.
Последнее изменение: Вторник, 14 октября 2025, 23:11