ние смещения до следующей команды (в примере до команды «hlt») по формуле:
|
|
|
|
AK=IP+3 |
|
|
|
|
(3.4) |
|
|
Запишите в отчет значение AK. |
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
Таблица 6 |
|
|
|
Значения регистров МП и адресов операндов |
|
|||||||
IP1 |
IP2 |
|
IP3 |
SP1 |
SP2 |
SP3 |
BP |
AK |
Aa |
Ab |
|
|
|
|
|
|
|
|
|
|
|
6. После выполнения команды «mov bp,sp» в процедуре запишите в отчет содержимое стека в табл. 7 и значение регистра BP в табл. 6.
Таблица 7
Содержимое стека
Смещение |
Значение |
|
|
FFFE |
0000 |
|
|
FFFC |
FF96 |
|
|
FFFA |
FF96 |
|
|
FFF8 |
001E |
|
|
FFF6 |
0009 |
|
|
FFF4 |
0000 |
|
|
7.По формуле 1 рассчитайте адреса Aa и Ab парамет-
ров а и b.
8.Продолжайте выполнять программу в пошаговом режиме. Запишите значение регистра IP и SP соответственно как IP1 и SP1 в табл. 6 перед выполнением команды «RET N» и после - как IP2 и SP2.
9.Выполните программу до конца. Убедитесь в корректности программы.
10.Проанализируйте значения таблиц 6 и 7 и сделайте выводы по работе.
11.Составьте отчет по работе. Отчет должен включать:
-цель работы;
-задания к лабораторной работе;
24
-листинг программы;
-табл. 6 и 7 с результатами, полученными при выполнении работы;
-выводы по работе.
Контрольные вопросы :
1.Какими преимуществами обладает разработка программ с использованием подпрограмм?
2.Какими способами можно передавать параметры подпрограмме?
3.Какие действия выполняет микропроцессор при выполнении команды «Call»?
4.Что делает команда «RET 3»?
5.Как получить доступ внутри процедуры к параметрам, переданным из основной программы через стек?
6.Где сохраняется адрес возврата из процедуры?
25
Лабораторная работа №4 Команды ввода-вывода микропроцессора
Цель работы: изучить команды ввода-вывода микропроцессора 8086.
Теоретическ ие сведения
Возможности вычислительной техники во многом определяются составом и техническими возможностями внешних устройств. Существует большое количество разнообразных внешних устройств (ВУ), таких как жесткие диски, принтеры, сканеры, клавиатуры и другие. Внешние устройства отличаются по физическим принципам работы, по скорости передачи данных, по используемым протоколам. Важной особенностью внешних устройств является то, что они работают в более медленном темпе, чем возможности вычислительного ядра [1]. В связи с этим возникает задача синхронизации между собой внешнего устройства и процессора.
Процессоры не могут учитывать особенности работы каждого устройства из-за их большого количества и разнообразия. В связи с этим, в систему вводятся специальные устройства - адаптеры, которые являются своеобразными переводчиком с языка микропроцессора на язык ВУ.
Взаимодействие МП с внешними устройствами сводится к записи или чтению данных в специальные регистры, ассоциированных с ВУ. Данные регистры называют портами. Соответственно, управление ВУ, например, принтером, заключается в записи команд и чтении состояния внешнего устройства из соответствующих портов. При этом МП не знает, какие управляющие сигналы и в какой последовательности нужно подавать на исполнительные устройства ВУ. Например, чтобы распечатать в нужной позиции символ, процессор записывает в порты только общие команды: в какой позиции и код символ. Аналогично, сигналы от принтера, например, об
26
отсутствии бумаги или картриджа, поступают в виде числового кода в соответствующие порты, откуда считываются МП[2].
Для работы с портами используются две команды: IN и OUT. Команда IN имеет следующий вид:
IN AL(AX), Addr(DX), |
(4.1) |
где AL или AX - приемник данных от порта внешнего устройства. Если данные 8-разрядные, то используется регистр AL, если 16-разрядные - то AX;
Addr - адрес порта. Адрес порта можно задать непосредственно числом (в этом случае адрес может быть числом от 0 до 255) или содержимым регистра DX (адрес может принимать значения от 0 до 65535).
Вывод данных на порт внешнего устройства осуществляется командой OUT, имеющий следующий формат:
OUT Addr(DX), AL(AX). |
(4.2) |
При выполнении команды «IN» данные с порта внешнего устройства передаются в регистр AL или AX микропроцессора. Ниже приведен пример использования команд вво- да-вывода:
mov dx,199 |
; помещаем в регистр DX адрес порта дисплея |
xor ah,ah |
; выполняем операцию "исключающее ИЛИ" для обну- |
|
ления старшего байта регистра АХ |
I1: |
; считываем значение порта внешнего устройства с ад- |
in al,110 |
ресом 110 в регистр AL |
out dx,ax |
; выводим порт с адресом 199 значение регистра АХ |
cmp al,20 |
; сравниваем значение регистра AL c 20 |
Jnz I1 |
; если не равно, то продолжаем цикл |
Вышеприведенный программный код в цикле осуществляет чтение одного байта из порта с адресом 110 и отправляет 2 байта на порт 199. В среде эмулятора Emu8086 порту 110 сопоставлено виртуальное устройство Simple. Данное устройство является моделью однобайтного порта. Порту
27
199 сопоставлен дисплей (Led_display), который отображает двухбайтное число.
Задачи:
1. Разработать программный код в эмуляторе Emu8086, поддерживающий на виртуальном термометре «Thermometer» заданное значение температуры T при исходном значении температуры окружающей среды T1. Текущее значение температуры можно считать с порта 125, а включить спиртовку, подогревающую термометр, - подав на порт 127 значение 1.
Порядок выполнения работы :
1.Создайте новый проект в среде эмулятора Emu8086, используя шаблон «Bin template»;
2.Разработайте программный код на языке ассемблера согласно заданию 1 из постановки задачи. Значения температур T и T1 возьмите из табл. 8 согласно варианту;
Таблица 8
Варианты заданий
Номер |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|
варианта |
|||||||||||
|
|
|
|
|
|
|
|
|
|
||
Т |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
|
Т1 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
|
Номер |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
|
варианта |
|||||||||||
|
|
|
|
|
|
|
|
|
|
||
Т |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
|
Т1 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
3.Запустите проект на эмуляцию, нажав кнопку меню «Emulate». В окне эмулятора нажмите на пункт главного меню
«virtual devices» и выберите «Thermometer.exe»;
4.Выполните программу в пошаговом или автоматическом режиме, убедитесь, что результаты работы программы
вэмуляторе соответствуют постановке задачи;
28