Изучение системы команд в микроконтроллерах серии MCS51. Изучение способов адресации.

Автор работы: Пользователь скрыл имя, 12 Июня 2015 в 10:47, практическая работа

Краткое описание

Цель работы: Изучить систему команд микроконтроллеров серии MCS51, способы адресации операндов в командах и получить практические навыки в применении команд при разработке программного обеспечения.

Прикрепленные файлы: 1 файл

ПР№2.docx

— 81.83 Кб (Скачать документ)

Практическая работа №2

 

Тема работы: Изучение системы команд в микроконтроллерах серии MCS51. Изучение способов адресации.

 

Цель работы: Изучить систему команд микроконтроллеров серии MCS51, способы адресации операндов в командах и получить практические навыки в применении команд при разработке программного обеспечения.

 

Теоретические сведения.

 

Команда микропроцессора представляется машинным кодом . Для выполнения команды микропроцессор всегда выполняет определенную последовательность действий:

 

  • извлечение команды – чтение из ячейки памяти адрес, которой находится в счетчике команд и загрузка в регистр команд;
  • декодирование команды;

 

  • выполнение команды – формирование управляющих сигналов (в зависимости от результата декодирования) для различных составных частей микропроцессора, под воздействием которых происходит выполнение операций, определяемых данной командой.

Написание программного обеспечения в машинных кодах довольно трудоемкий процесс,

 

поэтому для упрощения создан язык программирования – Assembler. В языке Assembler применяется мнемоническое обозначение команд (машинных кодов) микропроцессора. Мнемонические обозначения представляют собой несколько символов (как правило 3 – 4 буквы) от сокращенного названия операции (функции), выполняемой микропроцессором при выполнении данной команды. Команда, зависимости от выполняемой ей функции, может в своем составе иметь операнды. Таким образом, команда может быть без операндов или иметь один или несколько операндов (обычно количество операндов от 1-го до 3-х).

 

Применительно к микроконтроллерам серии MCS-51 система команд имеет 42 мнемонических обозначения команд для реализации 33 функций. Полный перечень мнемонического обозначения команд микроконтроллеров серии MCS-51 приведен в приложении А. В машинном коде команды занимают один, два или три байта и выполняются за один или два машинных цикла (команды умножения и деления – четыре). Синтаксис большинства команд языка Assembler состоит из мнемонического обозначения функции , вслед за которым идут операнды, указывающие методы адресации и типы данных. Различные типы данных или режимы адресации определяются указанными операндами, а не изменениями мнемонических обозначений.

Способы адресации операндов-источников:

 

  • регистровая адресация;

 

  • прямая адресация;

 

  • косвенно-регистровая адресация;

 

  • непосредственная адресация;

 

  • косвенная адресация по сумме базового и индексного регистров. Способы адресации операндов-назначения:
  • регистровая адресация;

 

  • прямая адресация;

 

  • косвенно-регистровая адресация;

 

Регистровая адресация.

 

Регистровая адресация используется для обращения к восьми регистрам общего назначения (текущего банка регистров общего назначения). Следует отметить, что обращение к этим регистрам может быть осуществлено с использованием прямой адресации и косвенно-регистровой адресации (как к обычным ячейкам внутренней памяти данных).

 

Регистровая адресация также используется для обращения к регистровой паре AB, регистрам A, B, DPTR и к флагу переноса С. Использование регистровой адресации позволяет получить двухбайтовый эквивалент трехбайтовых команд прямой адресации.

 

 

1

 

Прямая адресация.

 

Прямая байтовая адресация используется для обращения к внутренней памяти данных и к регистрам специальных функций.

 

Прямая битовая адресация используется для обращения к 128-ми битам в битовой области внутренней памяти данных и к отдельно адресуемым битам в регистрах специальных функций. Старший бит прямого адреса определяет обращение к битовой области внутренней памяти данных или к отдельно адресуемым битам в регистрах специальных функций.

 

Косвенно-регистровая адресация.

 

Косвенно -регистровая адресация используется для обращения к ячейкам внутренней памяти данных. В качестве указателей могут использоваться регистры R0, R1 текущего банка регистров общего назначения.

При выполнении команд PUSH и POP (запись в стек и чтение из стека) в качестве указателя используется регистр SP – указатель стека.

Косвенно-регистровая адресация также используется для обращения к ячейкам внешней памяти данных. Возможны два варианта организации косвенно -регистровой адресации к внешней памяти данных. Использование первого или второго способа определяется схемным решением подключения внешней памяти данных к микроконтроллеру.

 

В первом варианте – шина адреса внешней памяти данных подключена к портам P0, P2, что обеспечивает доступ ко всему адресному пространству внешней памяти данных. В этом случае в качестве указателя может использоваться регистр DPTR, который имеет разрядность 16бит. Это позволяет получить доступ к любой ячейке внешней памяти данных в пределах 64Кбайт.

 

Во втором варианте – шина адреса внешней памяти данных подключена: восемь младших разрядов – к порту P0, а старшие разряды – через какие либо линии портов P1, P2, P3 (возможно с дополнительным схемным решением, обеспечивающим переключение страниц внешней памяти). В этом случае внешняя память данных имеет страничную организацию размер (страницы 256байт) и в качестве указателя могут использоваться регистры R0, R1 текущего банка регистров общего назначения.

 

ПРИМЕЧАНИЕ: Подробности по подключению внешней памяти данных изложены в [1].

 

Непосредственная адресация.

 

Непосредственная адресация позволяет выбрать из адресного пространства памяти программ данные (константы), указанные в командах явным образом.

 

Косвенно-регистровая адресация по сумме базового и индексного регистров.

 

Косвенно-регистровая адресация по сумме базового и индексного регистров позволяет осуществлять выбор данных (констант) из таблиц, размещенных в памяти программ.

 

В качестве базового регистра может выступать регистр DPTR или счетчик команд PC, а в качестве индексного регистра – аккумулятор A.

 

Примеры, демонстрирующие различные способы адресации.

 

Рассмотренные выше способы адресации операндов наиболее наглядно можно рассмотреть на примере команд пересылок.

 

Примеры приведены в виде листингов, где первое поле – адрес по которому команда находится в памяти программ, второе поле – команда, переведенная в машинные коды, третье поле – мнемокод команды, четвертое поле – операнды. В первом и втором поле значения представлены в шестнадцатеричной форме. В начале и конце примеров добавлены команды NOP – «пустая операция» для большей наглядности размещения машинных кодов в памяти программ.

 

Пример №1

00

NOP

       

0000

A,#3EH

;Пример

1.1

 

0001

743E

MOV

 

0003

7464

MOV

A,#01100100B

;Пример

1.2

 

0005

00

NOP

       

 

2

 

  • примере 1.1 значение 3EH пересылается в аккумулятор A. В результате выполнения команды в аккумуляторе будет значение 3E. В машинном коде данная команда представлена двумя байтами: первый – код команды (74), второй – непосредственно значение (3Е), пересылаемое в аккумулятор. В памяти программ данная команда находится в ячейках с адресом

 

0001 и 0002.

  • примере 1.2 такая же команда, поэтому в машинном коде код команды имеет тоже значение (74), а непосредственное значение загружаемое в аккумулятор другое (64). Занимает также два байта и расположена в ячейках памяти программ с адресом 0003 и 0004.

 

Этот пример иллюстрирует – второй операнд указан в виде непосредственной адресации (т.е. задано непосредственное значение) и находится в памяти программ вторым байтом команды.

 

Пример №2

00

NOP

       

0000

A,49H

;Пример

2.1

 

0001

E549

MOV

 

0003

E52E

MOV

A,2EH

;Пример

2.2

 

0005

00

NOP

       

    • примере 2.1 значение из ячейки памяти данных с адресом 49 пересылается в аккумулятор

 

  1. В результате выполнения команды в аккумуляторе будет значение, которое находится в ячейке памяти данных, адрес которой 49. В машинном коде данная команда представлена двумя байтами: первый – код команды (E5), второй – адрес ячейки памяти (49), из которой данные пересылаются в аккумулятор. В памяти программ данная команда находится в ячейках с адресом 0001 и 0002.

 

    • примере 2.2 значение из ячейки памяти данных с адресом 2E пересылается в аккумулятор

 

  1. В результате выполнения команды в аккумуляторе будет значение, которое находится в ячейке памяти данных, адрес которой 2E. В машинном коде данная команда представлена двумя байтами: первый – код команды (E5), второй – адрес ячейки памяти (2E), из которой данные пересылаются в аккумулятор. В памяти программ данная команда находится в ячейках с адресом 0003 и 0004.

 

Этот пример иллюстрирует – второй операнд указан в виде прямой адресации (т.е. указан прямой адрес ячейки памяти) и находится в памяти программ вторым байтом команды.

 

Пример №3

00

NOP

     

0000

A,R0

;Пример 3.1

 

0001

E8

MOV

 

0002

E9

MOV

A,R1

;Пример 3.2

 

0003

EF

MOV

A,R7

;Пример 3.3

 

0004

00

NOP

     

В примере 3.1 значение из регистра R0 пересылается в аккумулятор A. В результате выполнения команды в аккумуляторе будет значение, которое находится в регистре R0. В примере 3.2 значение из регистра R1 пересылается в аккумулятор A. В результате выполнения команды в аккумуляторе будет значение, которое находится в регистре R1. В примере 3.3 значение из регистра R7 пересылается в аккумулятор A. В результате выполнения команды в аккумуляторе будет значение, которое находится в регистре R7.

 

Во всех примерах (примеры 3.1, 3.2, 3.3) в машинном коде данная команда представлена одним байтом. В двоичном виде машинные коды примеров 3.1, 3.2, 3.3 будут иметь вид:

1110 1000

для примера 3.1

1110 1001

для примера 3.2

1110 1111

для примера 3.3


Старшие пять бит являются кодом команды, а младшие три – адресом (номером регистра). Этот пример иллюстрирует – второй операнд указан в виде регистровой адресации (т.е.

 

адрес источника информации задан неявно) и находится в памяти программ непосредственно в коде команды. Этот способ адресации позволяет получить более короткую команду и как правило выполняющуюся за меньшее время, что эффективно сказывается как на объеме программного обеспечения, так и на времени выполнения программы.

 

3

 

Пример №4

00

NOP

         

0000

R0,#33H

;Запись в

R0 значения 33H

 

0001

7833

MOV

 

0003

7940

MOV

R1,#40H

;Запись в

R1 значения 40H

 

0005

7411

MOV

A,#11H

;Запись в

A

значения 11H

 

0007

F6

MOV

@R0,A

;Пример 4.1

R0 увел. на 1

 

0008

08

INC

R0

;Значение

в

 

0009

F6

MOV

@R0,A

;Пример 4.2

R0 увел. на 1

 

000A

08

INC

R0

;Значение

в

 

000B

F6

MOV

@R0,A

;Пример 4.3

   

000C

F7

MOV

@R1,A

;Пример 4.4

   

000D

00

NOP

         

Информация о работе Изучение системы команд в микроконтроллерах серии MCS51. Изучение способов адресации.