Программирование микропроцессора

Автор: Пользователь скрыл имя, 27 Октября 2013 в 08:45, курс лекций

Описание работы

На своем рабочем уровне МП выполняет список операций, называемый машинной программой.
Машинная программа - программа, написанная на машинном языке.
Программа - упорядоченный список команд или операторов, выполняя которые микро – ЭВМ осуществляет решение задачи.
Машинный язык - язык, непосредственно используемый МП. Программа на машинном языке не требует интерпретации.
Операторы машинного языка записываются в двоичных кодах.

Работа содержит 1 файл

programmirovanie_mikroprocessora_lekcia_g2013.doc

— 443.00 Кб (Скачать)

Под  номера   регистров  в  поле  команды  отводятся  определенные   разряды:  три  младших (В 2 – В 0)  кодируют  номер регистра – источника, содержащего  операнд,  а  три  средних (В - В 3)  -  номер регистра – приемника, в  который  засылается  результат  операции.

 

Принято   следующее  кодирование  регистров:

 

000 – регистр В                         100  - регистр Н


001 – регистр С                         101  - регистр L


010 – регистр D                         110 – ячейка  памяти


011 -  регистр Е                          111 - аккумулятор


 

Неявная  адресация

Примерами  команд  с неявной   адресацией   могут    служить   следующие   команды: STC, CMA, NOP.

STC – установить  индикатор переноса.

CMA – инвертировать содержимое  аккумулятора.

NOP -  нет операций.

При   выполнении   команд   с неявной  адресацией  не требуется  искать  данные  или  адреса в других   регистрах МП, в  памяти  или   портах УВВ.

Например, команда    STC  устанавливает   индикатор   переноса (CY)   1 без   воздействия   на   другие   регистры  или   индикаторы. Таким образом,  команда STC  относится    только  к   индикатору   переноса  и  никакому  другому  регистру  или  памяти.


Команды  с  неявной   адресацией  занимают  1 байт  памяти.

 

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

Код   операции  команды  с  непосредственной  адресацией   размещается в  первом  байте. Сразу   же  за КОП  следуют  данные, занимающие  1  или  2  байт. Эти  данные   берутся   не  из   памяти.  Их  предоставляет    программист  при  записи   команды.  Следовательно,  при   использовании данного способа адресации не  требуется   указание  адреса  памяти, необходим  только   код  операции,  после  которого   записываются  данные.  Таким  образом, операнд  следует  в    команде  непосредственно  за КОП. Рассмотрим   пример   этого   типа   команд. Команда  загрузить  данные   в SP -  это   трехбайтовая   команда.

2000

КОП  31 Н

2001

0111  0000

2002

000   0010




   младший  байт       загрузить  SP

 

000 0010

 

01110000





 


старший байт

     после  операции

 

В рассматриваемом  случае  2 байт данных  берутся  в памяти  программы  и помещаются  в   указатель  стека. Младший   байт  01110000  загружен  первым, затем старший   байт  000 0010.

Операции,  задаваемые   первым   байтом   команды   (кодом  операции), МП  выполняет  над   данными, представленными  её  вторым  байтом.

 

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

 

Команды    с  прямой   адресацией  имеют   длину,  равную  2  или 3  байт. Первый  байт  предназначен  для  КОП, второй  и третий -  для   адреса.

Адрес   указывает   область  памяти, в  которой    находятся  подлежащие  обработке  данные. Совместное   использование   2 и 3  байтов  команды позволяет адресоваться  к  любой  из  65536  областей   памяти.

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

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

Примером   использования  такой   адресации   может  служить   команда  записи  содержимого   аккумулятора   в память    по   адресу  000ЕН.  Этот   адрес    занимает  второй   и третий   байты   команды. Байты   команды  показаны  на рисунке.

 

КОП  М               А

                0ЕН

                00Н




 

2 – й  байт

3 – й  байт

 

 

Косвенная    адресация

Этот    тип   адресации    реализуется  командами    длиной  в  один  байт. Помимо   кода  операции   в такой   команде   указывается   номер  регистра, содержимое  которого -  адрес местоположения  данных  в  памяти.

Указанная адресация  называется  косвенной.  При  косвенной  адресации  соответствующая команда указывает, в какой регистровой паре размещается              адрес местоположения  данных  в памяти.

      Рассмотрим  пример:  загрузить в аккумулятор   данные из ячейки  памяти, адрес  которой находится  в  регистровой   паре  НL. Обратимся к следующему  рисунку.

 

До  операции                                                                                После   операции              

 

Память   данных                             передать                                     аккумулятор                                                       


2080H

11110000





         


 



Адрес

  Пара  НL

 

На рисунке  содержимое  памяти   по  адресу 2080Н загружается  в аккумулятор. Адрес   ячейки  памяти  2080Н указан  содержимым  пары НL, которая  здесь  играет  роль  адресного  регистра.

 

 

 Команды  передачи данных

 

Команды общего назначения

Команды рассматриваемой группы выполняют передачу данных из регистра в регистр, размещение данных в памяти, размещение извлечённых из памяти данных в УВВ. В результате команд передачи данных никакие индикаторы не изменяются (биты регистра состояния). Некоторые характерные команды передачи данных приведены в следующей таблице.

 

Операция

Адресация

Мнемоника

КОП

Байты

Формат команд

Символика

Передать А в r

Регистровая

MOV r, A

…..

1

КОП

Передать r в А

Регистровая

MOV A, r

…..

1

КОП

Передать HL в PC

Регистровая

PCHL

E9

1

КОП

Передать HL в SP

Регистровая

SPHL

F9

1

КОП

Загрузить А данными

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

MVI A

3E

2

КОП данные

Загрузить LOC(HL) в А

Косвенная

MOV A,M

7E

1

КОП

 

Загрузить HL данными

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

LXI H

21

3

КОП

Мл.байт

Ст. байт

Загрузить SP данными

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

LXI P

31

3

КОП

Мл. байт

Ст. байт

Загрузить HL из LOC

Прямая

LHLD

2A

3

КОП

Мл. адрес

Ст. адрес

Загрузить А из LOC

Прямая

LDA

3A

3

КОП

Мл. адрес

Ст. адрес

 

Поместить А в LOC

Прямая

STA

32

3

КОП

Мл. адрес

Ст. адрес

 

Поместить HL в LOC

Прямая

SHLD

22

3

КОП

Мл. адрес

Ст. адрес

Поместить А в LOC (HL)

Косвенная

MOV M,A

77

1

КОП

 

Ввести в А из порта

Прямая

IN

DB

2

КОП

Адр. порта

 

Вывести А в порт

Прямая

OUT

D3

2

КОП

Адр. порта

 

Установить индикатор переноса

Неявная

STC

37

1

КОП

 


LOC от LOCATION

 

Команды работы со стеком

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

Операция

Адресация

Мнемоника

КОП

Байт

Формат команды

Символика

Поместить в стек А и индикаторы

Косвенная

PUSH  PSW

F5

1

КОП

Поместить в стек HL

Косвенная

PUSH  H

E5

1

КОП

Извлечь из стека  А и индикаторы

Косвенная

POP  PSW

F1

1

КОП

Извлечь из стека HL

Косвенная

POP  H

E1

1

КОП


 

Команды PUSH и POP противоположны по своему действию и используются всегда совместно. Между этими командами располагаются другие команды программы, которые меняют содержимое регистров МП.

 

 

 

5. Арифметические  команды

Команды арифметических действий устанавливают все индикаторы. Операции вычитания проводятся с использованием дополнительного кода.

 

 

 

Команды двоичной арифметики

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

 

Операция

Адресация

Мнемоника

КОП

Байты

Формат команд

Символика

Сложить А с данными

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

ADI

C6

2

КОП 

данные

Сложить r с А

Регистровая

ADD R

…..

1

КОП

Сложить LOC (HL) с A

Косвенная

ADD M

86

1

КОП

 

Вычесть данные из А

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

SUI

D6

2

КОП 

данные

 

Вычесть r из А

Регистровая

SUB R

…..

1

КОП

Вычесть LOC (HL) из А

Косвенная

SUB M

96

1

КОП

 


Стандартный МП имеет  для реализации арифметики больших  чисел команды сложения с переносом и вычитания с заемом. Основные сведения об указанных командах приведены в следующей таблице.

 

Операция

Адресация

Мнемоника

КОП

Байты

Формат команд

Символика

Сложить А с данными и переносом

 

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

 

ACI

 

CE

 

2

КОП

данные

 

Сложить A c r и переносом

Регистровая

ADC r

…..

1

КОП

 

Сложить память LOC (HL) c A и переносом

 

Косвенная

 

ADC M

 

8E

 

1

 

КОП

 

Вычесть с заемом данные из А

 

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

 

SBI

 

DE

 

2

 

КОП

данные

 

Вычесть с заемом r из А

 

Регистровая

 

SBB r

 

…..

 

1

 

КОП

 

Вычесть с заемом содержимое памяти LOC (HL) из A

 

Косвенная

 

SBB M

 

9E

 

1

 

КОП


 

Ниже  рассматриваются  команды положительного и отрицательного приращений:

INR  r  - содержимое регистра увеличивается на единицу,    .

INR  M - содержимое памяти, адрес которой находится в паре HL, увеличивается на единицу,  .

DCR r  - содержимое регистра уменьшается на единицу,   .

Информация о работе Программирование микропроцессора