Смекни!
smekni.com

Разработка программы на Ассемблере (стр. 9 из 11)

  • с помощью команд ассемблера ввод (IN) и вывод (OUT)
  • с использованием всех команд пересылки ассемблера (MOV, LODSB,..).

В пределах 64K блока картараспределения памяти для первого случая показана на рис.5 слева.  

cpu5io.gif (3175 bytes)

В пределах интервала 0000 ...XXXXадреса ВУ и ЗУ пересекаются. Поэтому для однозначного обращения к ячейкампамяти или ВУ в процессорном блоке формируются управляющие пересылкойстробирующие импульсы - ~IOR,~IOW для ввода или вывода данных во внешнееустройство и ~MEMR,~MEMW для чтения или записи в память.Емкость ЗУ дляразмещения программ и данных не уменьшается.

Карта распределения памяти для второгослучая показана на рис.5 справа. Под внешние устройства выделяется частьадресного пространства ЗУ. Емкость ЗУ уменьшается на количество адресовотводимых для ВУ. Второй способ позволяет адресоваться к ВУ с помощью всехкоманд оперирующих с памятью. Основное достоинство программного ВВ в простоте.Но при выполнении ввода, например с клавиатуры, МП затрачивает до 99,99..%времени на ожидание, не выполняя при этом другой полезной работы. Избавиться отэтого недостатка позволяет ВВ по прерываниям.

8.7.2 ВВОД-ВЫВОД ПО ПРЕРЫВАНИЯЮ

В общем случае прерывания могутвызываться

  • внешнними устройствами (внешние прерывания),
  • командами прерываний (программные прерывания)
  • автоматически самим МП (внутренние прерывания), например при попытке деления на 0.

В этом разделе будут рассмотренывнешние прерывания. Работу МП можно разделить во времени между двумянезависимыми программами: фоновой, которая выполняет основную задачу ипрограммой ВВ данных. Когда ВУ подготовит данные для передачи, оно посылаетсигнал запроса на прерывание непосредственно на вход МП INTR или в специальноеустройство - контроллер прерываний. В процессе обслуживания прерываниявыполняются следующие действия:

1. ВУ самостоятельно, либо через контроллерпрерываний посылает сигнал прерывания INT(R) на одноименный вход МП;

2. МП завершает выполнениетекущей команды и,если преывания разрешены командой ассемблера STI(EI для8085), то подтверждает разрешение сигналом ШУ -INTA;

3. В МП по ШД передаетсятип(номер) прерывания - N;

4. Содержимое PSW, а также CS,IP(адрес возврата), скорректированное с учетом сброса очереди помещается в стек;

5. Сбрасываются флаги IF (флагразрешения прерываний) и TF (флаг трассировки), причем т.к. (IF) = 0 дальнейшиепрерывания запрещаются;

6. В IP загружается содержимоедвух байтов с начальным адресом 4*N, а в CS - содержимое следующих двух байтов. Эти 4 байта называются вектором (указателем) прерывания.

7. Начинает выполнятьсяподпрограмма - обработчик прерывания.

 

   INT_SUBR:

        STI

        PUSH AX

        ....;     здесь

        ....;     команды

        MOV AL,5; обработчика

                    ....;                 прерывания

                    ....

        POP AX

        IRET

Если допускаются вложенныепрерывания, то вначале помещается команда STI- разрешение преываний,запрещенных в п.5. Инструкции push и pop сохраняют и восстанавливают содержимоерегистров фоновой задачи, если эти же регистры используются и обработчикомпрерывания (в примере регистр AX).

8. Команда IRET извлекает изстека адрес возврата - IP,CS и содержимое PSW;

9. МП прдолжает работу с адресавозврата. При выполнении программных прерываний по команде INT N действиявыполняются с п.3. N находится в пределах 0 <= N <= 255, поэтомучетырехбайтовые вектора прерываний занимают первые 1024 байта памяти.

8.7.3 ПРЯМОЙ ДОСТУП К ПАМЯТИ (ПДП) И ТРАНЗАКЦИИ

Обмен большим количеством байтов,между ВУ (например дисковым накопителем) и памятью с помощью предыдущих двухметодов малоэффективен, т.к. обмен происходит по цепочке: ВУ - аккумулятор (AXили AL) - память или наоборот. В режиме ПДП при поступлении запроса от ВУ навход HOLD, МП разрешает обмен выходным сигналом HLDA. Микропроцессор на времяобмена отключается от ШУ,ШД и ША переводя их в третье состояние по входам ~OE буферныхэлементов сигналом ~BUSEN = 1 .Специальная микросхема (контроллер ПДП)использует освободившиеся шины для высокоскоростного прямого обмена ВУ -память. Скорость обмена достигает многих мегабит/сек.

cpu6io.gif (2864 bytes)

На рис.6 показан процессвыполнения основной (фоновой) программы - интервалы времени (начало..t1,t2..конец) и выполнение процедуры передачи массива данных, на рисунке этототрезок времени обозначен двойной линией. На диаграмме (А) ЭВМ задействованатолько для передачи (отрезок t1..t2), в остальное время компьютер бездействует.Во втором варианте - диаграмма (Б), код программы передачи жестко встроен вфоновую задачу. В третьем варианте (В) передача массива оформлена в видеподпрограммы прерывания, причем если запроса на прерывание не поступит,тосуммарное время на выполнение фоновой программы уменьшится на t2-t1. Прииспользовании режима ПДП сохраняются преимущества метода прерывания, время напередачу сокращается - диаграмма (Г), но фоновая задача по прежнемупрерывается. В последнем случае передача данных производится почти безнарушения хода программы параллельно во времени (Д). Транзакции реализованы внекоторых семействах однокристальных микроЭВМ например в MCS-96.

ЗАДАЧИ И УПРАЖНЕНИЯ

Одна подпрограмма вызываетдругую.Укажите короткий адрес возврата из вложенной прoцедуры.

 

st1.gif (2723 bytes)

Пояснение : Вложеннаяподпрограмма это подпрограмма, которая вызывается из другой подпрограммы. Вызовподпрограммы сопровождается помещением в стек адреса возврата. Стек заполняетсяначиная с дна. Короткий адрес - двухбайтовый адрес в пределах одного кодовогосегмента. Байты в стек помещаются по правилу "старший байт по старшемуадресу". Теперь нетрудно ответить на предложенный вопрос: 4dba.

В тексте программы следуют подрядкоманды: PUSH AX; PUSH CX; POP DX; POP BX. Чему будет равно содержимое регистраBH? Рисунок стека соответствует промежуточному состоянию (до выполнения командPOP).

st1.gif (2723 bytes)

Пояснение : В стек дважды что-топомещается и дважды что-то извлекается, причем последние два байта помещаются врегистр BX. Перефразируя правило "последним вошел - первым вышел" в"последним вышел - первым вошел", придем к выводу, что содержимое AXзасылается в регистр BX. Команда PUSH AX помещает два байта в стек по правилу"старшая половина двухбайтового регистра - по старшему адресу".Ответ: c9

В тексте программы следуют подрядкоманды: POP AX; POP DX. Чему будет равно содержимое регистра DL?

st.gif (2169 bytes)

Ответ: 4c

На временных диаграммах внизуприведены управляющие сигналы на выходах микропроцессора (без сохpанения точныхвpеменных пpопоpций). Что осуществляется в момент времени отмеченный знаком +?  Чтение данных из памяти, запись данных в память вывод данных впорт, ввод данных из порта, ничего из указанного выше.

Пояснения : Если ~DEN=0(разрешение данных) возможно 4 случая (для приведенных диаграмм): 1) M/~IO = 0,~RD = 0 активны сигналы ввод/вывод (~IO) и чтение-ввод (~RD). 2) M/~IO = 0, ~WR= 0 активны сигналы ввод/вывод (~IO) и запись-вывод(~WR). 3) M/~IO = 1, ~RD = 0активны сигналы обращения к памяти(M) и чтение-ввод(~RD). 4) M/~IO = 1, ~WR = 0активны сигналы обращения к памяти(M) и запись-вывод(~WR).

Ответ: Вывод данных в порт.

Приложение № 3

 ОСНОВНЫЕ ПОЛОЖЕНИЯ АЛГЕБРЫ ЛОГИКИ

В отличие от аналоговыхэлектронных устройств, в цифровых устройствах (ЦУ) входные и выходные сигналымогут принимать ограниченное количество состояний. В соответствии с логическимсоглашением (ГОСТ 2.743-82), в зависимости от конкретной физической реализацииэлементов ЦУ, более положительному значению физической величины, "H"- уровень, соответствует состояние "логическая 1", аменее положительному значению ,"L - уровень" - "логический0". Такое соглашение называется положительной логикой. Обратноесоотношение называется отрицательной логикой. В ГОСТ'е 19480 - 89 данынаименования, определения и условные обозначения основных параметров ихарактеристик цифровых микросхем.

Теоретической основойпроектирования ЦУ является алгебра-логики или булева алгебра,оперирующая логическими переменными. Для логических переменных, принимающихтолько два значения,существуют 4 основных операции. Операция логическое "И"(AND) конъюнкция или логическое умножение,обозначается * или /&bsol;. Операция логическое "ИЛИ" (OR),дизъюнкция или логическое сложение,обозначается + или &bsol;/ . Операция логическое "НЕ" (NOT),изменение значения, инверсия или отрицание, обозначаетсячертой над логическим выражением. Инверсия иногда будет в тексте обозначатьсязнаком " ~ ". Операция эквивалентности обозначается "=". Следующие соотношения являются аксиомами.

(1) 0 + 0 = 0 1 * 1 = 1 (1')
(2) 1 + 1 = 1 0 * 0 = 0 (2')
(3) 1 + 0 = 0 + 1 = 1  0 * 1 = 1 * 0 = 0 (3')
(4) ~1 = 0 ~0 = 1 (4')

Из (1, 2) и (1',2') следует: x +x = x  и  x * x = x.       (5)