ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 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\ля банков дан ных и т. д. существуют специальные команды, с помощью которых
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,