- •Лабораторная работа № 11 Команды передачи управления
- •Цель работы
- •2.Основные теоретические сведения
- •3. Порядок выполнения работы
- •3.1. Исследование команд условного перехода
- •3.1.1. Команды перехода по содержимому аккумулятора
- •3.1.3. Команды проверки битов
- •3.1.4. Команды декремента и перехода, если не нуль
- •Задания для самостоятельной работы
- •4. Содержание отчета
- •Контрольные вопросы
3. Порядок выполнения работы
3.1. Исследование команд условного перехода
3.1.1. Команды перехода по содержимому аккумулятора
Это команды
JZ label - переход на метку label, если содержимое аккумулятора равно нулю,
JNZ label - переход на метку label, если содержимое аккумулятора не равно нулю.
Задание. Создайте файл в Вашей папке с именем wait_0.asm. Запишите в него программу, которая постоянно вводит байт из порта P1 и выводит его в порт P0 до тех пор, пока он не будет равным нулю
READ: MOV A, P1
MOV P0, A
JNZ READ ; Повторять, пока (A) 0
JMP $ ; Зацикливание программы
END Конец текста программы
Получите файлы wait_0.obj и wait_0.hex. Исследуйте работу программы с помощью симулятора AVSIM51 в пошаговом режиме, сделав несколько циклов. Затем занесите в порт P1 нули и вновь выполните программу в пошаговом режиме. Сделайте выводы о работе программы.
3.1.2. Команды сравнения и перехода, если не равно
Из четырех возможных вариантов этой команды мы пока рассмотрим следующий
CJNE A, #d, label - сравнение содержимого аккумулятора с константой и переход,
если не равно
Задание. Создайте в Вашей папке файл с именем wait_77.asm и запишите в него программу, которая постоянно вводит байт из порта P1 и выводит его в порт P0, пока он не станет равным значению 77H
READ: MOV A, P1
MOV P0, A
CJNE A, #77H, READ ; Повторять, пока (A) 0
JMP $ ; Зацикливание программы
END Конец текста программы
Получите файлы wait_77.obj и wait_77.hex. Исследуйте работу программы с помощью симулятора AVSIM51 в пошаговом режиме, сделав несколько циклов. Затем занесите в порт P1 число 77H и вновь выполните программу в пошаговом режиме. Сделайте выводы о работе программы.
3.1.3. Команды проверки битов
Это команды
JB bit, label - переход, если бит равен единице
JNB bit, label - переход, если бит равен нулю.
Задание. Создайте в Вашей папке файл с именем wait_p23.asm и занесите в него текст программы, которая постоянно вводит байт из порта P1 в аккумулятор и выводит его в порт P0 до тех пор, пока 3-й разряд порта P2 будет равен единице. Если же в этом разряде будет нуль, то цикл ввода-вывода прекращается.
READ: MOV A, P1
MOV P0, A
JB P2.3, READ ; Повторять, если P2.3 = 1
JMP $ ; Зацикливание программы
END Конец текста программы
Получите файлы wait_p23.obj и wait_p23.hex. Исследуйте работу программы с помощью симулятора AVSIM51 в пошаговом режиме, сделав несколько циклов. Затем занесите в 3-й разряд порта P2 нуль и вновь выполните программу в пошаговом режиме. Сделайте выводы о работе программы.
3.1.4. Команды декремента и перехода, если не нуль
Это команды
DJNZ Rn, label - декремент регистра и переход, если его содержимое не равно нулю
DJNZ ad, label - декремент прямоадресуемого байта и переход, если его содержимое
не равно нулю
Рассмотрим программу, которая выводит в порт P0 числа от 80H до 00H.
Задание 1. Создайте файл с именем out_1.asm и занесите в него текст программы
MOV P0, #80H
OUT: DJNZ P0, OUT ; Декремент P0 и цикл, если (P0) 0
JMP $
END Конец текста программы
Получите файлы out_1.obj и out_1.hex. Исследуйте работу программы с помощью симулятора в автоматическом режиме, установив низкую скорость работы (LOW) с помощью клавиши F5. Напомним, что для запуска автоматического режима необходимо нажать клавишу F1. Остановить работу программы в автоматическом режиме можно повторным нажатием на клавишу F1. Каково будет содержимое порта P0 при выходе из программы
Задание 2. Создайте файл с именем out_2.asm и занесите в него текст программы
MOV R7, #80H
OUT: MOV P0, R7
DJNZ R7, OUT ; Декремент R7 и цикл, если (R7) 0
END
Получите файлы out_2.obj и out_2.hex. Исследуйте работу программы с помощью симулятора в автоматическом режиме, установив низкую скорость работы (LOW) с помощью клавиши F5. Каково будет содержимое порта P0 при выходе из программы Как можно исправить ошибку в работе программы Модернизируйте программу, находящуюся в файле out_2.asm. Исследуйте ее работу и убедитесь в правильности выполнения.