Главная страница

ПРАКТИКУМ ПО ОМПТ. Практикум по основам микропроцессорной техники Саранск 2003 удк 004. 384 378. 146147


Скачать 0.74 Mb.
НазваниеПрактикум по основам микропроцессорной техники Саранск 2003 удк 004. 384 378. 146147
АнкорПРАКТИКУМ ПО ОМПТ
Дата29.05.2022
Размер0.74 Mb.
Формат файлаdoc
Имя файлаПРАКТИКУМ ПО ОМПТ.doc
ТипПрактикум
#555855
страница14 из 18
1   ...   10   11   12   13   14   15   16   17   18

4.4. Лабораторная работа №4. Сложные вычисления


Составить и отладить программу, выполняющую действия в соответствии с заданным вариантом (табл. 10).

Отчет по лабораторной работе должен содержать:

  • номер и содержание заданного варианта;

  • алгоритм программы;

  • текст программы на языке ассемблера;

  • текст программы в машинных кодах (результаты трансляции);

  • результаты выполнения контрольного примера.

В качестве примера подобной программы ниже приведена программа умножения 8-битных двоичных чисел (пример №4).

4.5. Пример программы к лабораторной работе №1.


Необходимо составить программу, реализующую следующую функцию:

.

Так как ассемблер является языком низкого уровня, т.е. его команды оперируют непосредственно со структурными элементами микропроцессорной системы, программист перед началом составления программы вычислений должен знать, в какой форме будут представлены входные и выходные переменные, по каким адресам ОЗУ они будут размещены. Из задания к лабораторной работе видно, что исходные переменные X, Y и результат вычислений Z являются числами со знаком, поэтому они представляются в дополнительном коде. Длина их не превышает одного байта. Расположим переменные Х и Y в ОЗУ по адресам 8300Н и 8301Н соответственно. Результат Z после окончания вычислений разместим в ОЗУ по адресу 8300Н, т.е. на месте исходной переменной X.

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

Адрес 8300Н используется в ходе выполнения программы несколько раз, сначала – для считывания переменной Х, а после окончания вычислений – для занесения значения Z. Поэтому для упрощения обращения к ячейке памяти с этим адресом занесем его в регистровую пару HL, наиболее удобную для организации косвенной регистровой адресации.

Умножение на целое число в функции реализуется путем многократного сложения.

Так как данные представляются в дополнительном коде, то для получения абсолютной величины значения Y-25, в случае, если оно отрицательно, используются операции инверсии и добавления единицы.

После составления алгоритма записывается соответствующая программа на языке ассемблера. Полученные алгоритм решения задачи и текст программы с необходимыми комментариями приведены ниже. Команды, на которые в программе есть переходы, помечены метками ADR1, ADR2 и FIN.

При отладке программы на УОУ “Электроника-580” завершающей программу командой является RST 4, которая выполняет функцию “возврат к монитору”.

Получение машинных кодов команд программы при работе на УОУ “Электроника-580” осуществляют вручную с помощью таблицы команд. Альтернативный вариант трансляции – использование программы кросс-ассемблера AVMAC85.

Листинг трансляции рассматриваемой программы также приведен ниже. В нем показан пример введения и использования символьной константы CH1, которой присваивается с помощью команды транслятора EQU значение 17. Начальный адрес размещения рассматриваемой программы в памяти программ отладочного устройства определяется равным 8200H с помощью команды транслятора ORG. Длина полученного кода программы составляет 28 байт.

Первая команда LXI H, 8300H трехбайтная и занимает три ячейки памяти, причем во второй ячейке размещается младший байт, а в третьей – старший байт числа 8300H. Далее следуют две однобайтные команды, потом – двухбайтная команда ADI CH1, занимающая ячейки 8205H и 8206H, причем во второй ячейке размещается константа CH1=17=11H. Далее опять следует однобайтная команда и т.д.

В командах переходов при трансляции вместо символических адресов – меток подставляются соответствующие им конкретные физические адреса памяти – 8212H, 821AH и 821BH. Так как переходы в примере выполняются вперед по программе, то при ручной трансляции этих команд физические адреса переходов еще неизвестны, и необходимо зарезервировать две ячейки памяти



; запись в регистры

; H,L адреса 8300H

; чтение X из памяти

; по адресу из H,L
; получение 2*X
; 2*X + 17
; сохранение 1-го

; результата в B

; чтение Y из памяти

; по адресу 8301H
; Y - 25

; переход на ADR1,

; если Y – 25  0
; изменение знака

; Y – 25 c “-“ на “+”

; (операция “ин-

; версия плюс 1”)
; сравнение 2-го ре-

; зультата (│Y - 25│)

; с 1-ым и переход

; на ADR2, если

;
; запись в память

; по адресу из H,L
; переход на FIN
; запись
в память

; по адресу из H,L
;
конец программы

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

После ввода в память УОУ программы в машинных кодах необходимо подготовить и ввести в соответствующие ячейки памяти исходные переменные примера. Далее проводится отладка программы – проверка правильности ее функционирования.

Отладка программы может быть также выполнена с помощью отладчика-симулятора AVSIM85.

Для рассмотренной программы были получены следующие результаты контрольного примера:

При X1=-4=FCH, Y1=-8=F8H - Z=21H=33;

При X2=21=15H, Y2=-8=F8H - Z=3BH=59.
ЛИСТИНГ ТРАНСЛЯЦИИ ПРОГРАММЫ
1 DEFSEG LAB1, ABSOLUTE=0000

2 SEG LAB1

3

=0011 4 CH1: EQU 17

5

=8200 6 ORG 8200H

7

8200 21 00 83 8 LAB1: LXI H,8300H

8203 7E 9 MOV A,M

8204 87 10 ADD A

8205 C6 11 11 ADI CH1

8207 47 12 MOV B,A

8208 3A 01 82 13 LDA 8301H

820B D6 19 14 SUI 25

820D F2 12 82 15 JP ADR1

8210 2F 16 CMA

8211 3C 17 INR A

8212 B8 18 ADR1: CMP B

8213 F2 1А 82 19 JP ADR2

8216 70 20 MOV M,B

8217 C3 1В 82 21 JMP FIN

821A 77 22 ADR2: MOV M,A

821B 00 23 FIN: NOP

24 END
1   ...   10   11   12   13   14   15   16   17   18


написать администратору сайта