Файл: Основные правила составления программ на ассемблере.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.12.2023

Просмотров: 32

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

http://affon.narod.ru/Posobie.htm


ВВЕДЕНИЕ................................................................................................................................... 4


1.ОСНОВНЫЕ ПРАВИЛА СОСТАВЛЕНИЯ ПРОГРАММ НА АССЕМБЛЕРЕ........ 5

1.1. Коды команд....................................................................................................................... 5

1.2. Программная модель микропроцессорной системы....................................................... 6

1.3. Команды микропроцессора КР580ВМ80......................................................................... 9

2. КРОСС-СРЕДСТВА ОТЛАДКИ.......................................................................................... 13

2.1. Формат ассемблерной строки......................................................................................... 13

2.2.  Директивы Ассемблера................................................................................................... 14

2.2. Режим ассемблирования.................................................................................................. 16

2.4. Режим симуляции прикладной программы................................................................... 16

3. УЧЕБНЫЙ МИКРОПРОЦЕССОРНЫЙ КОМПЛЕКТ (УМК).................................... 19

4. ЛАБОРАТОРНЫЕ РАБОТЫ............................................................................................... 22

4.1. Изучение правил составления ассемблерных программ и их отладки с помощью кросс-средств (Л.Р.1)................................................................................................................................................... 22

4.2. Изучение УМК и правил составления простых программ (Л.Р.2).............................. 23

ПРИЛОЖЕНИЕ 1. ПРОГРАММА ПЕРЕМНОЖЕНИЯ ДВУХ ОДНОБАЙТОВЫХ ЧИСЕЛ БЕЗ ЗНАКА....................................................................................................................................................... 32

ПРИЛОЖЕНИЕ 2.  СИСТЕМА КОМАНД МИКРОПРОЦЕССОРА КР580ВМ80......... 34


ВВЕДЕНИЕ

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

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

   Язык Ассемблера относится к машинно-ориетированным языкам низкого уровня. Каждой команде языка Ассемблера соответствует, как правило, машинная команда. Каждый тип МП имеет свою систему команд и, следовательно, свой язык Ассемблера. Команды, адреса и данные записываются в виде буквенно-цифровых символов. Мнемонические обозначения команд обычно легко ассоциируются с реально выполняемыми действиями (в англоязычном написании). Практика показывает, что адаптация к языку Ассемблера происходит быстро. После составления нескольких простых программ мнемонические обозначения наиболее употребительных команд запоминаются. Написанная на Ассемблере программа переводится на машинный язык с помощью транслирующей программы, называемой также Ассемблер. При этом проводится проверка синтаксиса языка с указанием ошибок, которые необходимо исправить. Программирование на Ассемблере позволяет создавать максимально эффективные с точки зрения быстродействия и потребного объема памяти программы.

   Существенное повышение производительности труда при проектировании прикладных программ дает использование языков высокого уровня, специально приспособленных для программирования МП. Являясь машинно-независимыми, они позволяют весь процесс получения программы в машинных кодах свести к трансляции (переводу) с одного представления в другое. С помощью специальной компилирующей программы  производится трансляция с языка высокого уровня  на язык Ассемблера и далее с помощью Ассемблера - в машинные коды. Каждому оператору языка высокого уровня соответствует 5 - 10 и более команд Ассемблера, что, очевидно, облегчает программирование. Поскольку трансляторы создаются для широкого круга программ, то, естественно, осуществляемый ими перевод не позволяет достичь той же эффективности, как при программировании на Ассемблере.  Более того, окончательная отладка программы ведется обычно на  Ассемблере. Из языков высокого уровня  последнее время широко используется язык СИ.

Теоретические основы использования микропроцессорных устройств излагаются в курсе «Цифровые устройства и микропроцессоры». Практические навыки составления программ на Ассемблере отрабатываются студентами в процессе практических занятий и лабораторных работ.   Лабораторные работы предусматривают создание программ на языке Ассемблера с последующей их отладкой.



Лабораторный практикум на кафедре РПУ организован в настоящее время в двух вариантах либо на базе «Учебных микропроцессорных комплектов» (УМК), либо программных средств отладки в дисплейном классе кафедры.

Целью данного учебного пособия является методическое обеспечение этих двух вариантов выполнения лабораторных работ.

 

1.ОСНОВНЫЕ ПРАВИЛА СОСТАВЛЕНИЯ ПРОГРАММ НА АССЕМБЛЕРЕ

 

1.1. Коды команд

 

Микропроцессор работает только с двоичными кодами. Среди совокупности этих кодов имеется определенная группа кодов, каждый из которых может «заставить» микропроцессор выполнить определенные действия (операции). Такой код часто называется кодом команды и, как правило, определяет одну команду из системы команд микропроцессора. Код любой команды представляется в запоминающем устройстве двоичным восьмиразрядным числом (байтом). Всего с помощью байта можно формировать 28 = 256 различных кодо­вых комбинаций. Почти столько же команд (244) имеет микропроцессор КР580ВМ80.  Естественно, что запомнить  244  кода довольно трудно, и поэтому каждому коду ставится в соответствие мнемоническое название (мнемоника) команды, которое является сокращением от английских слов, описывающих ее действие. Мнемонический код команд позволяет легче запомнить их функции и значительно упрощает написание программ. Такой язык написания программ называется Ассемблером. После того, как программа написана на Ассемблере, ее необходимо снова перевести на язык, понятный микро­процессору, т. е. перевести в последовательность двоичных восьмиразрядных чисел. Перевод в последовательность двоичных цифр может происходить автоматически с помощью специальных про­грамм-трансляторов (такие программы носят название «кросс-ассемблер» или «ассемблер») или вручную.

Для ручной трансляции можно использовать табл.1, в которой приведены все команды микропроцессора КР580ВМ80. С помощью этой таблицы можно легко и быстро сопоставить мнемонику команды с ее кодом . Код  каждой команды приведен здесь в верхней горизонтальной строке (младшие раз­ряды) и в крайнем левом столбце (старшие разряды) в шестнадцатеричной системе счисления. Например, команда STAX D имеет код 12Н, команда JZ ADR — код  СА.

 

Таблица 1.

 

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

 

0

NОР

 

 

 

MOV

B,B

MOV

D,B

MOV

H,B

MOV

M,B

ADD

B

SUB

B

ANA

B

DRA

B

RNZ

RNC

RPO

RP

0

1

LXI

B

LXI

D

LXI

H

LXI

SP

MOV

B,C

MOV

D,C

MOV

H,C

MOV

M,C

ADD

C

SUB

C

ANA

C

DRA

C

POP

B

POP

D

POP

H

POP

RSW

1

2

STAX

B

STAX

D

SHLD

STA

MOV

B,D

MOV

D,D

MOV

H,D

MOV

M,D

ADD

D

SUB

D

ANA

D

DRA

D

JNZ

JNC

JPO

JP

2

3

INX

B

INX

D

INX

H

INX

SP

MOV

B,E

MOV

D,E

MOV

H,E

MOV

M,E

ADD

E

SUB

E

ANA

E

DRA

E

JMP

OUT

XTHL

D1

3

4

INR

B

INR

D

INR

H

INR

М

MOV

B,H

MOV

D,H

MOV

H,H

MOV

M,H

ADD

H

SUB

H

ANA

H

DRA

H

CNZ

CNC

CPO

CP

4

5

DCR

B

DCR

D

DCR

H

DCR

М

MOV

B,L

MOV

D,L

MOV

H,L

MOV

M,L

ADD

L

SUB

L

ANA

L

DRA

L

PUSH

B

PUSH

D

PUSH

H

PUSH

PSW

5

6

MVI

B

MVI

D

MVI

H

MVI

М

MOV

B,M

MOV

D,M

MOV

H,M

HTL

ADD

M

SUB

M

ANA

M

DRA

M

ADI

SUI

ANI

ORI

6

7

RLC

RAL

DAA

STC

MOV

B,A

MOV

D,A

MOV

H,A

MOV

M,A

ADD

A

SUB

A

ANA

A

DRA

A

RST

0

RST

16

RST

32

RST

48

7

8

 

 

 

 

MOV

C,B

MOV

E,B

MOV

L,B

MOV

A,B

ADC

B

SBB

B

XRA

B

CMP

B

RZ

RC

RPE

RM

8

9

DAD

B

DAD

D

DAD

H

DAD

SP

MOV

C,C

MOV

E,C

MOV

L,C

MOV

A,C

ADC

C

SBB

C

XRA

C

CMP

C

RET

 

PCHL

SPHL

9

A

LDAX

B

LDAX

D

LHLD

LDA

MOV

C,D

MOV

E,D

MOV

L,D

MOV

A,D

ADC

D

SBB

D

XRA

D

CMP

D

JZ

JC

JPE

JM

A

B

DCX

B

DCX

D

DCX

H

DCX

SP

MOV

C,E

MOV

E,E

MOV

L,E

MOV

A,E

ADC

E

SBB

E

XRA

E

CMP

E

 

IN

XCHG

EI

B

C

INR

C

INR

E

INR

L

INR

A

MOV

C,H

MOV

E,H

MOV

L,H

MOV

A,H

ADC

H

SBB

H

XRA

H

CMP

H

CZ

CC

CPE

CM

C

D

DCR

C

DCR

E

DCR

L

DCR

A

MOV

C,L

MOV

E,L

MOV

L,L

MOV

A,L

ADC

L

SBB

L

XRA

L

CMP

L

CALL

 

 

 

D

E

MVI

C

MVI

E

MVI

L

MVI

A

MOV

C,M

MOV

E,M

MOV

L,M

MOV

A,M

ADC

M

SBB

M

XRA

M

CMP

M

ACI

SBI

XRI

CPI

E

F

RRC

RAR

CMA

CMC

MOV

C,A

MOV

E,A

MOV

L,A

MOV

A,A

ADC

A

SBB

A

XRA

A

CMP

A

RST

8

RST

24

RST

40

RST

56

F

 

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

 


 

 

 

1.2. Программная модель микропроцессорной системы

 

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

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

Программная модель системы, построенной на базе микропро­цессора серии КР580, состоит из следующих элементов:

программно-доступных регистров и триггеров разрешения прерывания;

программно-доступных восьмиразрядных ячеек памяти;

программно-доступных восьмиразрядных регистров.

Программно - доступные регистры микропроцессора – это ре­гистры общего назначения, регистр указателя стека, регистр признаков и регистр счетчика команд. Разряды регистров нуме­руются справа налево целыми числами, начиная с нуля.

Регистр общего назначения (РОН) — это один из шести восьми­разрядных регистров микропроцессора, обозначенных буквами  В, С, D, Е, Н, L, или аккумулятор, обозначенный буквой А. Ре­гистры В и С, D и Е, Н и L в некоторых командах рассматри­ваются как шестнадцатиразрядные регистры, называемые реги­стровыми парами. Регистры В, D и Н образуют старшие восемь разрядов регистровых пар, а регистры С, Е и L – младшие.

Регистр указатель стека (УC) — это шестнадцатиразрядный регистр, который содержит адрес вершины стека. Стек – это динамическая последовательная структура данных в ОЗУ, орга­низованная таким образом, что очередная запись данных всегда осуществляется в вершину (на­чало) стека. Максимальный размер стека равен адресуемой емкости памяти. В вершину сте­ка могут записываться только шестнадцатибитные данные. При записи данных в стек содержи­мое регистра указателя стека уменьшается на 2, а при считы­вании — увеличивается на 2.

Регистр признаков (F) — это восьмиразрядный регистр, содер­жащий признаки результата выполнения команды (рис. 1).

 

    7       6      5      4      3      2      1      0

 

S

Z

 

O

 

V

 

O

 

P

 

1

 

C

 

 

Распределение признаков по разрядам

 

 

S– признак знака;

Z – признак нуля;

V – признак дополнительного переноса;

P – признак четности;

C – признак переноса.


 

Рис.1. Регистр признаков

 

Признаки устанавливаются следу­ющим образом:

- признак S — единица, если седьмой разряд результата равен единице, в противном случае — ноль;

-признак нуля Z — единица, если во всех разрядах результата ноли, в противном случае — ноль;

- признак дополнительного переноса V — единица при переносе из третьего разряда или при заеме в третий разряд результата, в противном случае — ноль;

- признак четности Р — единица, если результат в двоичном коде содержит четное количество единиц, в противном случае — ноль;

- признак переноса С — единица при переносе из седьмого раз­ряда или при заеме в седьмой разряд результата, в противном случае — ноль.

Аккумулятор и регистр признаков образуют слово состоянияпроцессора, обозначенное буквами PSW. Аккумулятору соответ­ствуют восемь старших разрядов, а регистру признаков — младшие.

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

Триггер разрешения прерывания используется для управле­ния прерываниями микропроцессора. Если триггер установлен в единицу, то прерывание разрешается, если триггер установлен в ноль, то прерывание запрещается.

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

Программно-доступные восьмиразрядные регистры использу­ются для ввода и вывода. Максимальное число регистров для ввода данных составляет 256, для вывода данных — столько же.

Команды микропроцессора ис­пользуют только те элементы данных, обработка которых осуществляется непосредственно микропроцессором, т. е. восьми- и шестнадцатибитовые. Восьмибитовые данные — это восемь би­т (один байт), которые хранятся в РОН или ячейке памяти и обрабатываются микропроцессором как одно целое.

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