Задание для выполнения

Пример ассемблерной программы для эмулятора УМПК-80

Следующая ассемблерная программа иллюстрирует, как с помощью 8-разрядного микропроцессора можно складывать многобайтные целые двоичные числа.

; ##### Сложение многобайтных чисел #####

SUB A; обнуление аккумулятора

LXI H,0840; инициализация указателя 1

MOV B,M; счетчик циклов в регистре B

LXI D,0850; инициализация указателя 2

madd:

INX D; инкремент указателя 1

INX H; инкремент указателя 2

LDAX D; загрузка в A очередного байта 2-го массива

ADC M; сложение с переносом

MOV M,A; сохранение промежуточного байта суммы

DCR B; декремент счетчика циклов

JNZ madd

HLT; останов

Размер массива задается в ячейке по адресу 0840Н. Многобайтные числа (складываемые массивы) находятся в памяти, начиная с адресов 0841Н и 0851Н соответственно, причем сначала хранятся младшие байты. Результат сложения записывается по адресу первого числа.

Данные для программы:

Org 0840H

DB 03 29 A4 50

Org 0851H

DB FB 37 28

Внимание. В эмуляторе УМПК-80 команда DAA коррекции результата сложения упакованных двоично-десятичных чисел работает неправильно, поэтому эмулятором нельзя пользоваться для работы с двоично-десятичными числами.

Действительно, программа

mvi A,28

mvi B,33

add B

daa

hlt

после выполнения должна возвратить в аккумуляторе значение 61, но эмулятор возвращает значение 11.

Команда DAA в эмуляторе неправильно работает и с неупакованными двоично-десятичными числами. Например, программа

mvi A,05

mvi B,03

add B

daa

hlt

после выполнения должна возвратить в аккумуляторе значение 08, но эмулятор возвращает значение 00.

Задание для выполнения

1. Откройте эмулятор УМПК-80, введите вручную приведенный ассемблерный код демонстрационной программы сложения многобайтных целых двоичных чисел. С помощью команд меню Просмотр/Средства стенда и Просмотр/Регистры и флаги откройте соответствующие окна отображения результатов выполнения. Ассемблируйте программу и, выполняя ее пошагово в режимах Командный цикл и Машинный цикл, наблюдайте за поведением регистров, флагов, текущим состоянием шин данных, адреса и управления.

2. Разработайте ассемблерную программу вычисления суммы элементов массива, состоящего из байтных двоичных чисел. Начальный адрес массива данных равен 0842Н; длину массива укажите в ячейке с адресом 0841Н. В программе используйте счетчик циклов. Результат последовательного сложения байтов сохраните по адресу 0840Н.

Данные для программы:

.org 0841H

03 35 72 0A

В отчете по лабораторной работе приведите блок-схему алгоритма разработанной программы и результаты ее тестирования.

3. Разработайте ассемблерную программу определения единицы в пятом разряде байта данных, считываемого с переключателей стенда (адрес порта ввода 05). В программе используйте маскирование битов двоичного числа (логическая операция AND) и условный переход. Программа должна опрашивать состояние порта ввода в бесконечном цикле и завершаться, как только пользователь включит пятый переключатель на стенде. Результат выполнения программы отобразите на светодиодных индикаторах (адрес порта вывода 05) следующим образом: 5-й бит данных

• сброшен - светодиоды погашены;

• установлен - все светодиоды горят.


ПРИЛОЖЕНИЕ

Мультиплексоры
  Мультиплексор 16→1
  Мультиплексор 8→1
  Два мультиплексора 4→1
  Четыре мультиплексора 2→1
  Мультиплексор 8→1 с тремя состояниями выхода
Демультиплексоры
  Два демультиплексора 1→4
   
Дешифраторы
  Дешифратор 3→8
  Дешифратор 4→16
  Дешифратор 4→10
  Два дешифратора 2→4
Шифраторы
  Приоритетный шифратор 10→4
  Приоритетный шифратор 8→3
   
Счетчики
  Синхронный 4-битный двоично-десятичный счетчик (clr)
  Синхронный 4-битный двоично-десятичный счетчик
  Синхронный 4-битный двоичный счетчик
  8-битный последовательно-параллельный сдвиговый регистр (sh)
  8-битный параллельно- последовательный сдвиговый регистр (ld)
  8-битный сдвиговый регистр (sh/ld)
Схемы контроля четности/нечетности
  9-битная схема контроля четности/нечетности
Сумматоры
  4-битный полный двоичный сумматор
Триггеры
  Четыре RS-триггера
4043, 4044 Четыре RS-триггера с z-состоянием выходов
  Четыре D-триггера
  Восемь D-триггеров с z-состоянием выходов
  Восемь D-триггеров с динамическим POS-управлением
  Шесть D-триггеров с динамическим POS-управлением
  Четыре D-триггера с динамическим POS-управлением
  Два D-триггера с предустановкой и сбросом
  Два D-триггера со сбросом и динамическим POS-управлением
  Четыре D-триггера со сбросом
  Восемь D-триггеров со сбросом
  Два D-триггера с предустановкой и сбросом
  Два JK-триггера
  Два JK-триггера с предустановкой
7478, 74112 Два JK-триггера с предустановкой и динамическим NEG-управлением
74109, 4027 Два JK-триггера с предустановкой и динамическим POS-управлением
  Два двухступенчатых JK-триггера с предустановкой и динамическим NEG-управлением

*) NEG – отрицательный фронт (спад)

POS – положительный фронт


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: