Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Простейшая микро-ЭВМ. Проектирование. Наладка. Использование.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
3 Мб
Скачать
☆

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

Система команд микропроцес­сора КР580ИК80А представлена 244 кодами операций, которые могут быть расклассифицированы по разным признакам. Наибо­лее существенными для ознакомления с особенностями их ис­пользования являются следующие три признака: длина коман­ды, или число занимаемых байтов, функциональный признак, или выполняемые командой операции, и способ адресации. Полный перечень команд приведен в приложении 1. В таблице приведены символическая запись (мнемокод) команды, описа­ние выполняемых ею функций, длина в байтах, обозначения изменяемых флагов и число машинных тактов, занимаемых при ее выполнении. Из 256 возможных кодов (при восьми двоичных разрядах) не используются следующие 12 кодовых комбинаций (в восьмеричной записи): 010, 020, 030, 040, 050, 060, 070, 313, 331, 335, 355 и 375. Этим и объясняется коли­чество всех команд: 244. Команды в таблице разбиты на три группы по числу занимаемых байтов: все команды делятся на однобайтовые, двухбайтовые и трехбайтовые. При этом первый байт всегда отводится под код команды, а второй и третий байты содержат либо данные, либо адрес, по которому они находятся в памяти (рис. 4.6).

Восьмеричные коды всех однобайтовых, двухбайтовых и трехбайтовых команд приведены соответственно в табл. 4.1, 4.2 и 4.3. При этом в табл. 4.1 наряду с обычными указаны обобщенные коды, т. е. коды, содержащие кроме восьмерич­ных цифр кодовые переменные S, D и А. В табл. 4.1 если код команды содержит только цифры, это означает, что существует единственная команда с соответствующим кодом. Некоторые коды кроме цифр содержат буквы: S (первые И команд), D (третья команда) и А (последняя команда). Таким кодам соответствуют множества команд. При этом каждой команде из первых 11 команд, кроме третьей, соответствует группа конкретных команд, мнемокод которых вместо символа г (регистр) содержит обозначения конкретных регистров (В, С, D, Е, Н, L), либо символ памяти (М), либо символ аккуму­лятора (А). Соответствующий конкретный восьмеричный код команды вместо символа S должен содержать одну из цифр: О, 1, 2, 3, 4, 5, 6, 7 соответственно, т. е. символу В в мнемо­коде соответствует цифра 0 в восьмеричном коде, символу С в мнемокоде — цифра 1 в восьмеричном коде и т. д,. . ., симво­лу М в мнемокоде — цифра 6 в восьмеричном коде и, наконец, символу А в мнемокоде — цифра 7 в восьмеричном коде. Для третьей команды в табл. 4.1 точно такая же аналогия соблюда­ется для пар символов гь г2 и D, S. Последняя команда табли­цы содержит символ А в мнемокоде и в восьмеричном коде. Она соответствует группе из восьми конкретных команд, в каж­дой из которых символ А принимает одно из значений: О, 1, ... ...,7.

Рис. 4.6. Форматы команд: однобайтовой (а), двухбайтовой (б), трехбай­товой (в)

Таблица 4.1

Код

Команда

Код

Команда

Код

Команда

OS4

INR

r

051

DAD

H

370

RM

OS5

DCR

r

071

DAD

SP

311

RET

1DS

MOV

r1r2

301

POP

В

007

RLC

20S

ADD

r

321

POP

D

017

RRC

21S

ADC

r

341

POP

H

027

RAL

22S

SUB

r

361

POP

PSW

037

RAR

23S

SBB

r

305

PUSH

В

353

XCHG

24S

ANA

r

325

PUSH

D

343

XTHL

25S

XRA

r

345

PUSH

H

371

SPHL

26S

ORA

r

365

PUSH

PSW

351

PCHL

27S

CMP

r

002

STAX

В

166

HLT

003

INX

в

022

STAX

D

000

NOP

023

INX

D

012

LDAX

В

363

DI

043

INX

H

032

LDAX

D

373

El

063

INX

SP

300

RNZ

047

DAA

013

OCX

В

310

RZ

057

CMA

033

OCX

D

320

RNC

067

STC

053

OCX

H

330

RC

077

CMC

073

DCX

SP

340

RPO

3A7

RST

A

011

DAD

В

350

RPE

031

DAD

D

360

RP

Таблица 4.2

Код

Команда

Код

Команда

306

ADI

<B2>

323

OUT

<B2>

316

ACI

<B2>

006

MVI

В

<B2>

326

SUI

<B2>

016

MVI

С

<B2>

336

SBI

<B2>

026

MVI

D

<B2>

346

ANI

<B2>

036

MVI

E

<B2)

356

XRI

<B2>

046

MVI

H

<B2>

366

ORI

<B2>

056

MVI

L

<B2>

376

CPI

<B2>

066

MVI

M

<B2>

333

IN

<B2>

076

MVI

A

<B2>

Таблица 4.3

Код

Команда

Код

Команда

302

JNZ

<В2><ВЗ>

344

СРО

<B2><B3>

312

JZ

<В2><ВЗ>

354

СРЕ

<B2><B3>

322

JNC

<В2><ВЗ>

364

СР

<B2><B3>

332

JC

<В2><ВЗ>

374

СМ

<B2><B3>

342

JPO

<В2><ВЗ>

315

CALL

<B2><B3>

352

JPE

<В2><ВЗ>

001

LXIB

<B2><B3>

362

JP

<В2><ВЗ>

021

LXI D

<B2><B3>

372

JM

<В2><ВЗ>

041

LXIH

<B2><B3>

303

JMP

<В2><ВЗ>

061

LXISP

<B2><B3>

304

CNZ

<В2><ВЗ>

062

STA

<B2><B3>

314

CZ

<В2><ВЗ>

072

LDA

<B2><B3>

324

CNC

<В2><ВЗ>

042

SHLD

<B2><B3>

334

СС

<В2><ВЗ>

052

LHLD

<B2><B3>

Как видно из табл. 4.2, микропроцессор КР580ИК80А может выполнять всего 18 двухбайтовых и 26 трехбайтовых команд, приведенных в табл. 4.3.

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

Для МП КР580ИК80А существуют следующие четыре воз­можных способа адресации: непосредственная, прямая, регист­ровая и косвенная.

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

Менее экономичной, но также довольно простой является прямая адресация. В этом случае во втором и третьем байтах команды содержится полный 16-разрядный адрес памяти. Млад­шим байтом адреса является <В2>, старшим — <ВЗ) (рис. 4.7,6). Таким способом можно адресоваться к любой ячейке адресного пространства памяти.

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

Косвенная адресация отличается от регистровой лишь тем, что в регистровой паре, определяемой кодом команды, содержатся не данные, а полный 16-разрядный адрес ячейки памяти,в кото­рой имеются эти данные (рис. 4.7,г). Старший байт адреса за­писывается в первом регистре пары, а младший байт — во вто­ром. Обычно указателем адреса при косвенной адресации явля­ются пара регистров Н, т. е. регистры Н, L, но иногда использу­ются и пары В и D.

При всевозможных пересылках данных из регистров в регист­ры или из памяти в регистры или обратно различают регистры — источники данных и регистры — приемники данных. Первые обо­значаются символом S (source — источник), вторые — симво­лом D (destination — место назначения). В регистровых парах В, С; D, Е и Н, L старшими являются первые регистры пар, т. е. регистры В, D, Н соответственно. Коды регистров общего назначения, пар регистров и флагов строго фиксированы (табл. 4.4).

В табл. 4.4 обозначение условия в мнемокоде команды в зависимости от значения флагов расшифровывается следую­щим образом: NZ — результат ненулевой; Z — результат нуле­вой; NC — нет переноса; С — есть перенос; РО - нет четности; РЕ — есть четность; Р — результат положительный (плюс) ; М -результат отрицательный (минус).

Рис. 4.7. Способы адресации: непосредственная (а), прямая (б), регист­ровая (в) и косвенная (г)

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