Файл: Вводый курс цифровой электроники (К.Фрике, 2003).pdf

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

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

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

Добавлен: 15.06.2025

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

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

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

Глава

16.

Структура,

система

команд

и работа

микропроцессора

Таблица

16.8. Команда

перехода

с адресацией типа

«Direct». В = байты,

Z — циклы, Т = такты.

Команда

Операнд

Воздействие

В

Z

T

LDA

addr

(A) ^

((byte 3)(byte 2))

3

4

13

STA

addr

((byte 3)(byte 2)) ^

(A)

3

4

13

LHLD

addr

(L)<-((byte3)(byte2)),

3

5

16

(H) ^

((byte 3)(byte 2)+l)

SHLD

addr

((byte 3)(byte 2)) 4- (L),

3

5

16

((byte 3)(byte 2)+l) ^ (H)

IN

port

(A) ^ (data)

2

3

10

OUT

port

(data) ^

(A)

2

3

10

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

Арифметические команды отличаются от команд перехода тем, что они воздействуют на флаг-регистр. В приведенных в приложении таблицах флаги, которые устанавливаются в результате операции, перемаркированы значком X. При этом 1 означает, что флаг уста­ новлен, О — что убран.

В нашем распоряжении имеются команды сложения и вычита­ ния, соответствующие типам адресации «Register», «Register indi­ rect» и «Immediate». Кроме того, учитывается либо не учитывается стоящий перед операцией в флаг-регистре был переноса (carry-bit). В качестве примера приведены адресуемые по типу «Register indi­ rect» команды сложения, которые учитывают carry-bit (ADC М) либо игнорирующего (ADD М):

ADD М

Воздействие: (А) ч- ((H)(L))

ADC М

Воздействие: (А) <- ((H)(L)) + (Су)

Команда

CPI представляет собой тестовое вычитание (А) -Byte 2

и влияет на содержание накапливающего регистра не оказывает. Например, последовательных команд:

MVI А, OFH

CPI OFFH

действует так, что во флаг-регистре стоят следующие значения: S = О, Z = О, АС = 1, Р = О, Су = 1.

Далее в накапливающем регистре стоит OFH.

J\RA ЦИКЛОВ счета, J\ля обращения с массивами, J\ля банков дан­ ных и т. д. существуют специальные команды, с помощью которых


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

содержание регистра или ЗУ может быть увеличено или уменьше­ но. Они собраны в табл. 16.9. На carry-bit (бит переноса) влияние не сказывается, но есть возможность контролировать с помощью нулевого бита окончание цикла счета.

Таблица 16.9. 8-битовые команды на увеличение либо на уменьшение.

Команда

Операнд

Воздействие

В

Z

т

S

Z

А

р с

С

Y

INR

г

(г) ^

(г) + 1

1

1

4

X

X

X

X

INR

М

((H)(L))4-((H)(L)) + 1

1

3

10

X

X

X

X

DCR

г

(г) ^

(г) - 1

1

1

4

X

X

X

X

DCR

М

( ( H ) ( L ) ) ^ ( ( H ) ( L ) ) - 1

1

3

10

X

X

X

X

В нашем распоряжении имеются специальные команды ^щя ариф­ метических операций (табл. 16.10). При этом учитывается, что коман­ да DAD «add register pair to H and L» воздействует только на бит переноса Carry-bit Су. Две других команды не ведут к установлению каких-либо флагов.

Таблица 16.10. Арифметические 16-битовые команды с типом адресации «Register».

Команда Операнд Воздействие

В z т s z A

P

С

С

Y

DAD

гр

((H)(L))^(H)(L) +

(rh)(rl)

1

3

10

INX

гр

(rh)(rl)

^

(rh)(rl) +

l

1

1

6

DCX

i-p

(rli)(rl)

^

(rh)(rl) -

1

1

1

6

X

J\jiK арифметических операций в двоично-десятичном коде име­ ется команда, которая после сложения чисел в двоично-десятичном коде корректирует перенос (табл. 16.11). Если из-за сложения обра­ зуются «псевдотемрады» (то есть шестнадцатиричные числа боль­ ше 9) результат с помош,ью добавления 6 коррелируется.

Таблица 16.11. Команда для арифметических операций в двоично-

десятичном коде.

Команда Операнд Воздействие

В

Z

т

S

Z

А

Р

с

С

Y

DAA

Коррекция числа в

1

1

4

X

X

X

X

X

двоично-десятичном коде


386 Глава 16. Структура, система команд и работа микропроцессора

Действие команды DAA является следующим:

1)Если 4 последних разряда содержания накапливающего реги­ стра выше, чем 9Н, или АС = 1, к содержанию накапливающе­ го регистра добавляется 6П.

2)Если первые 4 разряда содержания накапливающего регистра выше, чем 9Н, или если Су = 1, к 4 первым разрядам содержа­ ния накапливающего регистра добавляются 6П.

Вследующем примере показано, что после сложения двух чисел

вдвоично-десятичном коде проводится двухшаговал коррекция.

Пример

Сложение двух чисел в двоично-десятичном коде (BCD):

00101000

28io

+00110111

37io

01011111

l l l l 2 > 9 , отсюда коррекция с помощью

добавления IIO2 = бю

+00000110

Н-бю

01100101

6510

В основе этого примера лежит следующий ассемблерный код:

MVI А, 28Н OOIOIOOOBCD или 28io загрузить в накапливающий регистр

ADI 37Н OOIIOIUBDC ИЛИ 37IO К А, тогда (А) == 5FH DAA (А) = OHOOIOIBCD ИЛИ бЗю

16.12. Логические операции

Логические операции проводятся поразрядно. В нашем распоряже­ нии находятся AND, OR и EXCLUSIVE OR. Кроме того, содержа­ ние накапливающего регистра может быть усложнено. Логические операции воздействуют на флаги. При некоторых операциях флаги устанавливаются независимо от результата. Команды J\A^ выполне­ ния логических операций приведены в приложении.

Типичным случаем применения является «маскирование» битов в ЗУ. Пусть в этом случае необходимо перепроверить, равен ли О бит 4 накапливающего регистра. В этом случае должен быть уста­ новлен флаг Z. }\ля этого достаточно команды «AND immediate» («И немедленно»).


16.13. Установка и стирание флагов переноса (carry flag) 387

16.13.Установка и стирание флагов переноса (carry flag)

Спомощью команд CMC (complement carry, «дополняющий пере­ нос») и STC (set carry, «установочный перенос») можно воздейство­ вать на флаг переноса (carry flag).

16.14.Команды сдвига

Различают левый и правый сдвиг, при этом carry-bit привлекает­ ся, либо нет. На следующих диаграммах показан принцип действия четырех возможных команд сдвига.

Поворот направо с переносом

Су

накапливающий регистр

!

I

I

I

I

Поворот налево с переносом

Су накапливающий регистр

Поворот направо

Су

•• г

" 1

»

1

1

накапливающий регистр

1

1

1

1 .

Поворот налево

Су

1

1

1

\

1

накапливающий регистр

16.15. Разветвление программ

Команды перехода изменяют нормальную последовательность ко­ манд, которая задается возрастанием значения счетчика команд. Ассемблерные программы вызывают на переход (jump) к конкрет­ ному адресу в ЗУ. Команда JMP всегда выполняется, как и коман­ да PCHL, которая обсуждалась выше. Напротив, команды JNZ, JZ,


388 Глава 16. Структура, система команд и работа микропроцессора

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

Таблица 16.12. Команды перехода.

Ко м а н да Операнд Воздействие, если

условие

выполнено

JMP

addr

(PC) ^

(byte3)(byte2)

JNZ

addr

ч

JZ

addr

JNC

addr

JC

addr

I (PC) ^

(byte3)(byte2)

JPO

addr

JPE

addr

JP

addr

JM

addr

/

Условие В

z

T

нет

3

3

10

Z =

0

Ч

Z =

1

C Y - 0

CY = 1

>3

2/3

7/10

P =

0

P =

1

S =

0

S =

1

16.15.1.Пример перехода

Вследующем примере рассмотрим переходы в последовательности команд, состоящей из LXI и MOV. Вначале адрес цепи перехода неизвестен.

JMP

переход к цели перехода

LXI Н, ОЕСОН

загрузка пары регистров HL из ОЕСОН

MOV V, А

перезапись накопительного регистра в ОЕСОМ

. . . .

; цель перехода

Чтобы установить адрес цели перехода, абсолютное положение программы в ЗУ должно быть фиксировано. Кроме того, должно быть отсчитано число байтов (команд и операндов). В примере, при­ веденном ниже, программа откладывается до адреса 1000Н. Из это­ го получаем цель перехода 1007 Н.

А д р е с

Содерж:ание

К о м е н т а р и й

1000

СЗ

JMP

1001

07

Adress

Low-Byte

1002

10

Adress

High-Byte

1003

21

LXI

1004

СО

Operand

Low-Byte

1005

ОЕ

Operand

High-Byte

1006

77

MOV M,A.

1007

Sprungziel (Adresse 1007)