Лекция 2 Система команд и примеры программ для МП 8086 Лектор: Люличева И.А. 1 Группы команд универсальных микропроцессоров На прошлой лекции мы выучили следующие группы команд: 1. Команды передачи данных. 2. Команды арифметических операций. 3. Команды логических операций и сдвигов. 4. Команды передачи управления. 6. Команды управления микропроцессором. В данной лекции мы рассмотрим группу команд работы с цепочками и примеры программ ввода- вывода. 2 Команды работы с цепочками Под цепочкой понимается последовательность каких-нибудь связанных байт или слов, которые находятся в смежных ячейках памяти. В системе команд процессора 8086 есть 5 команд, предназначенных для обработки одного элемента цепочки. Такой команде могут предшествовать специальные однобайтные префиксы повторения. 3 Команды работы с цепочками Простейший из них - REP, который вызывает повторение действия команды над следующими элементами цепочки. Повторение рассчитано на максимальную длину цепочек 64К и выполняется значительно быстрее цикла LOOP. Цепочечные команды могут иметь только один операнд-источник, или операнд-получатель или оба операнда одновременно. В качестве адреса операнда-источника (SRC) всегда используется регистровая пара DS:SI. 4 Операнд-получатель – адресуется ES:DI. Команды работы с цепочками Команда MOVS передает байт или слово из цепочки, которая адресуется DS:SI, в цепочку, которая адресуется ES:DI. Команда передачи цепочки байт MOVSB после передачи байта увеличивает содержание регистров SI и DI на 1, а команда передачи цепочки слов MOVSW после передачи слова увеличивает их содержание на 2. Формат команды: MOWSB или MOVSW 5 Команды работы с цепочками Команда сравнения цепочек CMPS производит вычитание байта или слова цепочки которая адресуется DS:SI, в цепочку, которая адресуется ES:DI. В зависимости от результата вычитания устанавливаются флаги, но сами операнды не изменяются. Команда сравнения цепочек байт CMPSB после каждой операции сравнения увеличивает содержание регистров SI и DI на 1, а команда сравнения цепочек слов CMPSW - на 2. Формат команды: CMPSB или CMPSW 6 Команды работы с цепочками Команда STOSB/W передает байт или слово из AX, в цепочку, которая адресуется регистровой парой ES:DI. Команда после передачи байта/слова увеличивает содержание регистра DI на 1 или 2. Формат команды: STOSB, STOSW 7 Команды работы с цепочками Пример применения команды STOSB/W для затирания экрана. Упрощенный АЛГОРИТМ 1. Настроить адрес начала цепочки на начало экрана. 2. Занести в счетчик длину цепочки 3. Занести в АХ 0. 4. Вызвать команду заполнения цепочки. 8 Команды работы с цепочками Пример применения команды STOSB/W для затирания экрана. ПРОГРАММА. MOV AX, 0B800H { Далее эти 2 строки } MOV ES, AX { НЕ повторяем! } XOR DI,DI MOV CX, 80*25 XOR AX,AX REP STOSW 9 Команды работы с цепочками АЛГОРИТМ заполнения 10й строки экрана цифрой 3 – полностью линейный. 1. Настроить адрес начала цепочки на 10ю строку. 2. Занести в счетчик длину цепочки (80) 3. Занести в АХ цвет и код цифры 3. 4. Вызвать команду заполнения цепочки. 10 Команды работы с цепочками Пример применения команды STOSB/W для заполнения 10й строки экрана цифрой 3. MOV DI, 160*10 (1 символ занимает 2байта) MOV CX, 80 MOV AX, 1E33Н (33Н – ASCII код цифры 3) REP STOSW 11 Примеры программ ввода/вывода АЛГОРТМ заполнения столбика нарастающим кодом - циклический. 1. Настроить адрес начала цепочки на заданный столбик. 2. Занести в счетчик размер столбика (25) 3. Занести в АН цвет (например, 2E) и в АL код цифры (код 1 - 31h). 4. Вывести на экран содержимое АХ. 5. Увеличить адрес на 160 – на размер строки. 6. Уменьшить счетчик на 1 7. Проверить результат на 0 – если НЕ равно 0 перейти к п.4, иначе – конец. 12 Примеры программ ввода/вывода ПРОГРАММА заполнения столбика нарастающим кодом. MOV AX, 0B800H MOV ES, AX XOR DI,DI MOV CX, 25 MOV AX, 2F42H (42H – код буквы А) @L1:MOV ES:[DI], AX INC AX ADD DI, 160 LOOP @L1 13 Примеры программ ввода/вывода ПРОГРАММА ввода данных из массива и вывода их в два столбика. XOR DI,DI MOV CX, 25 @L1: IN AX, 40H (40H – АДРЕС порта) MOV ES:[DI], AX ADD DI, 80 LOOP @L1 14 Примеры программ ввода/вывода Алгоритм ПРОГРАММЫ опроса портов с задержкой. 1. Занести в счетчик число повторений (100) 2. Выполнить программу ввода массива из порта. 4. Вызвать подпрограмму задержки 6. Уменьшить счетчик на 1 7. Проверить результат на 0 – если НЕ равно 0 - перейти к п.4, иначе – конец. 15 Параллельный порт Параллелельные порты предназначенны для обмена данными с внешними устройствами, при этом в качестве внешнего устройства может использоваться любой источник информации (кнопки, датчики, микросхемы приемников, синтезаторов частот, дополнительной памяти, исполнительные механизмы, двигатели, реле и даже другая МПС). В качестве примера параллельного порта мы изучаем БИС 8255, которая позволяет реализовать большинство известных протоколов обмена по параллельным каналам. Ее стр. схему и принцип программирования разберем на ПЗ. 16 Структурные схемы интерфейсных БИС C0 Лічильник 0 OUT 0 CE0 D0 - D7 Буфер каналу даних C1 Лічильник 1 OUT 1 CE1 A0 A1 CS RD WR Блок керування C2 Лічильник 2 OUT 2 CE2 Рисунок 5.1 – Структурна схема ВІС КР580ВИ53 17 Программируемый таймер Программируемый таймер КР580ВИ53 (аналог Intel i8253) содержит три независимых счетчика. Каждый из трех счетчиков может быть запрограмирован на 6 режимов работы и систему исчисления (двоичную или десятичную). Таймер может работать как: делитель частоты; счетчик событий; цифровой одновибратор; 18 Программируемый таймер Режим 1 - ждущий мультивибратор с программноустанавливаемой продолжительностью сигнала. В этом режиме выход канала после загрузки числа в счетчик канала устанавливается на уровень "0" после первого тактового сигнала, следующего за передним фронтом на управляющем входе. Одновременно начинается счет, а достигши конечного числа на выходе устанавливается уровень "1". Режим 2 - генератор тактовых сигналов. В этом режиме на выходе канала через число периодов тактовой частоты, записанное в счетчике канала, появляется уровень "0" продолжительностью в один период тактовой частоты. 19 Программируемый таймер Режим 3 - генератор прямоугольных сигналов. В этом режиме на выходе канала будет уровень "1" на протяжении первой половины интервала времени, определяемого числом в счетчике, и уровень "0" на протяжении второй половины. Режим 4 - программный способ. После установки режима 4 на выходе канала появляется уровень "1". Когда число полностью загружено в счетчик канала и на управляющий вход представлен уровень "1", начинается счет, и достигши конечного числа на выходе появляется импульс уровня "0" продолжительностью в один период тактовой частоты. Режим 5 - схемотехничаски управляемый способ. Работа канала в этом случае аналогична работе в режиме 4 с тем лишь различием, что счетчик канала после загрузки начинает счет только по переднему фронту на управляющем входе. Кроме того, если во время счета на управляющем входе снова появится передний фронт сигнала, то счет будет начат сначала. 20 Управляющие слова интерфейсных БИС D7 D6 Вибор канала 00 - канал 0 01 - канал 1 10 - канал 2 D5 D4 Сколько и какие байты загружать 00 - читання на льоту 01 – чт/зап младшего байта 10 – чт/зап 11 D3 D2 D1 D0 Режим работы 1канала десятичны 00 - режим 0 й счет 001 - режим 1 0– двоичный 010 - режим 2 счет 011 - режим 3 100 - режим 4 101 - режим 5 старшого байта чт/зап слова – ст И мл байта 21 Примеры программирования интерфейсных БИС Программа инициализации 2-х счетчиков таймера должна иметь вид: MOV AL, 00000101B ; 00-Режим Сч0, 01-мл. байт, 010-реж.2,1-дв/дес OUT 43H,AL ; вывод в регистр режима MOV AL, 01110111B ; 01-Режим Сч1,11-два байта,011-реж.2,1-дв/дес OUT 43H ; вывод в регистр режима MOV AL, 10H ; N деление в Сч0 OUT 40H ; Адрес Сч0 MOV AL, 00 ; мл. байт N деление в Лч1 OUT 41H ; Адрес Сч1 MOV AL, 20H ; ст. байт N деление в Лч1 OUT 41H ; Адрес Сч1 22 Вопросы для самоконтроля Форматы команд МП 8086 Поясните особенности формирования физического адреса из логического в МП 8086. Поясните особенности команд работы с цепочками и сегментных регистров. Приведите примеры использования команд работы с цепочками. Приведите пример программы циклического опроса 20 портов и укажите использованные виды адресации 23