6
Пояснения:
1)mov r1, #50 (mov r2, #50) – присваивание регистру значения «50»
2)dec r1, – уменьшение значения регистра на единицу
3)mov A, r2, – перенос значения регистра 2 в аккумулятор
4)addc A, r1, – сложение значений аккумулятора и регистра 1 с сохранением результата в аккумуляторе
5)mov p1, A, – вывод значения аккумулятора в порт 1
6)cjne r1, #0, Plan, – сравнение значения регистра 1 с нулем
7)nop – пустая команда
8)jmp Exit – окончание программы
7
Ответы на вопросы:
1) Какие команды МП MCS-51 предназначены для передачи данных?
Команда MOV копирует данные из операнда-источника в операнд-
получатель. Она от носится к группе команд передачи (пересылки) данных (data transfer) и используется в любой программе.
Команда MOVZX (Move With Zero-Extend, или Переместить и дополнить нулями) копирует содержимое исходного операнда в больший по размеру регистр получателя данных.
Команда MOVSX (Move With Sign-Extend, или переместить и дополнить знаком) копирует содержимое исходного операнда в больший по размеру регистр получателя данных, также как и команда MOVZX.
Команда XCHG (Exchange Data, или Обмен данными) позволяет обменять содержимое двух операндов.
2) Какие команды МП MCS-51 предназначены для организации
подпрограмм?
Команда CALL обеспечивает вызов подпрограмм. При этом вызов может осуществляться по прямому и косвенному адресу.
Команда RET обеспечивает возврат из подпрограммы в точку вызова. Эта команда должна завершать любую процедуру. При этом она может находиться
ине в конце процедуры, но исполняться будет последней.
3)Какие методы адресации используются в командах вашей программы?
Регистровая адресация
8
4) Как можно проверить нулевой результат выполнения
арифметической операции?
Проверить нулевой результат выполнения арифметической операции можно с помощью флага ZF, который отражает и беззнаковый, и знаковый нулевой результат.
5) При помощи каких команд можно организовать цикл?
Организовать цикл можно с помощью команды Loop, с помощью команд условного или безусловного перехода и регистра ecx/cx (выполняет роль
счетчика).
6) На какие группы делятся команды МП MCS-51 по
функциональным признакам?
−пересылки данных;
−арифметические операции;
−логические операции;
−операции над битами;
−управление аппаратно-программными средствами МП.
7) Что называют командой, микрокомандой, системой команд?
Команда – слово, которое извлекается микропроцессором из памяти программ, декодируется и им исполняется, таким образом, трансформируясь из информации в действие.
Микрокоманда – это набор одной, двух или более микроопераций,
которые могут быть выполнены одновременно.
Система команд определяет не только список команд, поддерживаемых микропроцессором, но и методы адресации к данным. Большинство команд выполняются за один или два машинных цикла «выборка-исполнение», за исключением команд умножения и деления, которые выполняются за четыре
9
машинных цикла. В качестве операндов команд МП могут использоваться биты, четырехбитные цифры (ниблы), байты и двухбайтные слова.
8) Дайте определения понятиям микрооперация, структура команды,
формат команды.
Микрооперация – элементарное машинное действие (элементарная операция), которое выполняется над содержимым операционных блоков
(операндами).
Структура команды определяется составом, назначением и расположением полей в команде.
Формат команды – это структура команды с разметкой номеров разрядов,
определяющих границы отдельных полей команды.
9) Какие методы адресации характерны для МП MCS-51?
−Прямая адресация (Direct Addressing). Операнд определяется 8-битным адресом в инструкции. Эта адресация используется только для внутренней памяти данных и регистров.
−Косвенная адресация (Indirect Addressing). Адрес регистра,
содержащий адрес операнда, описан самой инструкцией и содержится в коде операции. Данный вид адресации может применяться при обращении как к внутренней, так и внешней памяти. Для указания 8-битных адресов могут использоваться регистры R0 и R1 или указатель стека SP. Для 16-битной адресации используется только регистр (DPTR - Data Pointer - "указатель данных").
− Регистровая адресация (Register Instruction). Данная адресация применяется для доступа к регистрам R0…R7. Команды с регистровой адресацией содержат в коде операции трехбитовое поле, которое определяет номер регистра.
10
− Непосредственная адресация (Immediate constants). Операнд содержится в теле команды и следует за кодом операции. Размер операнда составляет один или два байта в котором содержится константа (#data8,
#data16).
− Индексная адресация (Indexed Addressing). Индексная адресация используется при чтении памяти программ. В этом режиме осуществляется просмотр таблиц в памяти программ. 16-битовый регистр (DPTR или PC)
содержит базовый адрес требуемой таблицы, а аккумулятор содержит индекс,
т.е. указывает на порядковый номер элемента таблицы. Адрес элемента таблицы находится сложением базы с индексом (содержимым аккумулятора).
− Неявная адресация (Register-Specific Instructions). Название «неявная адресация» подразумевает, что адрес к регистрам или памяти не указывается при помощи операнда. Адрес регистра определяется самой инструкцией и содержится в коде операции. Например, некоторые инструкции используют индивидуальные регистры, такие, как аккумулятор, или DPTR, но при этом,
адрес этих регистров не объявлен в операнде, так как он уже определен командой и определяется МП кода операции. Примером неявной адресации к памяти могут являться команды push, pop (команды для работы со стеком,
позволяют заносить значения регистров и ячеек памяти в стек и извлекать их оттуда).
10) Какие условия можно проверять в командах условного перехода
МП MCS-51?
−JZ (jump if zero) – аккумулятор содержит нулевое значение;
−JNZ (jump if not zero) – аккумулятор содержит не нулевое значение;
−JC (jump if carry) – бит переноса С равен 1;
−JNC (jump if not carry) – бит переноса С равен 0;
−JB (jump if bit) – прямо адресуемый бит равен 1;
−JNB (jump if not bit) – прямо адресуемый бит равен 0;