Обмен с прерыванием программы.




Режим обработки прерываний отличается прежде всего тем, что реализуется аппаратно. Прерывание основной программы выполняется нажатием клавиши <INT> и, возможно, если оно разрешено в основной программе, командой E1. Следует помнить, что после начальной установки МП и сразу после любого запроса на прерывания - прерывания запрещены.

В случае, если прерывание разрешено, то после нажатия клавиши <INT> и подачи на вход INT МП сигнала запроса на прерывание, МП по шине данных получает код команды RST 7. После выполнения этой команды его программный счетчик устанавливается на адрес монитора 0038H. По этому адресу записана команда перехода на адрес 1FE6H, с которого располагается подпрограммы обработки прерываний.

Программа 3. В регистровой паре BC процессор производит накопление единиц от значения 0000H до значения FFFFH и повторяет этот процесс еще четыре раза, после чего осуществляется выход в монитор. В процессе работы программы прерывания разрешены и, если пришел запрос на прерывание (нажата клавиша INT), то выполнение основной программы прерывается и осуществляется вывод в нулевую позицию дисплея символа «Г», после чего продолжается выполнение основной программы.

 

Программа имеет вид:

Адрес OBJ Метка КОП Операнды Комментарий:
1000H FB   EI   : разрешить прерывания
1001H     LXI B, 0000H : BC <= 0000H
1002H          
1003H          
1004H 3E   MVI A, 0FFH : A <= FFH
1005H FF        
1006H     MVI D, 05H : D <= 05H счетчик
1007H          
1008H 0C COUNT: INT C : C <= C + 1
1009H B9   CMP C : A - C
100AH C2   JNZ COUNT : переход если < > 0
100BH          
100CH          
100DH     INR B : B <= B + 1
100EH B8   CMP B : A - B
100FH C2   JNZ COUNT : переход если < > 0
1010H          
1011H          
1012H     DCR D : D <= D - 1
1013H C2   JNZ COUNT : переход если < > 0
1014H          
1015H          
1016H C3   JMP ENTRY : выход в монитор с
1017H         : сохранением содержимых
1018H         : регистров.

 

Ввод объектного кода программы в микро-ЭВМ осуществляется описанным выше способом посредством директивы Mem. C адреса 1200H c помощью этой же директивы вводится объектный код программы обработки прерывания.

 

Подпрограмма обработки прерывания имеет вид:

Адрес OBJ Метка КОП Операнды Комментарий:
1200H F5   PUSH PSW : сохранить значения A, F
1201H 3E   MVI A, OCEH : A <= код "Г"
1202H CE        
1203H D3   OUT 0F8H : Port A <= A
1204H F8        
1205H F1   POP PSW : вернуть значения A, F
1206H C9   RET   : выход из подпрограммы.

 

По адресу 1FE6 необходимо ввести коды С3 00 12 команды JMP 1200Н перехода на подпрограмму обработки прерывания.

После этого директивой G 1000 производится запуск программы на выполнение. Программа выполняется в течение 5 секунд, при этом в крайней левой позиции дисплея монитора индицируется символ «Е», это признак того, что программа выполняется. После того, как произойдёт пятикратное накопление единиц в регистровой паре BC осуществится выход в монитор и на дисплее появится сообщение «br – stop». Теперь необходимо проверить содержимое регистров процессора, участвубщих в выполнении программы – A, B, C и D. Это делается следующим образом:

 

Комментарий Клавиатура Дисплей
1. Ввод директивы Reg. просмотра и изменения содержимого регистров МП   "br - StoP"
Next ?
Reg. r
2. Ввод регистровой пары PSW A (PSW) r FF** AF
3. Переход к следующей регистрвой паре BC Next r FFFF BC
4. Переход к следующей регистровой паре DE Next r 00** DE
5. Выход из директивы Reg. Reset "Энерго"

 

Содержимое регистровой пары BC число FFFFH свидетельствует о том, что произошло накопление единиц, значение счётчика D уменьшилось с числа 05Н (оно задаётся в программе) до значения 00Н, это показывает, что накопление произошло пять раз подряд. Значение аккумулятора FFH задаётся в программе и служит для сравнения со значениями регистров B и C для определения момента прекращения накопления.

Теперь необходимо произвести прерывание. Для этого директивой G 1000 программа запускается на выполнение и в произвольный момент времени, не превышающий 5 секунд, нажимается клавиша <INT>. При этом управление передаётся программе обработки прерывания, которая сохраняет значение аккумулятора и регистра признаков, используемых в программе, высвечивает в крайней левой позиции дисплея символ «Г», возвращает прежнее значение аккумулятору и регистру признаков и осуществляет возврат в основную программу, в которой произойдёт дальнейшее накопление единиц и осуществится выход в монитор.

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

 

Варианты заданий.

1. Запускаем программу – молчит. Нажимаем клавишу INT появляется на 0ой и 1ой позиции инициалы. Нажимаем клавишу «0», переходят на первую и вторую позицию.

2. Запускаем программу – молчит. Нажимаем клавишу INT появляется на 1ой и 2ой позиции инициалы. Нажимаем клавишу «0», переходят на 2ую и 3ю позицию.

3. Запускаем программу – молчит. Нажимаем клавишу INT появляется на 3ей и 4ой позиции инициалы. Нажимаем клавишу «3», переходят на 3ю и 5ю позицию.

4. Запускаем программу – молчит. Нажимаем клавишу INT появляется на 3ей и 4ей позиции инициалы. Нажимаем клавишу «3», переходят на 4ю и 5ю позицию.

5. Запускаем программу – молчит. Нажимаем клавишу INT появляется на 4ой и 5ой позиции инициалы. Нажимаем клавишу «4», переходят на 5ую и 6ую позицию.

6. Запускаем программу – молчит. Нажимаем клавишу INT появляется на 5ой и 6ой позиции инициалы. Нажимаем клавишу «5», переходят на 6ю и 7ю позицию.

7. Запускаем программу – молчит. Нажимаем клавишу INT появляется на 6ой и 7ой позиции инициалы. Нажимаем клавишу «6», переходят на 7ю и 8ю позицию.

8. Запускаем программу – молчит. Нажимаем клавишу INT появляется на 0ой и 2ой позиции инициалы. Нажимаем клавишу «1», переходят на 1ую и 3ю позицию.

9. Запускаем программу – молчит. Нажимаем клавишу INT появляется на 1ой и 3ей позиции инициалы. Нажимаем клавишу «2», переходят на 2ю и 4ю позицию.

10. Запускаем программу – молчит. Нажимаем клавишу INT появляется на 2ой и 4ой позиции инициалы. Нажимаем клавишу «3», переходят на 3ю и 5ю позицию.

11. Запускаем программу – молчит. Нажимаем клавишу INT появляется на 3ой и 5ой позиции инициалы. Нажимаем клавишу «4», переходят на 4ю и 6ю позицию.

12. Запускаем программу – молчит. Нажимаем клавишу INT появляется на 4ой и 6ой позиции инициалы. Нажимаем клавишу «5», переходят на 5ю и 7ю позицию.

13. Запускаем программу – молчит. Нажимаем клавишу INT появляется на 5ой и 7ой позиции инициалы. Нажимаем клавишу «6», переходят на 6ю и 8ю позицию.

14. Запускаем программу – молчит. Нажимаем клавишу INT появляется на 7ой и 8ой позиции инициалы. Нажимаем клавишу «7», переходят на 6ю и 6ю позицию.

15. Запускаем программу – молчит. Нажимаем клавишу INT появляется на 6ой и 7ой позиции инициалы. Нажимаем клавишу «6», переходят на 5ю и 6ю позицию.

16. Запускаем программу – молчит. Нажимаем клавишу INT появляется на 5ой и 6ой позиции инициалы. Нажимаем клавишу «5», переходят на 4ю и 5ю позицию.

17. Запускаем программу – молчит. Нажимаем клавишу INT появляется на 4ой и 5ой позиции инициалы. Нажимаем клавишу «4», переходят на 3ю и 4ю позицию.

18. Запускаем программу – молчит. Нажимаем клавишу INT появляется на 3ой и 4ой позиции инициалы. Нажимаем клавишу «3», переходят на 2ю и 4ю позицию.

19. Запускаем программу – молчит. Нажимаем клавишу INT появляется на 2ой и 3ой позиции инициалы. Нажимаем клавишу «2», переходят на 1ю и 2ю позицию.

20. Запускаем программу – молчит. Нажимаем клавишу INT появляется на 1ой и 2ой позиции инициалы. Нажимаем клавишу «1», переходят на 0ю и 1ю позицию.

21. Запускаем программу – молчит. Нажимаем клавишу INT появляется на 0ой и 1ой позиции инициалы. Нажимаем клавишу «0», переходят на 0ю и 8ю позицию.

22. Запускаем программу – молчит. Нажимаем клавишу INT появляется на 0ой и 8ой позиции инициалы. Нажимаем клавишу «8», переходят на 1ю и 7ю позицию.

23. Запускаем программу – молчит. Нажимаем клавишу INT появляется на 1ой и 7ой позиции инициалы. Нажимаем клавишу «1», переходят на 2ю и 6ю позицию.

24. Запускаем программу – молчит. Нажимаем клавишу INT появляется на 2ой и 6ой позиции инициалы. Нажимаем клавишу «2», переходят на 3ю и 5ю позицию.

25. Запускаем программу – молчит. Нажимаем клавишу INT появляется на 3ой и 5ой позиции инициалы. Нажимаем клавишу «3», переходят на 4ю и 6ю позицию.

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-07-22 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: