Российский государственный профессионально-педагогический университет
Лабораторная работа № 3
Изучение временных диаграмм выполнения команд ввода и вывода информации
Выполнили: Величко В.С.
Проверил: Мешков В.В.
Екатеринбург 2008
Цель работы: изучение особенностей функционирования микропроцессора при выполнении команд ввода и вывода информации, приобретение навыков программного управления клавиатурой и дисплеем УМК.
Команды ввода и выводы информации
| Мнемоника команд | Число байт | Выполняемые действия | Состав машинных циклов/количество тактов в циклах | 
| Команды ввода информации в аккумулятор из порта ввода | |||
| IN<В2> | 2 | (А)←port<В2> | 1/4,2/3,6/3 | 
| Команды вывода информации в порт вывода из аккумулятора | |||
| OUT<В2> | 2 | Port<В2>←(А) | 1/4,2/3,7/3 | 
Временные диаграммы:
IN<B2>

OUT<B2>

Задание: Составить программу выдачи на дисплей название своей группы (программу составить в виде процедуры выдачи на дисплей существующего массива с заранее подготовленными кодами).
Листинг:
| адрес | код | мнемоника | комментарий | 
| 0800 | 7F | 7F | Семисегментный код “B” | 
| 0801 | 78 | 78 | Семисегментный код “t” | 
| 0802 | 40 | 40 | Семисегментный код “-“ | 
| 0803 | 66 | 66 | Семисегментный код “4” | 
| 0804 | 3F | 3F | Семисегментный код “0” | 
| 0805 | 07 | 07 | Семисегментный код “7” | 
| 0810 | 01 | 01 | Номер разряда дисплея | 
| 0811 | 02 | 02 | Номер разряда дисплея | 
| 0812 | 04 | 04 | Номер разряда дисплея | 
| 0813 | 08 | 08 | Номер разряда дисплея | 
| 0814 | 10 | 10 | Номер разряда дисплея | 
| 0815 | 20 | 20 | Номер разряда дисплея | 
| 0820 | 01 | LXI B, data8 | BC←0800 | 
| 0821 | 00 | 00 | |
| 0822 | 08 | 08 | |
| 0823 | 11 | LXI D, data16 | DE←0810 | 
| 0824 | 10 | 10 | |
| 0825 | 08 | 08 | |
| 0826 | 26 | MVI H, data8 | H←06 | 
| 0827 | 06 | 06 | |
| 0828 | 0A | LDAX B | A←M(BC) | 
| 0829 | D3 | OUT port | F9←A | 
| 082A | F9 | F9 | |
| 082B | 1A | LDAX D | A←M(DE) | 
| 082C | D3 | OUT port | F8←A | 
| 082D | F8 | F8 | |
| 082E | 13 | INX D | DE=DE+1 | 
| 082F | 03 | INX B | BC=BC+1 | 
| 0830 | 25 | DCR H | H=H-1 | 
| 0831 | 3E | MVI A, data8 | A←00 | 
| 0832 | 00 | 00 | |
| 0833 | D3 | OUT port | F8←A | 
| 0834 | F8 | F8 | |
| 0835 | C2 | JNZ addr | Перейти в 0828 | 
| 0836 | 28 | 28 | |
| 0837 | 08 | 08 | |
| 0838 | C3 | JMP addr | Перейти в 0820 | 
| 0839 | 20 | 20 | |
| 083A | 08 | 08 | |
| 083B | 76 | HLT | Остановка | 
Задание: Составить программу выдачи на какой либо разряд дисплея результатов опроса какой-либо линейки клавиш.
Листинг:
| 0800 | 00 | 00 | Сохраняем данные после опроса клавиатуры | 
| 0801 | 64 | 64 | Строка №1 | 
| 0802 | 06 | 3F | Семисегментный код “0” | 
| 0803 | 34 | 34 | Строка №2 | 
| 0804 | 5B | 66 | Семисегментный код “4” | 
| 0805 | 54 | 54 | Строка №3 | 
| 0806 | 4F | 7F | Семисегментный код “8” | 
| 0807 | 70 | 70 | Строка №4 | 
| 0808 | 66 | 39 | Семисегментный код “C” | 
| 080A | 21 | LXI H, data 16 | HL←0801 | 
| 080B | 01 | 01 | |
| 080C | 08 | 08 | |
| 080D | 3E | MVI A, data | A←04 F8←A | 
| 080E | 04 | 04 | |
| 080F | D3 | OUT port | |
| 0810 | F8 | F8 | |
| 0811 | DB | IN port | A←FA | 
| 0812 | FA | FA | |
| 0813 | 32 | STA addr | 0800←A | 
| 0814 | 00 | 00 | |
| 0815 | 08 | 08 | |
| 0816 | 0E | MVI C, data | C←04 | 
| 0817 | 04 | 04 | |
| 0818 | CD | CALL addr | Вызов подпрограммы по адресу 0822 | 
| 0819 | 22 | 22 | |
| 081A | 08 | 08 | |
| 081B | 0D | DCR C | C=C-1 | 
| 081C | C2 | JNZ addr | Если счетчик C≠0, то перейти в 0818 | 
| 081D | 18 | 18 | |
| 081E | 08 | 08 | |
| 081F | C3 | JMP addr | Переход в начало программы 080A | 
| 0820 | 0A | 0A | |
| 0821 | 08 | 08 | |
| 0822 | 7E | MOV A, M | А←M(HL) | 
| 0823 | 32 | STA addr | 0830←A | 
| 0824 | 30 | 30 | |
| 0825 | 08 | 08 | |
| 0826 | 23 | INX H | HL=HL+1 | 
| 0827 | 7E | MOV A, M | А←M(HL) | 
| 0828 | 32 | STA addr | 0835←A | 
| 0829 | 35 | 35 | |
| 082A | 08 | 08 | |
| 082B | 23 | INX H | HL=HL+1 | 
| 082C | 3A | LDA addr | A←0800 | 
| 082D | 00 | 00 | |
| 082E | 08 | 08 | |
| 083F | D6 | SUI data | A←A-Byte 2 | 
| 0830 | 00 | Byte 2 | |
| 0831 | C2 | JNZ addr | Если результат вычитания не равен нулю, то перейти в 0838 | 
| 0832 | 38 | 38 | |
| 0833 | 08 | 08 | |
| 0834 | 3E | MVI A, data | А←Byte 2 | 
| 0835 | 00 | Byte 2 | |
| 0836 | D3 | OUT port | F9←A | 
| 0837 | F9 | F9 | |
| 0838 | C9 | RET | Выход из подпрограммы | 
Задание: Модифицировать предыдущую программу таким образом, чтобы на четыре разряда дисплея последовательно выдавались результаты опроса клавиш выбранной линейки клавиатуры в порядке нажатия клавиш.
Листинг:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.