домашняя библиотека
Поиск в библиотеке
Навигация по предметам
Последние добавленные новости
Реклама
МЕТАЛЛИЧЕСКИЕ оцинкованные водостоки.

Архитектура и организация ЭВММикропроцессор Z80

Двухбайтовые арифметические операции

Микропроцессор Z80

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

Инструкции инкремента и декремента INC и DEC соответственно увеличивают или уменьшают на единицу содержимое регистровых пар BC, DE, HL или двухбайтовых регистров SP, IX, IY; никакие флажки при этом не изменяются.

Инструкция ADD HL,rr прибавляет к содержимому регистровой пары HL значение одной из регистровых пар BC, DE, HL или регистра SP. По окончании выполнения этой команды значение флажка H непредсказуемо, флажок N сбрасывается, а флажок C устанавливается или сбрасывается в зависимости от наличия или отсутствия переноса из старшего (15-го) разряда результата.

Инструкции ADC HL,rr и SBC HL,rr обеспечивают соответственно добавление или вычитание значения регистровой пары BC, DE или HL либо регистра SP к/из содержимого регистровой пары HL. Значение флажка H непредсказуемо; флажок N устанавливается при выполнении инструкции SBC и сбрасывается при выполнении инструкции ADC; остальные флажки устанавливаются или сбрасываются в соответствии с полученным результатом, при этом флажок P/V используется для индикации переполнения. Таким образом, эти две команды влияют на флажки подобно аналогичным 8-разрядным инструкциям.

Инструкции ADD IX,rr и ADD IY,rr обеспечивают добавление к содержимому указанного индексного регистра значения регистровой пары BC или DE, либо того же самого индексного регистра (IX или IY), либо регистра SP. Значение флажка H непредсказуемо; флажок N сбрасывается; флажок C устанавливается или сбрасывается в зависимости от наличия переноса из старшего разряда результата.

Операции сдвига

Микропроцессор Z80

RL (IY+d)

┌────────┐ ┌────────┐ ┌───────┐ ┌────────┐

│11111101│ │11001011│ │ d │ │00010110│

└────────┘ └────────┘ └───────┘ └────────┘

Микропроцессор Z80

RRA ┌──────────────────────────┐

┌────────┐ │ ┌───────────┐ ┌───┐ │

│00011111│ └─►│ 7 ────► 0 │───►│ C │──┘

└────────┘ └───────────┘ └───┘

Микропроцессор Z80

Микропроцессор Z80

Микропроцессор Z80

Микропроцессор Z80 имеет весьма развитую систему операций сдвигов. В неё входят арифметические сдвиги вправо и влево (инструкции SLA и SRA), логический сдвиг вправо (SRL), циклические сдвиги вправо и влево через флажок переноса (RRA, RR, RLA, RL) и без флажка переноса (RRCA, RRC, RLCA, RLC). Кроме того, имеются две весьма специфические инструкции так называемого десятичного сдвига, обеспечивающие “вращение” младшего полубайта аккумулятора и полубайтов ячейки памяти, адрес которой располагается в регистровой паре HL (RLD и RLC). Схемы выполнения сдвигов приведены выше одновременно со структурами их кодов операций.

Инструкции RLCA, RLA, RRCA и RRA обеспечивают циклический сдвиг содержимого аккумулятора. Только эти четыре инструкции имелись в системе команд микропроцессора Intel 8080, что порой весьма сильно осложняло его программирование. Эти инструкции сбрасывают флажки H и N, а во флажок C заносится значение выдвинутого из аккумулятора разряда.

Инструкции RLC, RL, RRC и RR являются аналогами инструкций RLCA, RLA, RRCA и RRA, обеспечивающими циклический сдвиг содержимого любого регистра общего назначения, а также ячейки памяти, адресуемой либо содержимым регистровой пары HL, либо суммой содержимого одного из индексных регистров и 8-разрядного смещения, входящего в состав команды. Заметим, что эти инструкции способны выполнить сдвиг содержимого аккумулятора, однако они выполняются в два раза медленнее, чем команды RLCA, RLA, RRCA и RRA, и занимают два байта памяти вместо одного. Инструкции RLC, RL, RRC и RR изменяют состояние флажков S, Z и P/V в соответствии с полученным результатом (последний содержит признак чётности результата); во флажок C заносится значение выдвинутого разряда; флажки H и N обнуляются. Таким образом, использование двухбайтовых команд вида RLC A вместо однобайтовых вида RLCA может потребоваться в тех случаях, когда необходимо проанализировать результат операции сдвига, отражаемый флажками S, Z и P/V.

Инструкции SLA и SRA выполняют арифметический сдвиг влево и вправо содержимого аккумулятора, любого регистра общего назначения или ячейки памяти, адрес которой находится в регистровой паре HL или определяется суммированием содержимого одного из индексных регистров и 8-разрядного смещения. Инструкция SRL аналогична инструкции SRA, но выполняет логический сдвиг вправо (разница заключается в том, что при арифметическом сдвиге вправо значение старшего (знакового) разряда операнда не изменяется, а при логическом сдвиге в старший разряд заносится нуль). Все эти инструкции влияют на флажки аналогично инструкциям RLC, RL, RRC и RR: сбрасывают флажки H и N; заносят во флажок C значение выдвинутого разряда операнда; устанавливают или сбрасывают флажки S, Z и P/V в соответствии с полученным результатом (флажок P/V содержит признак чётности результата).

Операции RLD и RRD обменивают местами три полубайта: младший полубайт аккумулятора и оба полубайта ячейки памяти, адресуемой содержимым регистровой пары HL. Содержимое старшего полубайта аккумулятора не изменяется. Эти команды могут использоваться при преобразовании двоично-десятичных упакованных чисел (по две цифры в байте) в распакованный формат (код цифры – в младшем полубайте, код зоны – в старшем) и обратно. Они не оказывают влияния на флажок C, сбрасывают флажки H и N и устанавливают или сбрасывают флажки S, Z и P/V в соответствии с результатом, получившимся в аккумуляторе (флажок P/V является признаком чётности результата).

   
 
  • Добавлен: 17-08-2010, 08:19 | Просмотров: 13625

    support: admin@sdb.su