Главная страница
Навигация по странице:

  • Практическая работа №21. Ознакомление с учебной микро-ЭВМ «Электроника-580» (проектироваочные программы) Цель работы

  • Теоретическая часть.

  • Порядок выполнения работы

  • Содержание отчёта 1.Исходные данные и программы СМА1, СМА2 и СЛАМ на Ассемблере и машинном языке. 2.Тест-программа проверки функционирования ОЗУ на Ассемблере. Контрольные вопросы

  • Практическая работа №22. Работа на учебной микро-ЭВМ (разработка архитектуры МП). Цель работы

  • Практическая часть. Пример программы к практической работе.

  • Методические указания для практических занятий по дисциплине мдк. 02. 01


    Скачать 7.37 Mb.
    НазваниеМетодические указания для практических занятий по дисциплине мдк. 02. 01
    Дата09.09.2022
    Размер7.37 Mb.
    Формат файлаpdf
    Имя файлаMetod_Mikroprocessornye-sistemy_PZ_09.02.01_2020.pdf
    ТипМетодические указания
    #669073
    страница16 из 43
    1   ...   12   13   14   15   16   17   18   19   ...   43
    Подпрограмма и стек
    Использование стековой памяти оказалось весьма эффективным при построении компилирующих и интерпретирующих программ: программ, использующих многократные вычисления алгебраических функций и нестандартные арифметические операции; программ с обработкой операндов с последовательным размещением.
    Принцип работы стековой памяти поясняется рисунком 7.
    Рисунок 7
    Работа стековой памяти осуществляется по правилу: "последним записан - первым считан". Так, вначале записывается в стек (рисунок 7а) число Х1. Затем число Х1 сдвигается вверх при записи числа Х2 в стек. Тем самым любое записываемое число Хi сдвигает массив "вверх" и размещается в нижней ячейке. При чтении считывается содержимое самой "нижней "ячейки, а весь оставшийся массив чисел сдвигается "вниз". Размещая и считывая двоичные коды в указанном порядке, легко организовать поиск последнего записанного кода или организовать последовательную обработку кодов Хn,. . .,Х1. Однако микрооперация сдвига массива требует значительных аппаратных затрат. С целью упрощения стековой памяти используют специальный реверсивный счетчик-указатель стека SP. При использовании SP не требуется микрооперация сдвига массива, достаточно перемещения возбуждения "вверх" или "вниз" выходных шин с дешифратора адреса. Так, при записи счетчик декрементируется SP-1 и число через шину данных записывается "вверх"(в сторону младших номеров шин DC), при чтении число сначала считывается, затем устанавливается адрес следующего операнда (SP 1) для возможного считывания.
    При записи (считывании) двухбайтных операндов в восьмиразрядную память последовательно инкрементируется (декрементируется) дважды SP 2. При этом запись
    (считывание) осуществляется побайтно в две соседние ячейки : в М(SP),М(SP 1) - при считывании, в М(SP-1), М(SP-2) - при записи . Содержимое ячеек М(SP) и М(SP 1) определяет информацию в вершине стека (SГ), которая загружается в РОН при чтении стековой памяти.
    Использование стековой памяти.
    Часто в основной программе одни и те же операции (умножение, деление, сортировка массива и др.) выполняются многократно с различными данными. Целесообразно также нестандартные операции оформлять в виде программ, которые в основной программе использовать в виде подпрограмм, в свою очередь , подпрограмма так же может использовать при работе другие программы выполнения некоторых операций и т.д. В результате закон (порядок) работы ЭВМ может включать несколько вложенных друг в друга программ.

    116
    Для организации вычислительного процесса с применением подпрограмм используется стековая область ОЗУ. Эта область резервируется программистом для осуществления прерываний при вызове подпрограмм. При этом "низ" стека фиксируется установкой его адреса в SP командой
    SPHL (в УОУ монитор устанавливает автоматически SP=83Е0) и, начиная с этого адреса, "вверх"
    (SP-1) размещаются промежуточные данные и коды адресов команд основных программ, которые должны выполняться вслед за выполнением подпрограмм. Для обращения к подпрограмме используется команда CALL аа и её модификации. Эти команды загружают в РС адрес аа начальной команды подпрограммы, а текущий адрес команды основной программы запоминается стековой памятью. Для возвращения вычислений из подпрограммы к следующей за CALL команде в подпрограмме используется команда RET и её модификации. Эта команда возвращает из стековой памяти в РС код адреса этой команды .
    Рисунок 8.
    Подпрограмма перевода числа в аккумуляторе в дополнительный код
    Следует отметить, что подпрограмма выполняет вычисления в процессоре с использованием набора тех же РОН, что и программа, поэтому, если данные основной программы, полученные в РОН перед выполнением подпрограммы, необходимы для вычислений после выполнения подпрограммы, их следует запомнить и восстановить, для чего перед обращением к подпрограмме данные заносятся в стековую память командами PUSH RP, а после её выполнения восстанавливаются командами POP RP.
    Практическая работа №21. Ознакомление с учебной микро-ЭВМ «Электроника-580»
    (проектироваочные программы)
    Цель работы: изучить правила составления и записи программ на микро-ЭВМ
    «Электроника-580».

    117
    Теоретическая часть.
    При написании программ для УОУ «Электроника-580» нужно вручную переводить язык
    Ассемблер на машинный язык. Затем машинный код с клавиатуры вводится в заданную область памяти УОУ и производится отладка программы.
    Для перевода программы, записанной с использованием мнемоники языка Ассемблер, на машинный язык следует использовать таблицу 2. Эта таблица, составленная в матричном виде, содержит в качестве элементов матрицы мнемонические обозначения команд УОУ. При использовании таблицы для определения кода команды необходимо найти в нем мнемоническое изображение команды УОУ. Это изображение находится на пересечении столбца и строки, которые определяют соответственно старший и младший разряды машинного кода.
    Например, изображение команды LDA находится на пересечении столбца 3 и строки А; следовательно, машинный код команды LDA имеет вид 3А, а для команды загрузки аккумулятора
    MVI машинный код равен 3Е.
    Пример 1. Программа загрузки и инвертирования содержимого аккумулятора.
    Допустим, необходимо загрузить аккумулятор числом В4 в Н-коде, затем инвертировать это число и разместить результат в ячейку памяти с адресом 8200.
    Программа СМА1 на языке Ассемблер приведена в табл. 1. Последняя в программе команда HLT предназначена для останова при работе в пошаговом режиме. Для работы в непрерывном режиме эта команда должна быть заменена на команду RST4.
    Программа СМА1 в машинных кодах и на языке Ассемблер приведена в табл.2. Из неё видно, что двухбайтовая команда загрузки аккумулятора MVI В4 размещается в ячейках памяти
    8201 и 8202. Трёхбайтовая команда пересылки СТА размещена в трёх ячейках 8204, 8205 и 8206, причём в двух последних ячейках записывается адрес ячейки 8200, в которую отсылается результат выполнения операции инвертирования.
    Заметим, что запись этого адреса в последовательно расположенные ячейки 8205 и 8206 производится начиная с младшего байта, т.е. в ячейку 8205 записывается байт 00, а затем в ячейку
    8206 – байт 82.
    Таблица 1
    Программа СМА1 загрузки и инвертирования содержимого аккумулятора на языке ассемблер (вариант 1)
    М-код
    Операци я
    Комментарий
    MVI
    A, B4
    Загрузить в аккумулятор число В4 в Н-коде
    CMA
    Инвертировать содержимое аккумулятора
    STA
    8200
    Поместить содержимое аккумулятора в ячейку памяти с адресом 8200
    HLT
    Остановить
    Таблица 2
    Адрес
    Н- код
    М-код Операн д
    Комментарий
    8200
    Ячейка памяти для приёма результата
    8201 3E
    MVI
    А,В4
    Загрузить в аккумулятор число В4 из второго байта команды
    8202
    B4 8203 2F
    CMA
    Инвертировать содержимое аккумулятора
    8204 32
    STA
    8200
    Поместить содержимое

    118
    аккумулятора в ячейку памяти 8200 8205 00 8206 82 8207 76
    HLT
    Остановить МП
    В рассмотренной выше программе при записи в аккумулятор (команда MVI) и память
    (команда STA) используется прямой способ адресации, когда адрес данных, участвующих в операции, следует в команде за кодом операции.
    В целях освоения способов косвенной адресации полезно рассмотреть другой вариант программы решения этой же задачи, приведенный в табл.3. Второй вариант содержит большее число команд и, кроме того, он требует предварительной записи исходных данных в выделенную для этого ячейку памяти 8208.
    Команда LXI H? 8208 в программе СМА2 использует фактически два адреса. Первый адрес
    (символ Н) включён непосредственно в команду и определяет регистровую пару HL. Однако в этой регистровой паре нет операнда, как при прямой адресации, а содержится адрес ячейки памяти, в которой находится операнд (в данном случает В4). Аналогичный способ адресации применен в командах MOV A, M и MOV M,A.
    Таблица 3
    Программа СМА2 загрузки и инвертирования содержимого аккумулятора (вариант 2)
    М-код
    Операн д
    Комментарий
    LXI
    Н, 8208 Записать в регистровую пару HL число
    8208 (адрес данных В4)
    MOV
    А,М
    Загрузить в аккумулятор число из ячейки памяти с адресом, указанным в
    HL
    CMA
    Инвертировать содержимое аккумулятора
    INX
    Н
    Увеличить на 1 адрес в HL
    MOV
    М,А
    Переслать число из аккумулятора по адресу, указанному в HL
    HLT остановить МП
    Таблица 4
    Программа СМА2 в машинных кодах и на языке Ассемблер
    Адрес
    Н- код
    М-код Операнд
    Комментарий
    8208
    Ячейка памяти для предварительной записи числа В4 8209
    Ячейка памяти для приёма результата
    820А
    21
    LXI
    H,
    8208
    Загрузить в регистровую пару HL число 8208 820В
    08 820С
    82 820D
    7E
    MOV
    А,М
    Загрузить в аккумулятор число из ячейки памяти с адресом 8208 820E
    2F
    CMA
    Инвертировать содержимое А
    820F
    23
    INX
    Н
    Инкремент адреса в HL
    8210 77
    MOV
    М,А
    Переслать число из А в память по адресу 8209 8211 76
    HLT
    Остановить МП

    119
    Таблица 5
    Программа СЛАМ сложения трёх чисел на Ассемблере
    М-код
    Операнд
    Комментарий
    LXI
    H, 8212
    Загрузить 8212 (адрес первого слагаемого) в HL
    MOV
    А,М
    Поместить первое слагаемое из ячейки памяти в аккумулятор
    INX
    Н
    Инкрементировать содержимое пары HL
    ADD
    М
    Сложить число из ячейки памяти, адрес которой указан в HL, с содержимым аккумулятора
    INX
    Н
    Инкрементировать содержимое пары HL
    ADD
    М
    Сложить число из ячейки памяти, адрес которой указан в HL, с содержимым аккумулятора
    INX
    Н
    Инкрементировать содержимое пары HL
    MOV
    М,А
    Поместить сумму, содержащуюся в аккумуляторе, в ячейку памяти, адрес которой указан в паре HL
    HLT
    Остановить МП
    Таблица 6
    Программа СЛАМ в машинном коде и на Ассемблере
    Адрес
    Н- код
    М-код Операн д
    Комментарий
    8212
    Адреса ячеек памяти для предварительной записи слагаемых ОF,
    09 и 06 8213 8214 8215
    Ячейка памяти для приёма суммы
    8216 21 12 82
    LXT
    Н,
    8212
    Загрузить адрес слагаемого OF, равный
    8212, в пару HL
    8217 7Е
    MOV
    А,М
    Поместить первое слагаемое OF в А
    8218 23
    INX
    Н
    Инкрементировать пару HL до 8213 8219 86
    ADD
    М
    Сложить число 09 из ячейки 8213 с содержимым А, равным OF
    8220 23
    INX
    Н
    Инкрементировать пару HL до 8214 8221 86
    ADD
    Н
    Сложить число 06 из ячейки 8214 с содержимым А, равным сумме OF+09 8222 23
    INX
    Н
    Инкрементировать пару HL до 8215 8223 77
    MOV
    М,А
    Поместить сумму OF+09+06 из А в ячейку памяти с адресом 8215 8224 76
    HLT
    Остановить МП
    Таблица 7
    Варианты заданий для составления программ СМА1, СМА2 и СЛАМ

    Начальный адрес программы Данные для
    СМА1,2
    Слагаемые для СЛАМ
    СМА1
    СМА2
    СЛАМ
    1 2
    3 1
    1 2
    3 8400 8428 8450 8478 8408 8430 8458 8480 8412 843A
    8462 848A
    6A
    5 4E
    59 07 44
    B6
    CE

    АО
    05 6С
    С2 09 61 43

    120 84AO
    84C8 8500 8528 8550 8578 85AO
    85C8 8600 8628 8650 8678 86AO
    86C8 8700 8728 8750 8778 87AO
    87C8 84A8 84DO
    8508 8530 8558 8580 85F8 85DO
    8608 8630 8658 8680 85A8 86DO
    8708 8730 8758 8780 87A8 87DO
    84B3 84DA
    8512 853A
    8562 858A
    85B3 85DA
    8612 863A
    8662 868A
    86B3 86DA
    8712 873A
    8762 878A
    87B3 87DA
    A4
    E8 4A
    B7
    CB
    76 9A
    C7
    A6
    E9 3B
    87
    C9
    B4 49
    E5
    OC
    95
    C6
    B9 3B
    A4
    O8 1C
    2A
    4B
    07 3A
    08 6C
    2E
    17 3A
    07 5B
    05 1E
    4C
    07 15 29 05
    С1
    ОА

    01
    В5 1В

    СВ

    09 45 6В
    06
    А6 06 2Е
    В5
    АО
    ОС
    27 14 54
    ОЕ
    В2 1С
    09 24 3А
    С3
    У4
    С4 15
    А2 22 5А
    09 16 3Е
    Примечание: адреса и исходные данные для программ представлены в шестнадцатиричном коде; при составлении программ исходные данные и результаты следует размещать в начале выделенного для данной программы части адресного поля.
    П Р И М Е Р 2. Программа сложения трёх чисел.
    Рассмотрим пример сложения содержимых трёх последовательных ячеек памяти и размещения их суммы в четвёртой. Версия на Ассемблере представлена в табл.5, а запись программы в машинных кодах – в табл.6.
    Исходные данные для этой программы предварительно заносятся в ячейки памяти с адресами 8212,8213,8214 (числа OF, 09 и 06 соответственно), а для результата резервируется ячейка с адресом 8215. Для приведенных трёх чисел сумма в Н-коде равна EI.
    Порядок выполнения работы
    В процессе домашней подготовки.
    1.Выбрать из табл. 7 исходные данные для составления программы СМА1, СМА2 и
    СЛАМ.
    2.Составить программы СМА1, СМА2 и СЛАМ на Ассемблере и в машинном коде, используя для кодирования команд табл.2
    В учебной лаборатории.
    1.Подготовить УОУ «Электроника-580 к работе, соблюдая следующие правила:
    -запрещается работать с УОУ при снятом кожухе и задней панели;
    -запрещается включать УОУ в сеть, не подключив заземления к клеммам 2 земля»;
    -нажимать на клавиши следует без чрезмерных усилий, чётко фиксируя фазы нажатия и отпускания клавиши.
    2.Произвести загрузку программы СМА1 по табл.4 из примера 1 в режиме ОТЛАДКА.
    Для записи первой команды МVI А, В4 в ячейки 8201 и 8202 требуется нажать клавиши
    ADDR 8201 MEM ЗЕ NEXT В4
    В указанной последовательности нажатие клавиши NEXT приводит к переходу от адреса
    8202 к адресу 8203. Дальнейший ввод данных согласно последовательности
    NEXT 2F NEXT 32 NEXT 00 82 NEXT 76 завершает загрузку программы.
    3.Выполнить программу СМА1 в пошаговом режиме, для чего
    3.1.Установить начальный адрес программы 8201 последовательным нажатием клавиш
    ADDR 8201, контролируя запись по индикаторам АДРЕС и ДАННЫЕ;

    121 3.2.Нажатием клавиши STEP выполнить первую команду программы; после этого на индикаторах АДРЕС байта следующей команды СМА (т.е. 8203), а на индикаторах ДАННЫЕ отобразится Н-код этой команды;
    3.3.Повторить п.3.2 для выполнения остальных команд программы, наблюдая за показаниями индикаторов;
    3.4.Проверить результат выполнения операции инвертирования величины В4, для чего произвести чтение информации в ячейке памяти 8200 нажатием клавиш ADDR 8200.
    4.Загрузить и выполнить собственную программу CMAI.
    5.Произвести загрузку и выполнить программу СМА2 по табл.6 из примера 1.
    6.Загрузить и выполнить собственную программу СМА2 7.Произвести загрузку и выполнить программу СЛАМ из примера 2.
    8.Загрузить и выполнить собственную программу СЛАМ. Предварительно необходимо в первые три ячейки выделенного для этой программы адресного поля записать значения слагаемых из табл.7.
    Содержание отчёта
    1.Исходные данные и программы СМА1, СМА2 и СЛАМ на Ассемблере и машинном языке.
    2.Тест-программа проверки функционирования ОЗУ на Ассемблере.
    Контрольные вопросы
    1.С какой целью осуществляется мультиплексирование ЩД?
    2.Перечислите все программно-недоступные регистры МП с указанием их назначения.
    3.Составьте программу загрузки регистра В константой 5А с последующим сложением с содержимым 9Е аккумулятора.
    4.Какую информацию содержит первый байт команды? Второй? Третий?
    5.Объясните работу стека в МП-системе.
    6.Какую функцию выполняет схема десятичной коррекции в АЛУ?
    7.Объясните назначение всех управляющих выводов в МП.
    8.С какой целью используется ПДП?
    9.Каким образом осуществляется адресация РОН?
    10.Составьте программу логического сложения чисел В9 и 4Е.
    11.Объясните работу всех командных клавиш УОУ.
    12.Какую информацию и с какой целью фиксирует регистр признаков АЛУ?
    13.Объясните характер выполнения всех возможных операций в АЛУ.
    14.В каком случае изменяется содержимое программного счётчика.
    15.Почему передача управляющих сигналов в МП-системе осуществляется с квитированием?
    16.Составьте программу вычисления (в пошаговом режиме) арифметической прогрессии, если разность прогрессии равна 2А, а первый член ряда – 8000 в Н-коде.
    17.Какая наибольшая ёмкость памяти может быть адресована 16 адресными линиями?
    18.Как изменится содержимое FF регистровой пары HL после инкрементирования?
    19.Определите слово состояния программы и слово состояния процессора.
    20.В чём отличие косвенной адресации от прямой?
    21.Составьте программу приёма в МП константы 6А из порта 04 и выдачи в порт В5 утроенного значения этой константы.
    Практическая работа №22. Работа на учебной микро-ЭВМ (разработка архитектуры
    МП).
    Цель работы: н аписать на языке ассемблера микропроцессора КР580ВМ80А программу, реализующую вычисления по заданному арифметическому выражению. Оттранслировать программу в машинные коды и выполнить ее отладку на УОУ "Электроника-580".

    122
    Практическая часть.
    Пример программы к практической работе.
    Пусть необходимо составить программу, реализующую следующую функцию:
    Так как ассемблер является языком низкого уровня, т.е. его команды оперируют непосредственно со структурными элементами микропроцессорной системы, программист перед началом составления программы вычислений должен знать, в какой форме будут представлены входные и выходные переменные, по каким адресам ОЗУ они будут размещены. Из задания к лабораторной работе видно, что исходные переменные 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. Так как переходы в примере выполняются вперед по программе, то при ручной трансляции этих команд физические адреса переходов еще неизвестны, и необходимо

    123
    зарезервировать две ячейки памяти под второй и третий байты команды перехода. Затем, когда процесс трансляции дойдет до команды, на которую выполняется переход, и становится известным физический адрес ее размещения в памяти, зарезервированные под этот адрес байты могут быть заполнены.
    После ввода в память УОУ программы в машинных кодах необходимо подготовить и ввести в соответствующие ячейки памяти исходные переменные примера. Далее проводится отладка программы – проверка правильности ее функционирования. Отладка программы может быть также выполнена с помощью отладчика-симулятора AVSIM85.
    Для рассмотренной программы были получены следующие результаты контрольного примера:
    При X1=-4=FCH, Y1=-8=F8H - Z=21H=33;
    При X2=21=15H, Y2=-8=F8H - Z=3BH=59.
    1   ...   12   13   14   15   16   17   18   19   ...   43


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