Материал: No2

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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;