Способы адресации команд микропроцессора

Система команд процессора и способы адресации

Разнообразие типов данных, форм их представления и действий, которые не­обходимы для обработки информации и управления ходом вычислений, по­рождает необходимость использования различных команд – набора команд. Каждый процессор имеет собственный вполне определенный набор команд, называемый системой команд процессора. Система команд должна обладать двумя свойствами – функциональной полнотой и эффективностью /6/.

Функциональная полнота – это достаточность системы команд для описания любого алгоритма. Требование функциональной полноты не является слиш­ком жестким. Доказано, что свойством функциональной полноты обладает система, включающая всего три команды (система Поста): присвоение 0, присвоение 1, проверка на 0. Однако составление программ в такой системе команд крайне неэффективно.

Эффективность системы команд – степень соответствия системы команд назначению ВМ, т. е. классу алгоритмов, для выполнения которых предна­значается ВМ, а также требованиям к производительности ВМ. Очевидно, что реализация развитой системы команд связана с большими затратами обо­рудования и, следовательно, с высокой стоимостью процессора. В то же вре­мя ограниченный набор команд приводит к снижению производительности и повышенным требованиям к памяти для размещения программы. Даже про­стые и дешевые современные микропроцессоры поддерживают систему ко­манд, содержащую несколько десятков (а с модификациями – сотен) ко­манд.

Система команд процессора характеризуется тремя аспектами: форматами, способами адресации и типом выполняемых операций.

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

Команды, как и любая информация в ВМ, кодируются двоичными словами, которые должны содержать в себе следующие виды информации:

· тип операции, которую следует реализовать в данной команде (КОП);

· место в памяти, откуда следует взять первый операнд (А 1);

· место в памяти, откуда следует взять второй операнд (А2);

· место в памяти, куда следует поместить результат (АЗ).

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

Команды трехадресного формата занимают много места в памяти, в то же время далеко не всегда поля адресов используются в командах эффективно. Действительно, наряду с двухместными операциями (сложение, деление, конъюнкция и др.) встречаются и одноместные (инверсия, сдвиг, инкремент и др.), для которых третий адрес не нужен. При выполнении цепочки вычис­лений часто результат предыдущей операции используется в качестве опе­ранда для следующей. Более того, нередко встречаются команды, для кото­рых операнды не определены (СТОП) или подразумеваются самим кодом операций (DАА, десятичная коррекция аккумулятора).


Поэтому в системах команд реальных ВМ трехадресные команды встреча­ются редко. Чаще используются двухадресные команды (рис.2.7-б), в этом случае в бинарных операциях результат помещается на место одного из опе­рандов.

Для реализации одноадресных форматов (рис.2.7-в)в процессоре преду­сматривают специальную ячейку — аккумулятор. Первый операнд и резуль­тат всегда размещаются в аккумуляторе, а второй операнд адресуется по­лем А.

Реальная система команд обычно имеет команды нескольких форматов, при­чем тип формата определяется в поле КОП (рис.2.7-г).

Способ адресации определяет, каким образом следует использовать инфор­мацию, размещенную в поле адреса команды.

Существует пять основных способов адресации операндов в командах.

· Прямая – в этом случае в адресном поле располагается адрес операнда. Разновидность – прямая регистровая адресация, адресующая не ячейку памяти, а РОН. Поле адреса регистра имеет в команде значительно мень­шую длину, чем поле адреса памяти.

· Непосредственная – в поле адреса команды располагается не адрес опе­ранда, а сам операнд. Такой способ удобно использовать в командах с константами.

· Косвенная – в поле адреса команды располагается адрес ячейки памяти, в которой хранится адрес операнда («адрес адреса»). Такой способ позволяет оперировать адресами как данными, что облегчает организацию циклов, обработку массивов данных и др. Его основной недостаток – потеря вре­мени на двойное обращение к памяти – сначала за адресом, потом – за операндом. Разновидность – косвенно-регистровая адресация, при кото­рой в поле команды размещается адрес РОН, хранящего адрес операнда. Этот способ, помимо преимущества обычной косвенной адресации, позво­ляет обращаться к большой памяти с помощью коротких команд и не тре­бует двойного обращения к памяти (обращение к регистру занимает го­раздо меньше времени, чем к памяти).

· Относительная – адрес формируется как сумма двух слагаемых: базы, хранящейся в специальном регистре или в одном из РОН, и смещения, из­влекаемого из поля адреса команды. Этот способ позволяет сократить длину команды (смещение может быть укороченным, правда в этом слу­чае не вся память доступна в команде) и/или перемещать адресуемые массивы информации по памяти (изменяя базу). Разновидности – ин­дексная и базово-индексная адресации. Индексная адресация предполага­ет наличие индексного регистра вместо базового. При каждом обращении содержимое индексного регистра автоматически модифицируется (обычно увеличивается или уменьшается на 1). Базово-индексная адресация фор­мирует адрес операнда как сумму трех слагаемых: базы, индекса и сме­щения.

· Безадресная – поле адреса в команде отсутствует, а адрес операнда или не имеет смысла для данной команды, или подразумевается по умолчанию (рис.2.7-г). Часто безадресные команды подразумевают действия над содержимым аккумулятора. Характерно, что безадресные команды нельзя применить к другим регистрам или ячейкам памяти.

Одной из разновидностей безадресного обращения является использование т. н. магазинной памяти или стека. Имеется фиксированная ячейка, называемая верхушкой стека. При чтении слово извлекается из верхушки, а все остальное содержимое «поднимается вверх» так, что в верхушке оказывается следующее по порядку слово. Одно слово нельзя прочитать из стека дважды. При записи новое слово помещается в верхушку стека, а все остальное содержимое «опус­кается вниз» на одну позицию. Таким образом, слово, помещенное в стек первым, будет прочитано последним. Говорят, что стек поддерживает дисциплину LIFO – Last In First Out (последний пришел – первый ушел). Реже используется безадресная память типа очередь с дисциплиной FIFO – First In First Out (первый пришел – первый ушел).

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

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

· Пересылки и загрузки – обеспечивают передачу информации между про­цессором и памятью или между различными уровнями памяти (Кэш память ОЗУ). Разновидность – загрузка регистров и ячеек констан­тами.

· Ввода/вывода – обеспечивают передачу информации между процессором и внешними устройствами. По структуре они очень похожи на команды предыдущего класса. В некоторых ЭВМ принципиально отсутствует раз­личие между ячейками памяти и регистрами внешних устройств (единое адресное пространство) и класс команд ввода/вывода не выделяется, все обмены осуществляются в рамках команд пересылки и загрузки.

· Передачи управления – команды, которые изменяют естественный поря­док выполнения команд программы. Эти команды меняют содер­жимое программного счетчика, обеспечивая переходы по программе. Существуют команды безусловной и условной передачи управления. В последнем случае передача управления происходит, если выполняется заданное в коде команды условие, иначе выполняется следующая по порядку команда. В качестве условий обычно используются признаки результата предыду­щей операции, которые хранятся в специальном регистре признаков (флажков). Различают три разно­видности команд передачи управления: переходы, вызовы и возвраты из подпрограмм.

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

Читайте также:  Способы восстановления после трудового дня реферат

Команда вызова подпрограммы работает подобно команде безусловного перехода, но старое значение программного счетчика предварительно со­храняется в специальном регистре или в стеке. Команда возврата передает содержимое верхушки стека или специального регистра в программный счетчик. Команды вызова и возврата работают «в паре». Подпрограмма, вызываемая командой вызова, должна заканчиваться командой возврата, что обеспечивает по окончании работы подпрограммы передачу управле­ния в точку вызова. Хранение адресов возврата в стеке обеспечивает воз­можность реализации вложенных подпрограмм.

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

Контрольные вопросы и задания

1.Из каких основных устройств состоит процессор?

2.Какие функции выполняет устройство управления процессора?

3.Проведите сравнительный анализ устройств управления с аппаратной и программируемой логикой.

4.Какие из устройств управления обеспечивают большее быстродействие процессоров?

5.Какие из устройств управления обеспечивают реализацию большего набора команд процессора?

6.Какие функции выполняет арифметико-логическое устройство процессора?

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

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

9.Какие форматы команд применяется в микропроцессорах?

10.Назовите основные способы адресации.

11.Для каких целей используются системные команды микропроцессора?

12.Назовите достоинства и недостатки CISC и RISC процессоров.

Источник

Способы адресации команд микропроцессора

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Соответствие мнемоник команд и их кодов операции Таблица 2.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
Читайте также:  Способы нанесения vin номера

Эти команды предназначены для организации обмена кодами между регистрами СОЗУ, ячейками памяти, портами ввода – вывода.

Наиболее многочисленна группа команд однобайтовых пересылок. Микропроцессор, исполняя команды этой группы, осуществляет пересылку, одного байта данных. Большинство команд этой группы записывается в виде MOV R1,R.

По этой команде содержимое регистра R пересылается в регистр R1, причем содержимое регистра R при этом не меняется. В качестве регистров R1 и R в команде могут фигурировать: A – аккумулятор; B, C, D, E, H, L – регистры общего назначения; M – ячейка памяти, адрес которой содержится в регистровой паре HL. Возможности использования в командах тех или иных регистров будем далее пояснять краткой записью вида MOV R1,R,

.

Легко видеть, что команда MOV R1,R может использовать как регистровую, так и косвенную адресацию источника и приемника пересылаемого кода. Так команда MOV A,C пересылает содержимое регистра С в аккумулятор А, а команда MOV M,A – пересылает содержимое аккумулятора А в ячейку ОЗУ с адресом, который содержится в данный момент времени в регистровой паре HL.

Кроме регистровой и косвенной адресации для однобайтовых пересылок может быть использована и непосредственная адресация. Она реализуется в команде MVI R,D8,

.

По этой команде байт данных D8 помещается в один из регистров A, B, C, D, E, H, L или адресуемую косвенно ячейку памяти М.

Обмен данными между аккумулятором и ячейками памяти или портами ввода–вывода дополнительно поддерживают команды с прямой адресацией:

LDA ADR – загрузить аккумулятор из ячейки памяти с адресом ADR;

STA ADR – загрузить ячейку памяти с адресом ADR из аккумулятора;

IN N – ввести в аккумулятор байт из порта ввода с адресом N;

OUT N – вывести байт из аккумулятора в порт вывода с адресом N.

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

LXI Rp,D16 – загрузить регистровую пару Rp двухбайтовым числом D16.

.

LHLD ADR – загрузить регистровую пару HL из ячеек памяти с адресами ADR и ADR+1. При этом байт из ячейки с младшим адресом ADR будет загружен в младший регистр пары – L, а байт из ячейки со старшим адресом ADR+1 – в старший регистр пары – H.

SHLD ADR – загрузить ячейки памяти с адресами ADR и ADR+1 из регистровой пары HL. При этом байт из младшего регистра пары – L будет загружен по младшему адресу ADR, а байт из старшего регистра пары – H, будет загружен по старшему адресу ADR+1.

Большинство команд арифметико–логической обработки оперируeт байтовыми словами. Здесь имеются команды сложения, сложения с учетом переноса, вычитания, вычитания с учетом заема, поразрядных логических «И», «ИЛИ», «исключающего ИЛИ» и сравнения.

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

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

ADC R – сложить код из аккумулятора с кодом из регистра R с учетом переноса, содержащегося в бите С регистра признаков F;

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

SBB R – вычесть код из регистра R из кода, содержащегося в аккумуляторе с учетом заема, содержащегося в бите С регистра признаков F;

ANA R – выполнить операцию поразрядного логического «И» над кодами, содержащимися в аккумуляторе и регистре R;

ORA R – выполнить операцию поразрядного логического «ИЛИ» над кодами, содержащимися в аккумуляторе и регистре R;

XRA R – выполнить операцию поразрядного логического «исключающего ИЛИ» над кодами, содержащимися в аккумуляторе и регистре R;

CMP R – выполнить сравнение кодов, содержащихся в аккумуляторе и регистре R.

В этих командах

,

то есть второй операнд адресуется регистровым методом или косвенно.

Имеются варианты рассмотренных команд, имеющие двухбайтовый формат, и использующие непосредственную адресацию второго операнда. Это, соответственно, команды: ADI D8; ACI D8; SUI D8; SBI D8; ANI D8; ORI D8; XRI D8; CPI D8.

Поясним действие команд сравнения CMP R (CPI D8). Эти команды не меняют содержимого аккумулятора, но воздействуют на регистр признаков F точно также, как и команды вычитания SUB R (SUI D8).

Отметим, что команды сложения ADD R, ADC R, ADI D8, ACI D8 могут использоваться не только для двоичного, но и для двоично–десятичного сложения. В последнем случае результата сложения, находящийся в аккумуляторе, должен быть скорректирован специальной командой десятичной коррекции DAA. Эту команду можно использовать только при сложении. Специальной команды коррекции результата для двоично-десятичного вычитания учебный микропроцессор не имеет.

С двухбайтовыми словами оперирует команда двухбайтового сложения DAD Rp – сложить содержимое регистровой пары Rp с содержимым регистровой

HL и поместить результат в пару HL.

.

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

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

INR R – инкрементировать регистр R;

DCR R – декрементировать регистр R;

INX Rp – инкрементировать регистровую пару Rp;

DCX Rp – декрементировать регистровую пару Rp.

и .

Команды сдвига будут рассмотрены отдельно.

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

Широко используются команды условной передачи управления, которые можно записать обобщенной мнемоникой J — CON ADR. Эти команды передают управление по адресу перехода, если выполняется условие — CON, определяемое одним из битов регистра признаков F. В противном случае естественный порядок выполнения команд не нарушается. В мнемониках конкретных команд суффикс — CON принимает следующие значения:

При работе с подпрограммами используют команду безусловной передачи управления с возвратом CALL ADR – вызвать подпрограмму. В памяти микро-ЭВМ эта команда размещается так, как показано на рис.2.2.

Рис.2.2.Размещение в памяти микро-ЭВМ команды CALL ADR

Микропроцессор, выполняя эту команду, не только передает управление по адресу ADR, указанному в команде. Он, кроме того, запоминает в стеке адрес следующей команды . Этот адрес называют адресом возврата. После выполнения подпрограммы должен быть обеспечен возврат управления на адрес . Для обеспечения такого возврата каждая подпрограмма заканчивается специальной командой возврата RET. Эта команда извлекает из стека адрес возврата , записанный туда командой CALL ADR, и загружает его в счетчик команд PC.

Читайте также:  Волнушки белые способ приготовления

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

Имеются также команды условного вызова подпрограмм и возврата из них, имеющие обобщенные мнемоники C — CON АDR и R — CON. Вызов подпрограммы или возврат из нее осуществляется этими командами только, если выполняется условие —CON. Здесь используются такие же условия, как и в командах условной передачи управления.

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

Учебный микропроцессор позволяет организовать в ОЗУ микро–ЭВМ стековую память или просто стек. В такой памяти формируется своеобразная очередь из записанных кодов, а процедура обмена кодами с микропроцессором строится по принципу – «последний вошел – первый вышел» (LIFO).

Наглядной моделью стековой памяти является ящик с положенной в него стопкой книг (рис.2.3).

Книги здесь изображают хранимые в стеке цифровые коды. Понятно, что книга, положенная в ящик последней («последний вошел») окажется наверху стопки. Поэтому именно она будет извлечена из ящика первой (“первый вышел”).

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

Рис.2.3. Модель стековой памяти

Микропроцессор размещает (считывает) такие коды в последовательных ячейках некоторой области ОЗУ, используя косвенную адресацию с помощью регистра SP – указателя вершины стека (указателя стека). Этот указатель содержит адрес (указывает на адрес) младшего байта самого последнего, самого верхнего из записанных в стек чисел.

Структура стека, в который ранее были записаны два числа A1 и A2, представлена на рис.2.4. Будем рассматривать это состояние стека как исходное.

Рис.2.4. Исходное состояние стека

При записи в стек, например, при выполнении команды CALL ADR, число А3 записывается в две свободные ячейки ОЗУ, находящиеся выше указателя, при этом указатель передвигается на новую вершину – на адрес младшего байта только что записанного числа. Новое состояние стека после записи числа А3 изображено на рис.2.5.

При чтении из стека, например, командой RET из стека извлекается самое последнее, самое верхнее из записанных в стек чисел. При этом указатель стека передвигается на две позиции вниз – на адрес младшего байта числа, записанного в стек перед извлеченным. Следует иметь ввиду, что только что извлеченное число все еще сохраняется в своих ячейках ОЗУ до момента записи в эти ячейки. После извлечения из стека числа А3 диаграмма стека принимает вид, показанный на рис.2.6.

Рис.2.5.Состояние стека после записи числа А3

Рис.2.6.Состояние стека после чтения числа А3

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

Инициализация проводится командой непосредственной загрузки регистра SP LXI SP,D16.

Кроме рассмотренных команд вызова подпрограмм и возврата из них со стеком работают команды однобайтового формата PUSH Rp – записать в стек содержимое регистровой пары Rp и POP Rp – восстановить из стека содержимое регистровой пары Rp.

.

В эту группу входят команды однобайтового формата HLT – останов, NOP – нет операции, EI – разрешить прерывания и DI – запретить прерывания.

По команде «останов» выполнение операций заканчивается, выходы шины адреса и данных микропроцессора переводятся в высокоимпедансное состояние. Из состояния останова микропроцессор может быть выведен только внешними сигналами сброса – RESET и прерывания – INT (прерывания должны быть предварительно, до останова разрешены командой EI).

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

Команды пересылки кодов, передачи управления и управления микропроцессором не изменяют содержимого регистра признаков F. Из этого правила есть единственное исключение – команда POP PSW. Эта команда, в частности, восстанавливает из стека содержимое регистра F и поэтому оказывает воздействие на все его биты.

По влиянию на регистр признаков все команды арифметико – логической обработки можно разделить на 4 группы:

воздействуют на все признаки;

воздействуют только на признак переноса С;

воздействуют на все признаки, кроме признака переноса C;

не изменяют содержимого регистра признаков.

К первой группе относятся все команды арифметико – логической обработки двух байтовых операндов (ADD R, SUB R и т. д.), а также команда десятичной коррекции аккумулятора DAA. Следует иметь в виду, что логические команды этой группы (ANA R, ANI D8 и др.) сбрасывают бит переноса С.

Ко второй группе относятся команды сложения двухбайтовых чисел DAD Rp, команды управления битом переноса STC и CMC, а также все команды сдвига.

Команда STC устанавливает признак переноса, а CMC – инвертирует его.

В командах арифметического сдвига RAL и RAR бит переноса С участвует в процессе циклического сдвига информации в аккумуляторе на один разряд в качестве дополнительного (9-го) бита аккумулятора.

Работу этих команд иллюстрирует рис.2.7.

Рис.2.7.Работа команд арифметического сдвига

В командах циклического сдвига RLC, RRC тоже осуществляется циклический сдвиг аккумулятора на один разряд, но здесь в бите переноса С дублируется информация, переносимая из старшего бита аккумулятора в младший или наоборот. Работу этих команд иллюстрирует рис.2.8.

Рис.2.8.Работа команд циклического сдвига

К третьей группе относятся команды инкремента и декремента INR R, DCR R.

К четвертой группе относятся команды инкремента и декремента регистровых пар INX Rp, DCR Rp, а также команда инверсии аккумулятора CMA.

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

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

Каждый машинный цикл представляет собой единичный акт взаимодействия микропроцессора со внешними по отношению к нему устройствами (ОЗУ, ПЗУ, порты ввода-вывода).

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

Под машинным тактом понимают интервал времени между передними фронтами двух следующих друг за другом импульсов синхронизации CLK1, поступающих с тактового генератора. Длительность машинного такта, очевидно, равна периоду тактового сигнала, то есть

,

где fCLK — частота тактового сигнала.

Так, если fCLK = 2MГц, Ттакт=0,5 мкс.

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

Включение, принятое в микро–ЭВМ Микролаб КР580 дает соотношение

Приведем для примера численные значения МЦ и МТmin для некоторых команд учебного микропроцессора (табл.2).

Из таблицы видно, что:

время расходуется на выполнение любой команды, в том числе и холостой команды NOP;

наибольшим быстродействием обладают команды с регистровой адресацией;

несколько менее эффективно сочетание регистровой адресации с непосредственной или косвенной;

наименее эффективна прямая адресация; команды с такой адресацией выполняются в несколько раз медленнее, чем с регистровой.

Таблица 2.2 МЦ и МТmin некоторых команд учебного микропроцессора

Источник

Оцените статью
Разные способы