Автор работы: Пользователь скрыл имя, 12 Июня 2015 в 10:47, практическая работа
Цель работы: Изучить систему команд микроконтроллеров серии MCS51, способы адресации операндов в командах и получить практические навыки в применении команд при разработке программного обеспечения.
Для наглядности изначально в регистр R0 загружено значение 33Н, в регистр R1 – 40Н, в аккумулятор – 11H.
Во всех примерах (примеры 4.1, 4.2, 4.3, 4.4) в машинном коде данная команда представлена одним байтом. В двоичном виде машинные коды примеров 4.1, 4.2, 4.3, 4.4 будут иметь вид:
1111 0110 |
для примера 4.1 |
1111 0110 |
для примера 4.2 |
1111 0110 |
для примера 4.3 |
1111 0111 |
для примера 4.4 |
Старшие семь бит являются кодом команды, а младший бит – адресом (номером регистра, который используется в качестве указателя на ячейку памяти данных).
Этот пример иллюстрирует – первый операнд указан в виде косвенно-регистровой адресации. Данный способ называется косвенно-регистровый: косвенно – т.к. адрес получателя информации задан косвенно (адрес ячейки памяти содержится в регистре) и регистровый – т.к. указатель задан неявно (номер регистра, выступающего в роли указателя находится в памяти программ непосредственно в коде команды).
Этот способ адресации позволяет получить более короткий код программы при работе с
массивами, организовав цикл. |
|||||
Пример №5 |
00 |
NOP |
|||
0000 |
DPTR,#01A0H |
;Запись в DPTR знач. 1A0H |
|||
0001 |
9001A0 |
MOV |
|||
0004 |
7405 |
MOV |
A,#05H |
;Запись в A значения 05H |
|
0006 |
93 |
MOVC |
A,@A+DPTR |
;Пример 5.1 |
|
0007 |
7464 |
MOV |
A,#64H |
;Запись в A значения 64H |
|
4 |
0009 |
83 |
MOVC |
A,@A+PC |
;Пример 5.2 |
000D |
00 |
NOP |
Для наглядности примера 5.1 изначально в регистр DPTR загружено значение 01A0Н, в аккумулятор – 05H.
Для наглядности примера 5.2 изначально в аккумулятор загружено значение 64Н.
Примеры 5.1 и 5.2 демонстрируют косвенно-регистровую адресацию по сумме базового и индексного регистров. В качестве базового регистра может выступать регистр DPTR или счетчик команд PC, а в качестве индексного регистра – аккумулятор A.
Косвенно-регистровая адресация по сумме базового и индексного регистров позволяет осуществлять выбор данных (констант) из таблиц, размещенных в памяти программ.
Пример №6.
Данный пример демонстрирует синтаксис, обеспечивающий различные способы адресации.
0000 |
00 |
NOP |
R0,#5CH |
;Пример 6.1 |
|
0001 |
785C |
MOV |
|||
0003 |
A85C |
MOV |
R0,5CH |
;Пример 6.2 |
|
0005 |
A65C |
MOV |
@R0,5CH |
;Пример 6.3 |
|
0007 |
765C |
MOV |
@R0,#5CH |
;Пример 6.4 |
|
000D |
00 |
NOP |
Пример 6.1 – значение 5CH пересылается в регистр R0.
Пример 6.2 – значение из ячейки памяти данных с адресом 5CH пересылается в регистр R0. Пример 6.3 – значение из ячейки памяти данных с адресом 5CH пересылается в ячейку
памяти данных, адрес которой находится в регистре R0.
Пример 6.4 – значение 5CH пересылается в ячейку памяти данных, адрес которой находится в регистре R0.
ПРИМЕЧАНИЕ: Для полного изучения команд пересылок и способов адресации операндов необходимо самостоятельно рассмотреть выполнение команд:
MOV <байт-назначения>,<байт-ис
MOV <бит назначения>,<бит источника>
MOV DPTR,#datal6
MOVC A,@A+(<R16>)
MOVX <байт приемника>,<байт источника>
Выполнение работы.
Содержание отчета:
5
6
ПРИЛОЖЕНИЕ А
Мнемонические обозначения команд микроконтроллеров серии MCS-51 и их функциональное назначение
Команда |
Операнды |
Функция команды |
ACALL |
<addr 11> |
абсолютный вызов |
подпрограммы | ||
ADD |
А,<байт-источник> |
сложение |
ADDC |
A,<байт-источник> |
сложение с переносом |
AJMP |
<addr11> |
абсолютный переход |
ANL |
<байт-назначения>,<байт-источн |
логическое "И" |
ANL |
С,<бит источника> |
логическое "И" для переменных- |
битов | ||
CJNE |
<байт-назначения>,<байт-источн |
сравнение и переход, если не |
равно | ||
CLR |
A |
сброс аккумулятора |
CLR |
<bit> |
сброс бита |
CPL |
А |
инверсия аккумулятора |
CPL |
<bit> |
инверсия бита |
DA |
А |
десятичная коррекция |
аккумулятора для сложения | ||
DEC |
<байт> |
декремент |
DIV |
АВ |
деление |
DJNZ |
<байт>, < смещение > |
декремент и переход, если не |
равно нулю | ||
INC |
<байт> |
Инкремент |
INC |
DPTR |
инкремент указателя данных |
JB |
<bit>,<rel8> |
переход, если бит установлен |
JBC |
<bit>,<rel8> |
переход, если бит установлен и |
сброс этого бита | ||
JC |
<rel8> |
переход, если перенос |
установлен" | ||
JMP |
@A+DPTR |
косвенный переход |
JNB |
<bit>,<rel8> |
переход, если бит не установлен |
JNC |
<rel8> |
переход, если перенос не |
установлен | ||
JNZ |
<ге18> |
переход, если содержимое |
аккумулятора не равно нулю | ||
JZ |
<ге18> |
переход, если содержимое |
аккумулятора равно нулю | ||
LCALL |
<addrl6> |
длинный вызов |
LJMP |
<addrl6> |
длинный переход |
MOV |
<байт-назначения>,<байт-источн |
переслать переменную-байт |
MOV |
<бит назначения>,<бит источника> |
переслать бит данных |
MOV |
DPTR,#datal6 |
загрузить указатель данных 16- |
битовой константой | ||
MOVC |
A,@A+(<R16>) |
переслать байт из памяти |
программ | ||
MOVX |
<байт приемника>,<байт источника> |
переслать во внешнюю память |
(из внешней памяти) данных |
7
Команда |
Операнды |
Функция команды |
MUL |
АВ |
умножение |
NOP |
нет операции | |
ORL |
<байт назначения>,<байт источника> |
логическое "ИЛИ |
ORL |
С,<бит источника> |
логическое "ИЛИ" для |
переменных-битов | ||
POP |
<direct> |
чтение из стека |
PUSH |
<direct> |
запись в стек |
RET |
возврат из подпрограммы | |
RETI |
возврат из прерывания | |
RL |
A |
сдвиг содержимого аккумулятора |
влево | ||
RLC |
А |
сдвиг содержимого аккумулятора |
влево через флаг переноса | ||
RR |
А |
сдвиг содержимого аккумулятора |
вправо | ||
RRC |
A |
сдвиг содержимого аккумулятора |
вправо через флаг переноса | ||
SETB |
<бит> |
установить бит |
SJMP |
<rel8> |
короткий переход |
SUBB |
А,<байт источника> |
вычитание с заемом |
SWAP |
A |
обмен тетрадами внутри |
аккумулятора | ||
XCH |
А,<байт> |
обмен содержимого |
аккумулятора с переменной- | ||
байтом | ||
ХCНD |
А,@Ri |
обмен тетрадой |
XRL |
Байт назначения>,<байт источника> |
логическое "ИСКЛЮЧАЮЩЕЕ |
ИЛИ" для переменных-байтов |
8
ПРИЛОЖЕНИЕ В
Варианты заданий для индивидуального выполнения. Вариант задания №1.
Вариант задания №2.