Самостоятельная программа 2

Задание:

Вывести на семисегментную индикацию массив из 20 чисел

Текст программы представлен в Таблице 17.

Таблица 17

Основная программа отображения массива из 20 чисел
  lxi sp инициализация стека по адресу 000277
     
     
  mvi a инициализация вывода
     
  out  
     
  lxi h загрузка в ячейку памяти по адресу 000320 значения 020
    это счетчик элементов
    массива
  mvi m  
     
  lxi h переход к ячейке памяти, предшествующей данным массива
     
     
  inr l ** HL++
  push h запись в стек адреса элемента
  mvi e Е = 020 - число отображений элемента
     
  call * вызов подпрограммы отображения элемента
     
     
  dcr e E--
  jnz если Е!=0 переход к *
     
     
  lxi h переход к счетчику неотображенных элементов
     
     
  dcr m уменьшение этого счетчика на 1
  pop h востановление из стека адреса элемента
  jnz переход к **, если счетчик элементов != 0
     
     
  hlt конец программы
Подпрограмма отображения числа
  mvi d D = 377 - число отображений цифр
     
  push h запись в стек адреса элемента
  mov a, m запись в аккумулятор отображаемого числа
  ani запись в аккумулятор трех младших разрядов числа -
    первой восьмиразрядной цифры
  adi получение адреса семисегментного кода цифры
     
  mov l, a переход к ячейке памяти, содержащей семисегментный код цифры
  mov a, m запись в аккумулятор семисегментного кода цифры
  out вывод цифры на индикацию
     
  pop h востановление из стека адреса элемента
  push h запись в стек адреса элемента
  mov a, m запись в аккумулятор отображаемого числа
  rrc сдвиг числа на три разряда вправо
  rrc  
  rrc  
  ani запись в аккумулятор трех младших разрядов полученного числа -
    второй восьмиразрядной цифры
  adi получение адреса семисегментного кода цифры
     
  mov l, a переход к ячейке памяти, содержащей семисегментный код цифры
  mov a, m запись в аккумулятор семисегментного кода цифры
  out вывод цифры на индикацию
     
  pop h востановление из стека адреса элемента
  push h запись в стек адреса элемента
  mov a, m запись в аккумулятор отображаемого числа
  rlc сдвиг числа на три разряда влево
  rlc  
  nop  
  ani запись в аккумулятор трех младших разрядов полученного числа -
    второй восьмиразрядной цифры
  adi получение адреса семисегментного кода цифры
     
  mov l, a переход к ячейке памяти, содержащей семисегментный код цифры
  mov a, m запись в аккумулятор семисегментного кода цифры
  out вывод цифры на индикацию
     
  pop h востановление из стека адреса элемента
  dcr d D--
  jnz переход к началу цикла индикации трех цифр отображаемого числа,
    если D!= 0
     
  ret Возврат из подпрограммы
Семисегментные коды
    семисегментный код 0
    семисегментный код 1
    семисегментный код 2
    семисегментный код 3
    семисегментный код 4
    семисегментный код 5
    семисегментный код 6
    семисегментный код 7

Обмен информацией между микропроцессором и периферийным устройством осуществляется через специальные схемы сопряжения, или интерфейсные схемы. В данном случае роль интерфейсной схемы выполняет БИС программируемого параллельного интерфейса КР580ВВ55, включающей в себя 3 8-разрядных порта А, В и С для подключения периферийных устройств к системным шинам.

Структурная схема БИС приведена на Рис. 7. Она включает в себя двунаправленный буфер ШД, три информационных регистра каналов А, В и С и схему выбора канала и управления, содержащую регистр управляющего слова. Входы А0 и А1 данной схемы задают внутренний регистр (А, В, С или регистр управления).

Рис. 7

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

- режим 0: синхронный обмен по всем трем каналам;

- режим 1: асинхронный обмен или обмен по готовности по каналам А и В;

- режим 2: стробируемый двунаправленный обмен только через канал А.

В программе используется режим 0.

Программа вывода 20 чисел на семисегментную индикацию состоит из следующих частей:

1. основная программа, задает цикл отображения 20 чисел массива, в ней происходит инициализация стека, инициализация устройства отображения; каждый элемент в цикле отображается Е раз;

2. подпрограмма, реализующая цикл отображения одного числа, в этой подпрограмме происходит разбиение числа на цифры и вывод на индикацию семисегментного кода, соответствующего цифре, число отображается в цикле D раз;

3. семисегментные коды цифр от 0 до 7.

8. Заключение

Процессор К580 является прототипом процессора 8080 фирмы Intel. Процессор обладает очень простой и небольшой по количеству системой команд и малым числом способов адресации. С одной стороны это упрощает его программирование, с другой стороны это ограничивает программиста в использовании более сложных команд, таких, например, как умножение и деление.