Цифровые устройства и микропроцессорные системы. Задачи и упражнения: Учебное пособие (Представление чисел и арифметические операции в цифровых устройствах. Микропроцессорные устройства и системы на базе МП КР580ВМ80), страница 60

В программе использована команда зацикливания LOOP, заменяющая пару команд – декремент и условный переход по ненулевому результату. Обозначение BEG [SI] в команде суммирования ADD указывает на то, что эффективный адрес очередного слова определяется суммированием начального адреса BEG и содержимого индексного регистра SI.

Число тактов для команды ADD AX, BEG [SI] определяется как n' = 9 + nЕА, где nеа — число тактов для вычисления эффективного адреса. В данном случае EA = (SI) + disp H,L, где disp H,L — смещение, непосредственно задаваемое в команде как адрес ячейки BEG [SI] (относительная регистровая адресация). При этом nEA = 9 и n'=18.

Число тактов для команды LOOP ROT при выполнении условия (СХ) ¹ 0 равно 17, при невыполнении - 5. Число тактов для команды MOV RES,АХ равно n" = 9 + nЕА, и, поскольку имеет место прямая адресация памяти, nЕА = 6 и n" =15.

Цикл выполняется N раз, поэтому суммарное число тактов

n = (4 + 4 + 2) + (18 + 4 + 17)×N + (18 + 4 + 5 + 15) = 52 + 39N.

При fт = 5 МГц и N = 100 общее время выполнения фрагмента программы

Р6.62. Фрагмент программы:

MOV   BL,OA7H        ;3агрузка в регистр BL константы k1

MOV   CL,95H           ;3агрузка в регистр CL константы k2

INPUT:            IN        07                    ;Ввод в регистр AL набора

;переменных D из порта 07

XOR    BL,AL             ;Сравнение байтов k1и D

JZ        OUT1              ;Переход к OUT1 при kl = D

XOR    CL,AL             ;Сравнение байтов k2 и D

JZ        OUT1              ;Переход от OUT1 при k2 = D

JMP     OUT0              ;Переход от OUT0

OUT1:             MOV   AL,01H           ;3агрузка регистра AL единицей

OUT    05                    ;Вывод единичного результата

;через порт 05

JMP     INPUT             ;Возврат к INPUT

OUT0:             MOV   AL, ООН        ;3агрузка регистра AL нулем

OUT    05                 ;Вывод нулевого результата через порт 05

JMP     INPUT             ;Возврат к INPUT

Команды XOR — исключающее ИЛИ (сумма по mod 2) позволяют сравнить содержимое регистра AL, т. е. входной набор переменных, с содержимым регистров BL и CL, т.е. с минтермами. При совпадении (BL) или (CL) с (AL) (BL)Å(AL) = 0 или (CL)Å(AL) = 0, и через порт 05 выводится единица, в противном случае — нуль.

Р6.63. Фрагмент программы:

MOV   АХ, [ВХ]                    ;3агрузка операнда X в регистр АХ

MUL   АХ, [СХ]                    ;Умножение X на Y

ADD    AX, [DX]                    ;Прибавление Т

ADD    AX, АХ                   ;Удвоение результата

СМР    АХ,015ЕН                  ;Сравнение с константой 350

JS        PROC1                        ;Переход по адресу PROC1 при z < 350

OUT    02                                ;Вывод результата

В программе используется операция беззнакового умножения MUL. Поскольку операнды 8 битовые, произведение может иметь 16 бит, и для результата используется регистр АХ. Для перехода по метке PROC1 используется команда сравнения СМР и условный переход по отрицательному результату JS.

Р6.64. Программно-доступными узлами МК1816 являются: 8-разрядное АЛУ, стираемое и перепрограммируемое ППЗУ емкостью 1 Кбайт, регистровое ОЗУ емкостью 64 байт. 8-разрядный программируемый таймер-счетчик, 8-уровневый указатель стека, программно-управляемые схемы ввода-вывода (27 линий), 12-разрядный счетчик команд.

Р6.65. Поскольку счетчик команд МК1816 содержит 12 разрядов, адресуемая емкость памяти 212 = 4К ячеек.

Р6.66. Внутреннее ОЗУ МК1816 имеет общую емкость 64 байта (рис. Р6.3, а). Два банка 8-битовых РОНов RBO и RB1 по 8 регистров в каждом банке, т. е. всего 16 регистров, доступны командам с прямой адресацией. Остальные 48 регистров доступны командам с косвенной адресацией, причем адреса размещаются в аккумуляторе или РОНах— R0 и R1 каждого банка. Банк выбирается с помощью команды SEL RB0 или SEL RB1. При выполнении каждой из этих команд номер выбранного банка фиксируется, и в дальнейшем, вплоть до подачи другой команды, используются РОНы только этого банка. Ячейки ОЗУ с адресами 8...23 адресуются также указателем стека и могут быть использованы в качестве 8-уровневого стека.