Лабораторки / ЛР2
.pdf21
3 Ответы на контрольные вопросы
1)Какие команды МП MCS-51 предназначены для передачи данных?
•копирование данных во внутреннем ОЗУ: MOV;
•обмен данными аккумулятора с внутренним ОЗУ: XCH, XCHD
•копирование из внешней памяти данных: MOVX
•копирование данных из памяти программ: MOVC
•загрузка в стек: PUSH
•извлечение из стека: POP
Таблица 1- Команды МП MCS-51 предназначены для передачи данных
Название команды |
Мнемокод |
КОП |
Б |
Ц |
Операция |
|
Пересылка в аккумулятор из реги- |
MOV A, Rn |
1110.1rrr |
1 |
1 |
(A)<-(Rn) |
|
стра (n=0+7) |
||||||
|
|
|
|
|
||
Пересылка в аккумулятор прямо- |
MOV A, ad |
1110.010 |
2 |
1 |
(A)<-(ad) |
|
адресуемого байта |
|
1 |
|
|
|
|
Пересылка в аккумулятор байта из |
MOV A, |
1110.011 |
1 |
1 |
(A)<-((Ri)) |
|
РПД (i=0,1) |
@Ri |
i |
|
|
|
|
Загрузка в аккумулятор константы |
MOV A, |
0111.010 |
2 |
1 |
(A)<-#data8 |
|
|
#data8 |
0 |
|
|
|
|
Пересылка в регистр из аккумулято- |
MOV Rn, A |
1111.1rrr |
1 |
1 |
(Rn)<-(A) |
|
ра |
|
|
|
|
|
|
Пересылка в регистр прямоадресуе- |
MOV Rn, |
1010.1rrr |
2 |
2 |
(Rn)<-(ad) |
|
мого байта |
ad |
|||||
|
|
|
|
|||
Загрузка в регистр константы |
MOV Rn, |
0111.1rrr |
2 |
1 |
(Rn)<-#data8 |
|
#data8 |
||||||
|
|
|
|
|
||
Пересылка по прямому адресу акку- |
MOV ad, A |
1111.010 |
2 |
1 |
(ad)<-(A) |
|
мулятора |
|
1 |
|
|
|
|
Пересылка по прямому адресу реги- |
MOV ad, |
1000.1rrr |
2 |
2 |
(ad)<-(Rn) |
|
стра |
Rn |
|||||
|
|
|
|
|||
Пересылка прямоадресуемого байта |
MOV add, |
1000.010 |
3 |
2 |
(add)<-(ads) |
|
по прямому адресу |
ads |
1 |
|
|
|
|
Пересылка байта из РПД по прямому |
MOV ad, |
1000.011 |
2 |
2 |
(ad)<-((Ri)) |
|
адресу |
@Ri |
i |
|
|
|
|
Пересылка по прямому адресу кон- |
MOV ad, |
0111.010 |
3 |
2 |
(ad)<-#data8 |
|
станты |
#data8 |
1 |
|
|
|
|
Пересылка в РПД из аккумулятора |
MOV @Ri, |
1111.011 |
1 |
1 |
((Ri))<-(A) |
|
|
A |
i |
|
|
|
|
Пересылка в РПД прямоадресуемого |
MOV @Ri, |
0110.011 |
2 |
2 |
((Ri))<-(ad) |
|
байта |
ad |
i |
|
|
|
|
Пересылка в РПД константы |
MOV @Ri, |
0111.011 |
2 |
1 |
((Ri))<-#data8 |
|
|
#data8 |
i |
|
|
|
|
|
MOV |
1001.000 |
|
|
(DPTR)<- |
|
Загрузка указателя данных |
DPTR, |
3 |
2 |
|||
|
#data16 |
0 |
|
|
#data16 |
|
|
|
|
|
|
22
Пересылка в аккумулятор байта из |
MOVC A, |
1001.001 |
1 |
2 |
A<-((A) |
ПП |
@A+DPTR |
1 |
|
|
+(DPTR)) |
Пересылка в аккумулятор байта |
MOVC A, |
1000.001 |
1 |
2 |
(PC)<-(PC)+1, |
(A)<- |
|||||
из ПП |
@A+PC |
1 |
|
|
((A)+(PC)) |
|
|
|
|
|
|
Пересылка в аккумулятор байта из |
MOVX A, |
1110.001 |
1 |
2 |
(A)<-((Ri)) |
памяти данных |
@Ri |
i |
|
|
|
Пересылка в аккумулятор байта из |
MOVXA, |
1110.000 |
1 |
2 |
(A)<- |
расширенной памяти данных |
@ |
0 |
((DPTR)) |
||
DPTR |
|
|
|||
|
|
|
|
|
|
Пересылка в память данных значе- |
MOVX |
1111.001 |
1 |
2 |
((Ri))<-(A) |
@Ri, |
|||||
ние из аккумулятора |
A |
i |
|
|
|
|
|
|
|
|
|
Пересылка в расширенную память |
MOVX |
1111.000 |
1 |
2 |
((DPTR))<- |
данных значение из аккумулятора |
@DPTR,A |
0 |
|
|
(A) |
|
|
1100.000 |
2 |
2 |
(SP)<-(SP) + |
Загрузка в стек |
PUSH ad |
|
|
1, |
|
0 |
|
|
|||
|
|
|
|
((SP))<-(ad) |
|
|
|
|
|
|
|
Извлечение из стека |
POP ad |
1101.000 |
2 |
2 |
(ad)<-(SP), |
|
|
0 |
|
|
(SP)<-(SP) – 1 |
Обмен аккумулятора с регистром |
XCH A, Rn |
1100.1rrr |
1 |
1 |
(A)<->(Rn) |
Обмен аккумулятора с прямоадресу- |
XCH A, ad |
1100.010 |
2 |
1 |
(A)<->(ad) |
емым байтом |
|
1 |
|
|
|
Обмен аккумулятора с байтом из па- |
XCH A, |
1100.011 |
1 |
1 |
(A)<->((Ri)) |
мяти данных |
@Ri |
i |
|
|
|
Обмен младших тетрад |
XCHD A, |
1101.011 |
|
|
(A0…A3)<- |
аккумулятора |
1 |
1 |
|||
и памяти данных |
@Ri |
i |
|
|
>W(Ri0…Ri3) |
|
|
|
|
|
|
2) Какие команды МП MCS-51 предназначены для организации |
|||||
подпрограмм? |
|
|
|
|
|
Команда возврата из подпрограммы RET восстанавливает из стека значение счетчика команд, а команда возврата из процедуры обработки прерывания RETI, кроме того, разрешает прерывание. Команды LCALL ACALL вызывают подпрограмму, то есть это команды безусловного перехода,
при котором в стеке сохраняется полный 16-разрядный адрес возврата из подпрограммы и модифицируется счетчик команд новым значением. Это значение определяет адрес следующей исполняемой команды. Различие этих команд в том, что ACALL (absolute call) обеспечивает переход в пределах одной страницы памяти, размер которой составляет 2048 байт, тогда как
LCALL (long call) обеспечивает длинный переход по всему адресному пространству программной памяти, что составляет 65536 байт.
23
Название команды |
Мнемок |
КОП |
Б |
Ц |
Операция |
|
|
од |
|
|
|
|
|
|
|
|
|
|
(PC)<-(PC)+3, (SP)<- |
|
Длинный вызов |
LCALL |
0001.0010 |
3 |
2 |
(SP)+1, ((SP))<-(PC0...7), |
|
подпрограммы |
ad16 |
(SP)<-(SP)+1, ((SP))<- (PC8-15), |
||||
|
|
|
||||
|
|
|
|
|
(PC)<-ad16 |
|
Возврат из |
RET |
0010.0010 |
1 |
2 |
(PC8...15)<-((SP)), (SP)<- (SP)- |
|
подпрограммы |
1, (PC0...7)-((SP)), (SP)<- SP)-1 |
|||||
|
|
|
|
|||
Возврат из |
|
|
|
|
|
|
подпрограммы |
RETI |
0011.0010 |
1 |
2 |
(PC8...15) <-((SP)), (SP)<- (SP)-1, |
|
обработки |
(PC0...7) <- ((SP)), (SP)<- (SP)-1 |
|||||
|
|
|
|
|||
прерывания |
|
|
|
|
|
|
3) Какие методы адресации используются в командах вашей |
||||||
программы? |
|
|
|
|
|
|
В нашей программе мы использовали следующие методы адресации: |
•Проверка содержимого аккумулятора: JZ, JMP
•Проверка флага переноса С: JC, JNC
•Сдвиг аккумулятора влево через перенос: RLC A
•Пустая операция: NOP
•Пересылка в аккумулятор из регистра: MOV A, R
•Уменьшение значения регистра: DEC R
4) Как можно проверить нулевой результат выполнения арифметической операции?
При помощи аккумулятора может быть выполнена проверка на нуль.
•Присвоение константе 0
•Будет выполнена любая арифметическая операция
•Сравнение выполненной операции с константой
5) При помощи каких команд можно организовать цикл?
Команда DJNZ (decrement jump if not zero) предназначена для организации программных циклов. Регистр Rn или байт по адресу ad,
указанные в теле команды, содержат счетчик повторений цикла, а смещение rel — относительный адрес перехода к началу цикла. При выполнении
24
команды содержимое счетчика уменьшается на 1 и проверяется на 0. Если значение содержимого счетчика не равно 0, то осуществляется переход на начало цикла, в противном случае выполняется следующая команда.
Для организации цикла предназначена команда LOOP. У этой команды один операнд — имя метки, на которую осуществляется переход. В качестве счётчика цикла используется регистр CX. Команда LOOP выполняет декремент CX, а затем проверяет его значение. Если содержимое CX не равно нулю, то осуществляется переход на метку, иначе управление переходит к следующей после LOOP команде. Метка должна находиться в диапазоне -
127…+128 байт от команды LOOP (иначе будет ошибка).
6) На какие группы делятся команды МП MCS-51 по функциональным признакам?
По функциональным признакам команды разделяются на пять групп:
−пересылки данных;
−арифметических операций;
−логических операций;
−операций над битами;
−управления аппаратно-программными средствами МП.
7)Что называют командой, микрокомандой, системой команд?
Команда — это слово, которое извлекается микропроцессором из памяти программ, декодируется и им исполняется, таким образом,
трансформируясь из информации в действие. Команда состоит из двух частей:
кода операции (КОП) и операнда.
Микрокоманда - элементарное действие, обеспечивающее выполнение заданной операции. Совокупность микроопераций, выполняемых в одном такте, называется микрокомандой (МК).
25
Система команд - фиксированный набор команд конкретного микропроцессора. Система команд определяет не только список команд,
поддерживаемых микропроцессором, но и методы адресации к данным.
8) Дайте определения понятиям микрооперация, структура команды,
формат команды.
Микрооперация – элементарное машинное действие (элементарная операция), которое выполняется над содержимым операционных блоков
(операндами).
Структура команды - последовательное выполнение операций.
Структура команды определяется составом, назначением и расположением полей в команде.
Формат – определение длины команды и состава элементов, из которых она состоит.
9) Какие методы адресации характерны для МП MCS-51?
Набор команд МП MCS-51 поддерживает следующие методы адресации для обращения к операндам:
26
− Прямая адресация (Direct Addressing).Операнд определяется 8-
битным адресом в инструкции. Эта адресация используется только для внутренней памяти данных и регистров.
− Косвенная адресация (Indirect Addressing). Адрес регистра,
содержащий адрес операнда, описан самой инструкцией и содержится в коде операции. Данный вид адресации может применяться при обращении как к внутренней, так и внешней памяти. Для указания 8-
битных адресов могут использоваться регистры R0 и R1 или указатель стека SP. Для 16битной адресации используется только регистр (DPTR
-Data Pointer - "указатель данных").
−Регистровая адресация (Register Instruction).Данная адресация применяется для доступа к регистрам R0…R7. Команды с регистровой адресацией содержат в коде операции трехбитовое поле, которое определяет номер регистра.
−Непосредственная адресация (Immediate constants). Операнд содержится в теле команды и следует за кодом операции. Размер операнда составляет один или два байта в котором содержится константа
(#data8, #data16).
−Индексная адресация (Indexed Addressing). Индексная адресация используется при чтении памяти программ. В этом режиме осуществляется просмотр таблиц в памяти программ. 16-битовый регистр (DPTR или PC) содержит базовый адрес требуемой таблицы, а
аккумулятор содержит индекс, т.е. указывает на порядковый номер элемента таблицы. Адрес элемента таблицы находится сложением базы
синдексом (содержимым аккумулятора).
−Неявная адресация (Register-Specific Instructions). Название
«неявная адресация» подразумевает, что адрес к регистрам или памяти
не указывается при помощи операнда. Адрес регистра определяется
27
самой инструкцией и содержится в коде операции. Например, некоторые инструкции используют индивидуальные регистры, такие, как аккумулятор, или DPTR, но при этом, адрес этих регистров не объявлен в операнде, так как он уже определен командой и определяется микропроцессором из кода операции. Примером неявной адресации к памяти могут являться команды push, pop.
10) Какие условия можно проверять в командах условного перехода МП MCS-51?
С помощью команд JZ и JNZ осуществляется переход, если содержимое аккумулятора соответственно равно или не равно нулю.
Команды CJNE (3–6) служат для реализации условного перехода по результату сравнения двух 8–разрядных операндов, расположение которых указано в командах. Если их значения не равны, осуществляется переход.
Командами условного перехода можно проверять следующие условия:
−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;
−JBC (jump if bit and clear) — прямо адресуемый бит равен 1 и
сбрасывается в нулевое значение при выполнении команды.
28
4 Заключение Во время лабораторной работы были изучены принципы работы и
системы команд микропроцессора на примере микропроцессоров семейства
Intel NCS-51.
Был написан отчет согласно ОС ТУСУР 01-2013.