Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практическая работа №13.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
81.14 Кб
Скачать

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

Дисциплина «Архитектура ЭВМ» специальности 230115

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

Постановка задачи.

  1. Изучить систему команд конкретного процессора.

  2. Изучить отличия этой системы от «общего» языка.

Цель работы. Научиться правильно и научно обоснованно подбирать к процессору средства работы с ним.

Теоретическая часть.

Assembler — язык программирования низкого уровня, представляющий собой формат записи машинных команд, удобный для восприятия человеком.

Команды языка ассемблера один в один соответствуют командам процессора и, фактически, представляют собой удобную символьную форму записи (мнемокод) команд и их аргументов. Также язык ассемблера обеспечивает базовые программные абстракции: связывание частей программы и данных через метки с символьными именами и директивы.

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

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

Достоинства и недостатки

минимальное количество избыточного кода (использование меньшего количества команд и обращений в память). Как следствие — большая скорость и меньший размер программы

большие объемы кода, большое число дополнительных мелких задач

плохая читабельность кода, трудность поддержки (отладка, добавление возможностей)

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

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

непосредственный доступ к аппаратуре: портам ввода-вывода, особым регистрам процессора

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

максимальная «подгонка» для нужной платформы (использование специальных инструкций, технических особенностей «железа»)

непереносимость на другие платформы (кроме двоично совместимых).

Синтаксис

Общий формат записи инструкций:

`[метка:] опкод [операнды] [;комментарий]`

Учебный микропроцессор организует обработку цифровой информации в соответствии с командами человека-пользователя, заранее занесенными в память микропроцессорной системы и составляющими программу.

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

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

  1. мнемоника команды;

  2. код операции;

  3. формат команды;

  4. назначение команды;

  5. конкретное содержание;

  6. методы адресации;

  7. влияние команды на регистр признаков;

  8. число и типы машинных циклов;

  9. минимальное число машинных тактов.

Система команд учебного микропроцессора устанавливает следующее назначение команд:

  1. пересылка кодов;

  2. арифметико-логическая обработка кодов;

  3. передача управления;

  4. управление микропроцессором.

Команды одинакового назначения отличаются друг от друга своим конкретным содержанием.

Конкретное содержание команды представляет собой полный перечень действий, производимых микропроцессором по ее выполнению.

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

Другие характеристики, входящие в систему команд учебного микропроцессора, будут рассмотрены особо.

Рис.1.1.Форматы команд учебного микропроцессора

 

Понятие о мнемонике команды

 

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

Программа в машинных кодах может быть легко введена в микро-ЭВМ и выполнена в ней. Однако составить такую программу человеку–программисту очень трудно. Трудности, в первую очередь, связаны с большим числом команд микропроцессора. Байтовый код операции может иметь до 28 = 25610 различных вариантов, почти каждый из которых определяет новую команду. Практически невозможно запомнить соответствие шестнадцатеричных кодов операций, форматов и конкретного содержания такого количества команд. Поэтому при программировании обычно используется буквенно–цифровая запись команд в виде так называемых мнемоник.

Мнемоника команды начинается буквенной частью, которая представляет собой сокращение, аббревиатуру полного английского названия команды, отражающего ее конкретное содержание. Так, например, используются мнемоники вида:

ADD B – сложить код из аккумулятора с кодом из регистра B;

SUB C – вычесть код из регистр C из кода, содержащегося в аккумуляторе;

CMP H – сравнить код из аккумулятора с кодом из с регистра H;

MOV D,E – переместить, переслать код из регистра E в регистр D.

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

D8 – байт данных в двухбайтовой команде;

D16 – два байта данных в трехбайтовой команде;

N – адрес порта ввода – вывода в двухбайтовой команде;

ADR – двухбайтовый адрес в трехбайтовой команде.

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

 

Методы адресации учебного микропроцессора

 

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

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

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

Под неявной адресацией понимают жесткую фиксацию регистров СОЗУ – источников операндов или приемников результата, принятую в ряде команд микропроцессора. Признаком такой адресации является отсутствие у программиста каких–либо альтернатив в выборе соответствующего источника или приемника кода. Так, например, все команды сдвига оперируют только с содержимым аккумулятора А. Во всех операциях с двумя байтовыми операндами аккумулятор является как источником одного из операндов, так и приемником результата.

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

Неявная и регистровая адресация оперируют только с регистрами микропроцессора и не позволяют обращаться к ячейкам памяти ОЗУ и ПЗУ. Для такого обращения нужен адрес соответствующей ячейки.

Косвенная адресация рассматривает в качестве адреса ячейки шестнадцатеричный двоичный код, содержащийся в какой–либо регистровой паре или указателе стека SP. Особенно часто в качестве регистра косвенной адресации в учебном микропроцессоре используется регистровая пара HL.

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

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

 

Соответствие мнемоник команд и их кодов операции Таблица 1.1

H\L

0

1

2

3

4

5

6

7

8

A

B

C

D

E

F

L/H

0

NOP

LXI B,D16

STAX B

INX B

INR B

DCR B

MVI B,D8

RLC

-

LDAX B

DCX B

INR C

DCR C

MVI C,D8

RRC

0

1

-

LXI D,D16

STAX D

INX D

INR D

DCR D

MVI D,D8

RAL

-

LDAX D

DCX D

INR E

DCR E

MVI E,D8

RAR

1

2

-

LXI H,D16

SHLD ADR

INX H

INR H

DCR H

MVI H,D8

DAA

-

LHLD ADR

DCX H

INR L

DCR L

MVI L,D8

CMA

2

3

-

LXI SP,D16

STA ADR

INX SP

INR M

DCR M

MVI M,D8

STC

-

LDA ADR

DCX SP

INR A

DCR A

MVI A,D8

CMC

3

4

MOV B,B

MOV B,C

MOV B,D

MOV B,E

MOV B,H

MOV B,L

MOV B,M

MOV B,A

MOV C,B

MOV C,D

MOV C,E

MOV C,H

MOV C,L

MOV C,M

MOV C,A

4

5

MOV D,B

MOV D,C

MOV D,D

MOV D,E

MOV D,H

MOV D,L

MOV D,M

MOV D,A

MOV E,B

MOV E,D

MOV E,E

MOV E,H

MOV E,L

MOV E,M

MOV E,A

5

6

MOV H,B

MOV H,C

MOV H,D

MOV H,E

MOV H,H

MOV H,L

MOV H,M

MOV H,A

MOV L,B

MOV L,D

MOV L,E

MOV L,H

MOV L,L

MOV L,M

MOV L,A

6

7

MOV M,B

MOV M,C

MOV M,D

MOV M,E

MOV M,H

MOV M,L

HLT

MOV M,A

MOV A,B

MOV A,D

MOV A,E

MOV A,H

MOV A,L

MOV A,M

MOV A,A

7

8

ADD B

ADD C

ADD D

ADD E

ADD H

ADD L

ADD M

ADD A

ADC B

ADC D

ADC E

ADC H

ADC L

ADC M

ADC A

8

9

SUB B

SUB C

SUB D

SUB E

SUB H

SUB L

SUB M

SUB A

SBB B

SBB D

SBB E

SBB H

SBB L

SBB M

SBB A

9

A

ANA B

ANA C

ANA D

ANA E

ANA H

ANA L

ANA M

ANA A

XRA B

XRA D

XRA E

XRA H

XRA L

XRA M

XRA A

A

B

ORA B

ORA C

ORA D

ORA E

ORA H

ORA L

ORA M

ORA A

CMP B

CMP D

CMP E

CMP H

CMP L

CMP M

CMP A

B

C

RNZ

POP B

JNZ ADR

JMP ADR

CNZ ADR

PUSH B

ADI D8

RST 0

RZ

JZ ADR

-

CZ ADR

CALL ADR

ACI D8

RST 1

C

D

RNC

POP D

JNC ADR

OUT N

CNC ADR

PUSH D

SUI D8

RST 2

RC

JC ADR

IN N

CC ADR

-

SBI D8

RST 3

D

E

RPO

POP H

JPO ADR

XTHL

CPO ADR

PUSH H

ANI D8

RST 4

RPE

JPE ADR

XCHG

CPE ADR

-

XRI D8

RST 5

E

F

RP

POP PSW

JP ADR

DI

CP ADR

PUSH PSW

ORI D8

RST 6

RM

JM ADR

EI

CM ADR

-

CPI D8

RST 7

F

H/L

0

1

2

3

4

5

6

7

8

A

B

C

D

E

F

L\H