Лабораторная работа. Основы работы с регистрами и преобразования форматов представления чисел

Постановка задачи

Разработать и отладить две независимые программы для каждого задания. Каждая программа должна начинаться с адреса 10₁₆. Для Задания 1 использовать режим RC (циклическое исполнение), для Задания 2 — режим RS (пошаговое).

Задание 1. Реализация циклического «бегущего единичного бита» с визуализацией на DRG

Разработать программу, выполняющую следующие действия:

  1. Загрузить в аккумулятор AC начальное значение 01₁₆ (0000 0001₂), не используя запись в память.
  2. Выполнить 7 последовательных сдвигов влево, каждый раз выводя результат на светодиодный регистр DRG.
    • После каждого сдвига младший разряд заполняется 0 (использовать команду логического сдвига влево, например, SLA).
  3. Затем выполнить 7 последовательных сдвигов вправо, также выводя результат на DRG.
    • После каждого сдвига старший разряд заполняется 0 (использовать команду логического сдвига вправо, например, SRA).
  4. Для реализации сдвигов использовать доступные команды микроЭВМ (арифметические операции и условные переходы для циклов).
  5. Визуально проконтролировать корректность «бегущего шарика» по светодиодам DRG в режиме RC (циклическое исполнение).
Задание 2. Преобразование числа из прямого кода в дополнительный код с визуализацией результата

Разработать программу, выполняющую следующие действия:

  1. Ввести значение, установленное на тумблерном регистре TRG, в аккумулятор AC (в формате прямого кода со знаком).
  2. Преобразовать это значение в дополнительный код по следующему алгоритму:
    • Если старший бит (бит 7) = 0 (число неотрицательное), то дополнительный код совпадает с исходным.
    • Если старший бит = 1 (число отрицательное в прямом коде), то:
      1. Извлечь модуль числа (биты 0–6, маскируя бит 7).
      2. Инвертировать биты модуля (7 бит, дополненные 0 до 8 бит).
      3. Прибавить 1 к результату.
      4. Установить бит 7 в 1 (знак отрицательный).
  3. Вывести полученное значение в дополнительном коде на светодиодный регистр DRG.
  4. Определить знак результата и вывести индикацию на дисплей DL:
    • Если результат ≥ 0 (старший бит = 0) → вывести 4 пустых символа на DL.
    • Если результат < 0 (старший бит = 1) → вывести 3 пустых символа и символ «–» на DL.
Формат представления чисел

Прямой код со знаком (для Задания 2):

  • Бит 7 — знак числа (0 = положительное, 1 = отрицательное)
  • Биты 6–0 — модуль числа (диапазон 0–127)

Примеры:

Число Двоичный код (прямой) Hex (прямой) Дополнительный код (Hex)
+5 0000 0101 05₁₆ 05₁₆
-3 1000 0011 83₁₆ FD₁₆
-0 1000 0000 80₁ₖ 00₁ₖ

Примечание: Для Задания 1 формат не применяется — используются только биты для визуализации сдвигов.

Требования к реализации
  • Каждую программу начать с адреса 10₁₆.
  • Использовать константы (01, 07, 7F, 80₁ₖ) заранее в памяти, если нужно.
  • Для Задания 1: обеспечить циклическое выполнение (JMP в начало).
  • Для Задания 2: использовать подпрограммы для преобразования, если возможно.
  • Обеспечить визуальную индикацию на DRG (для обеих) и DL (для Задания 2).
Порядок выполнения
  1. Разработать алгоритм программы в виде блок-схемы или структурной схемы для каждого задания.
  2. Написать программу в машинных кодах микроЭВМ МП-589 (отдельно для каждого задания).
  3. Записать константы в ячейки памяти (при использовании).
  4. Ввести программу в микроЭВМ, начиная с адреса 10₁ₖ.
  5. Проверить правильность ввода программы.
  6. Выполнить программу в режиме RC для Задания 1 и RS для Задания 2 с тестовыми данными.
  7. Проверить корректность получаемых результатов.
  8. Оформить отчёт.
Тестовые примеры

Задание 1: Визуально проверить последовательность на DRG.

Шаг Сдвиг влево (Binary/Hex) Сдвиг вправо (Binary/Hex)
000000001 / 01
100000010 / 0210000000 / 80
200000100 / 0401000000 / 40
300001000 / 0800100000 / 20
400010000 / 1000010000 / 10
500100000 / 2000001000 / 08
601000000 / 4000000100 / 04
710000000 / 8000000010 / 02

После 7-го вправо — возврат к 01, цикл повторяется.

Задание 2:

Вход (TRG, hex/dec) Знак входа Результат в доп. коде (DRG, hex) Индикация знака (DL)
05₁ₖ (+5) + 05₁ₖ 4 пустых
83₁ₖ (-3) - FD₁ₖ 3 пустых + «–»
80₁ₖ (-0) - 00₁ₖ 4 пустых (≥0)
Содержание отчёта
  1. Титульный лист
  2. Цель работы
  3. Постановка задачи
  4. Алгоритм решения задачи (блок-схема или структурная схема) для каждого задания
  5. Текст программы в машинных кодах с подробными комментариями (для каждого задания)
  6. Таблица результатов тестирования программы (включая hex/dec, визуальные описания и индикацию DL)
  7. Выводы по работе
Контрольные вопросы
  1. В чём различие между логическим и арифметическим сдвигом? Как это влияет на знак числа?
  2. Почему в Задании 1 используются сдвиги с заполнением нулями (логические), а не арифметические?
  3. Опишите алгоритм преобразования отрицательного числа из прямого кода в дополнительный код.
  4. Почему для положительных чисел прямой и дополнительный коды совпадают?
  5. Как реализованы циклы в программе для Задания 1 (используя условные переходы)?
  6. Какие команды микроЭВМ используются для ввода с TRG и вывода на DRG/DL?
  7. Для чего используется дисплей DL в Задании 2? Как кодируется символ «–»?
  8. Что произойдёт при вводе числа с модулем >127 (например, 100₁ₖ)?
  9. Как организовать циклическое исполнение в режиме RC?
  10. В чём преимущество дополнительного кода перед прямым для арифметических операций?
Последнее изменение: вторник, 28 октября 2025, 21:00