ПРАКТИКУМ ПО ОМПТ. Практикум по основам микропроцессорной техники Саранск 2003 удк 004. 384 378. 146147
Скачать 0.74 Mb.
|
4.7. Рекомендации по построению программы к лабораторной работе № 3Структура программы, совмещающей функции двух ранее разработанных программ с выводом значений X, Y и Z на индикацию, представлена на рис. 12. Рис. 12. Структура программы к лабораторной работе № 3 Для реализации однотипных действий по выводу байта данных на индикацию здесь предусмотрено использование подпрограммы DIGIT, текст которой на языке ассемблера приведен ниже. Подпрограмма имеет два входа – DIGIT1 для вывода в виде шестнадцатеричного символа старшей тетрады байта, помещенного в аккумулятор, и DIGIT2 – для вывода младшей тетрады байта. Соответствующий значению тетрады адрес таблицы семисегментных кодов формируется в регистровой паре HL. Адрес нужной ячейки буфера индикации перед обращением к подпрограмме должен быть помещен в регистровую пару BC. Длина подпрограммы – 14 байт. DIGIT1: RRC ; перемещение RRC ; старшей тетрады RRC ; в байте на место RRC ; младшей тетрады DIGIT2: ANI 0FH ; обнуление старшей тетрады ADI B3H ; получение младшего байта адреса MOV L, A ; таблицы семисегментных кодов MVI H, 02H ; загрузка старшего байта адреса MOV A, M ; загрузка кода символа из таблицы STAX B ; вывод символа на индикатор RET ; возврат из подпрограммы Например, для вывода с помощью подпрограммы DIGIT на индикаторы 3 и 4 значения X, считываемого из ячейки памяти 8300H, может быть использован следующий фрагмент программы. LXI B, 83FAH ; загрузка адреса индикатора 3 LDA 8300H ; загрузка числа X MOV D, A ; дублирование X в регистре D CALL DIGIT1 ; вывод старшей цифры X INX B ; получение адреса индикатора 4 MOV A, D ; восстановление X в аккумуляторе CALL DIGIT2 ; вывод младшей цифры X Аналогичным образом могут быть выведены на индикацию значения Y и Z. Общая длина программы к лабораторной работе № 3 получится при этом около 130 - 140 байт (28 байт – пример программы 1, 51 байт – пример программы 2, 14 байт – подпрограмма DIGIT плюс дополнительные команды по выводу X, Y и Z на индикацию). 4.8. Пример программы к лабораторной работе №4Ниже в качестве примера приведена подпрограмма умножения двух однобайтных целых чисел без знака MUL88. Она реализует алгоритм умножения “младшими разрядами вперед со сдвигом частичной суммы”. Множимое помещается в регистр D, множитель в регистр С, произведение – двухбайтное число - образуется в регистрах В и С. При выполнении умножения последовательно анализируются биты множителя, начиная с младшего, помещаемые по команде RAR (циклический сдвиг вправо через перенос) в разряд переноса CY. Если очередной бит множителя ненулевой, то множимое добавляется к старшему байту частичной суммы, находящемуся в регистре B. Далее выполняется сдвиг этого байта вправо (вторая команда RAR), при этом его младший бит вытесняется в разряд переноса CY. При сдвиге в следующем цикле содержимого регистра C значение CY заносится в его старший бит, а в CY помещается очередной бит множителя. Таким образом в регистре C множитель постепенно вытесняется младшим байтом частичной суммы, которая после выполнения восьми циклов дает результат умножения. Длина описанной программы - 19 байт. MUL88: MVI B, 00H ; сброс старшего байта произведения MVI E, 08H ; установка числа бит NXBIT: MOV A, C ; множитель занести в аккумулятор RAR ; очередной бит во флажке “СY” MOV C, A ; возвращение множителя DCR E ; декремент счетчика бит RM ; умножение закончено? MOV A, B ; старший байт произведения JNC NOADD ; бит множителя равен нулю ADD D ; суммирование множимого NOADD: RAR ; сдвиг частичной суммы MOV B, A ; возвращение старшего байта JMP NXBIT ; умножение на следующий бит 5. ЗАДАНИЯ ДЛЯ КОНТРОЛЬНЫХ РАБОТ5.1. Контрольная работа №1. Системы счисления и кодыДаны два десятичных числа A и B (варианты исходных данных представлены в табл. 13). Представить, как будут выглядеть эти числа в двоичной системе счисления в дополнительном коде в 8-битном микропроцессоре. Выполнить над полученными числами в двоичной системе счисления следующие арифметические, логические и сдвиговые операции: а) A + B; б) A - B; в) A * 3; г) ИЛИ; д) И; е) ИСКЛЮЧАЮЩЕЕ ИЛИ; ж) логический сдвиг A влево; з) циклический сдвиг B вправо. Представить полученные результаты в десятичной системе счисления. Представить исходные числа и полученные результаты в шестнадцатеричной системе счисления. Представить число A в двоично-десятичном коде. Таблица 13. Варианты исходных данных к контрольной работе №1
Все полученные в ходе выполнения контрольной работы значения (в десятичном, двоичном и шестнадцатеричном виде, а число A, кроме того, и в двоично-десятичном коде), а также действия над операндами в двоичной системе счисления свести в таблицу (табл. 14). Операцию A – B можно выполнить двумя способами – по правилам операции вычитания или путем сложения с дополнением к вычитаемому, как это реально делает микропроцессор. Операцию А * 3 необходимо выполнить именно по правилам операции умножения, а не путем тройного сложения. Все полученные результаты в десятичной системе счисления необходимо интерпретировать как числа со знаком. Таблица 14. Форма для выполнения контрольной работы №1
|