Скачиваний:
60
Добавлен:
11.10.2021
Размер:
517.15 Кб
Скачать

21

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.

Соседние файлы в папке Лабораторки