Инструменты пользователя

Инструменты сайта


microprocessor_kit_z80-book1:05

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
microprocessor_kit_z80-book1:05 [2020-07-11 12:42]
GreyWolf [5.4. Очередность выполнения по циклам]
microprocessor_kit_z80-book1:05 [2020-07-13 09:08] (текущий)
GreyWolf
Строка 14: Строка 14:
  
 При таком методе адресации операнд находится в памяти непосредственно за кодом При таком методе адресации операнд находится в памяти непосредственно за кодом
-операции команды. Он может быть 8 или 16-битной константой. Формат команд в этой случае:​+операции команды. Он может быть 8 или 16битной константой. Формат команд в этой случае:​
  
 <​code>​ <​code>​
Строка 34: Строка 34:
 ==== Регистровая адресация. ==== ==== Регистровая адресация. ====
  
-В этом случае операнд находится в регистре либо в паре регистров ЦП. Регистр адресуется тремя битами,​ входящими в код операции,​ пара регистров ​двумя.+В этом случае операнд находится в регистре либо в паре регистров ЦП. Регистр адресуется тремя битами,​ входящими в код операции,​ пара регистров ​— двумя.
  
 ==== Косвенная адресация. ==== ==== Косвенная адресация. ====
Строка 55: Строка 55:
 </​code>​ </​code>​
  
-==== Модифицированная нуль-страничная адресация. ====+==== Модифицированная нульстраничная адресация. ====
  
 Адресное пространство микропроцессора условно можно разбить на страницы по 4К. Тогда к нулевой странице будут относиться адреса 0000H…1000H. МП Z80 имеет специфический вид адресации,​ когда в коде операции 3 бита, задают модифицированный адрес рестарта. Эти адреса располагаются на нулевой странице области памяти МП. Команда состоит из одного байта: Адресное пространство микропроцессора условно можно разбить на страницы по 4К. Тогда к нулевой странице будут относиться адреса 0000H…1000H. МП Z80 имеет специфический вид адресации,​ когда в коде операции 3 бита, задают модифицированный адрес рестарта. Эти адреса располагаются на нулевой странице области памяти МП. Команда состоит из одного байта:
Строка 74: Строка 74:
  
 Этот вид адресации может использоваться командами условного и безусловного переходов. Этот вид адресации может использоваться командами условного и безусловного переходов.
-В каком случае они состоят из двух байтов:​ первый байт содержит код операции,​ а второй ​смещение в дополнительном коде. Действительный адрес получается прибавлением смещения к текущему значению счетчика команд.+В каком случае они состоят из двух байтов:​ первый байт содержит код операции,​ а второй ​— смещение в дополнительном коде. Действительный адрес получается прибавлением смещения к текущему значению счетчика команд.
  
 {{anchor:​pict_5}} {{anchor:​pict_5}}
Строка 80: Строка 80:
 \\ Рис. 5. \\ Рис. 5.
  
-Смешение как число со знаком,​ может задаваться от -128 до +127. Но т.к. оно складывается с (РС+2), то фактически можно, адресоваться к ячейкам памяти,​ расположенным на расстоянии от -126 до +129 байт от адреса кода операции команды перехода.+Смещение как число со знаком,​ может задаваться от -128 до +127. Но т.к. оно складывается с (РС+2), то фактически можно, адресоваться к ячейкам памяти,​ расположенным на расстоянии от -126 до +129 байт от адреса кода операции команды перехода.
  
 Преимущества относительной адресации перед абсолютной:​ Преимущества относительной адресации перед абсолютной:​
Строка 110: Строка 110:
 ==== Смешанная адресация. ==== ==== Смешанная адресация. ====
  
-Если в команде операнды адресованы по-разному,​ то имеет место смешанная адресация,​ например LD (IX+d),r+Если в команде операнды адресованы поразному,​ то имеет место смешанная адресация,​ например LD (IX+d),r
  
 {{anchor:​n52}} {{anchor:​n52}}
Строка 119: Строка 119:
 Первая колонка в этих таблицах содержит символические обозначения (мнемокоды),​ используемые при написании программ на языке Ассемблера МП Z80. В основе этих символических обозначений,​ как правило,​ лежит аббревиатура полной записи команды на английском языке. Первая колонка в этих таблицах содержит символические обозначения (мнемокоды),​ используемые при написании программ на языке Ассемблера МП Z80. В основе этих символических обозначений,​ как правило,​ лежит аббревиатура полной записи команды на английском языке.
  
-Во второй ​время выполнения в тактах.+Во второй ​— время выполнения в тактах.
  
 В третьей колонке приведены формат и двоичный кол команды. В третьей колонке приведены формат и двоичный кол команды.
Строка 128: Строка 128:
  
 В дальнейшем описании и таблицах приняты следующие обозначения:​ В дальнейшем описании и таблицах приняты следующие обозначения:​
-|r|8-битный регистр:​ A=111; B=000; C=001; D=010; E=011; H=100; L=101| +|r|8битный регистр:​ A=111; B=000; C=001; D=010; E=011; H=100; L=101| 
-|dd qq pp rr|16-битная регистровая пара:<​WRAP>​+|dd qq pp rr|16битная регистровая пара:<​WRAP>​
 |dd|BC=00; DE=01; HL=10; SP=11| |dd|BC=00; DE=01; HL=10; SP=11|
 |qq|BC=00; DE=01; HL=10; AF=11| |qq|BC=00; DE=01; HL=10; AF=11|
Строка 135: Строка 135:
 |rr|BC=00; DE=01; IY=10; SP=11| |rr|BC=00; DE=01; IY=10; SP=11|
 </​WRAP>​| </​WRAP>​|
-|n|8-битный операнд| +|n|8битный операнд| 
-|nn|16-битный операнд| +|nn|16битный операнд| 
-|(nn)|содержимое ячейки nn (8-битный операнд) или содержимое ячеек nn и nn+1 (16-битный операнд)|+|(nn)|содержимое ячейки nn (8битный операнд) или содержимое ячеек nn и nn+1 (16битный операнд)|
 |t|r, (HL), (IX+d) или (IY+d)| |t|r, (HL), (IX+d) или (IY+d)|
 |e|t или n| |e|t или n|
-|d|8-битное смешение (-128 ... +127)| +|d|8битное смешение (-128 ... +127)| 
-|е|8-битное смещение (-126 ... +129)|+|е|8битное смещение (-126 ... +129)|
 |b|позиционный номер бита: \\ D0=000; D1=001; D2=010; D3=011; D4=100; D5=101; D6=110; D7=111| |b|позиционный номер бита: \\ D0=000; D1=001; D2=010; D3=011; D4=100; D5=101; D6=110; D7=111|
 |cc|условие перехода:​ \\ NZ=000 (не ноль); Z=001 (ноль); NC-010 (нет переноса);​ C=011 (перенос);​ PO=100 (нечетность);​ PE=101 (четность);​ P=110 (знак плюс); М=111 (знак минус)| |cc|условие перехода:​ \\ NZ=000 (не ноль); Z=001 (ноль); NC-010 (нет переноса);​ C=011 (перенос);​ PO=100 (нечетность);​ PE=101 (четность);​ P=110 (знак плюс); М=111 (знак минус)|
Строка 159: Строка 159:
  
  
-==== 8-битовые команды загрузки. ====+==== 8битовые команды загрузки. ====
  
-Мнемоническое сокращение языка Ассемблера для всех команд загрузки одинаково:​ LD (load загрузить). Далее следует указание приёмника,​ затем ​указание источника пересылаемых данных.+Мнемоническое сокращение языка Ассемблера для всех команд загрузки одинаково:​ LD (load — загрузить). Далее следует указание приёмника,​ затем ​— указание источника пересылаемых данных.
 <​code>​ <​code>​
 LD приемник,​ источник LD приемник,​ источник
 </​code>​ </​code>​
  
-[[#​t511|Таблица 5.1.1]] содержит все команды 8-битной загрузки. Большую часть кодов в ней представляет команда LD r1,r2. В качестве r1 и r2 могут использоваться семь регистров:​ A, B, C, D, E, H и L, каждый из которых может служить как источником,​ так и приемником.+[[#​t511|Таблица 5.1.1]] содержит все команды 8битной загрузки. Большую часть кодов в ней представляет команда LD r1,r2. В качестве r1 и r2 могут использоваться семь регистров:​ A, B, C, D, E, H и L, каждый из которых может служить как источником,​ так и приемником.
 Следовательно,​ эта команда дает в результате 49 кодов операции. В их числе семь команд с r1=r2, которые по действию аналогичны NOP, т.к. фактического переноса данных не происходит,​ и флаги не изменяются. Следовательно,​ эта команда дает в результате 49 кодов операции. В их числе семь команд с r1=r2, которые по действию аналогичны NOP, т.к. фактического переноса данных не происходит,​ и флаги не изменяются.
  
Строка 220: Строка 220:
   * P/V ← IFF2 (триггер разрешения /​запрещения прерываний)   * P/V ← IFF2 (триггер разрешения /​запрещения прерываний)
  
-В сумме группа 8-битных команд загрузки содержит 104 различных кода.+В сумме группа 8битных команд загрузки содержит 104 различных кода.
  
-==== 16 битовые команды загрузки. ====+==== 16битовые команды загрузки. ====
  
 Команды этой группы представлены в [[#​t512|таблице 5.1.2]]. В них возможна регистровая адресация и косвенная через указатель стека. Сюда же входят команды пересылки в стек и извлечения из стека, их мнемонические обозначения PUSH и POP соответственно. Отличие их от обычных команд загрузки состоит в том, что указатель стека автоматически уменьшается или увеличивается,​ когда байт "​заталкивается"​ в стек или извлекается из стека. По действию команды PUSH и POP взаимно обратные. Это в равной степени относится и к последовательности обработки байтов (см. [[#​t53|таблицу 5.3]]): при PUSH сначала обрабатывается старший байт, при POP — младший. Команды этой группы представлены в [[#​t512|таблице 5.1.2]]. В них возможна регистровая адресация и косвенная через указатель стека. Сюда же входят команды пересылки в стек и извлечения из стека, их мнемонические обозначения PUSH и POP соответственно. Отличие их от обычных команд загрузки состоит в том, что указатель стека автоматически уменьшается или увеличивается,​ когда байт "​заталкивается"​ в стек или извлекается из стека. По действию команды PUSH и POP взаимно обратные. Это в равной степени относится и к последовательности обработки байтов (см. [[#​t53|таблицу 5.3]]): при PUSH сначала обрабатывается старший байт, при POP — младший.
  
-При всех 16-битовых командах загрузки,​ за исключением POP и AF не происходит изменения флагов.+При всех 16битовых командах загрузки,​ за исключением POP и AF не происходит изменения флагов.
  
-==== 16-битовые команды обмена. ====+==== 16битовые команды обмена. ====
  
 Эта группа содержит 6 команд,​ которые изображены в [[#​t518|таблице 5.1.8]]. Мнемоническое обозначение EX происходит от слова Exchange (обмен). Эта группа содержит 6 команд,​ которые изображены в [[#​t518|таблице 5.1.8]]. Мнемоническое обозначение EX происходит от слова Exchange (обмен).
Строка 234: Строка 234:
 Команда EX AF,AF' дает возможность программным путем переключать пары регистров A, F и A', F'. А команда EXX позволяет переключаться на вспомогательный набор РОНов. Эти команды длиной всего один байт, и время, необходимое для переключения,​ сведено к минимальному. т.е. реализовано очень короткое время отклика на прерывание. Команда EX AF,AF' дает возможность программным путем переключать пары регистров A, F и A', F'. А команда EXX позволяет переключаться на вспомогательный набор РОНов. Эти команды длиной всего один байт, и время, необходимое для переключения,​ сведено к минимальному. т.е. реализовано очень короткое время отклика на прерывание.
  
-Как и 16-битовые команды загрузки,​ команды обмена не влияют на состояние флагов.+Как и 16битовые команды загрузки,​ команды обмена не влияют на состояние флагов.
  
 ==== Команды обработки блоков. ==== ==== Команды обработки блоков. ====
Строка 268: Строка 268:
   * S ← 1, когда результат сравнения отрицательный,​ иначе S ← 0   * S ← 1, когда результат сравнения отрицательный,​ иначе S ← 0
   * Z ← 1, когда A=(HL), иначе Z ← 0   * Z ← 1, когда A=(HL), иначе Z ← 0
-  * H ← 1, когда был перенос в 4-й разряд,​ иначе Н ← 0+  * H ← 1, когда был перенос в 4й разряд,​ иначе Н ← 0
   * P/V ← 1, при BC≠0   * P/V ← 1, при BC≠0
   * P/V ← 0, когда результат декремента BC достигнет 0   * P/V ← 0, когда результат декремента BC достигнет 0
Строка 275: Строка 275:
 При каждом выполнении,​ до P/V=0, счётчик команд дважды декрементируется,​ что означает вновь обращение к этой команде. При каждом выполнении,​ до P/V=0, счётчик команд дважды декрементируется,​ что означает вновь обращение к этой команде.
  
-==== 8-битные арифметические и логические команды. ====+==== 8битные арифметические и логические команды. ====
  
 Команды этой группы отражены в [[#​t513|таблице 5.1.4]]. Они всегда используют аккумулятор в качестве приёмника результата. Команды этой группы отражены в [[#​t513|таблице 5.1.4]]. Они всегда используют аккумулятор в качестве приёмника результата.
Строка 292: Строка 292:
 |DEC t|декремент| |DEC t|декремент|
  
-Флаги C, Z, S и H устанавливаются соответственно результату операции. Флаги P/V действует в качестве флага переполнения V. Флаг N соответствует биту 4 кода выполняемой операции и указывает команде DAA (см. ниже), какая из арифметических операций выполнялась ​сложение или вычитание.+Флаги C, Z, S и H устанавливаются соответственно результату операции. Флаги P/V действует в качестве флага переполнения V. Флаг N соответствует биту 4 кода выполняемой операции и указывает команде DAA (см. ниже), какая из арифметических операций выполнялась ​— сложение или вычитание.
  
 Команда CP s выполняется так же, как и SUB s, c той разницей,​ что по результату операции лишь устанавливаются флаги, а содержимое аккумулятора не изменяется. Команда CP s выполняется так же, как и SUB s, c той разницей,​ что по результату операции лишь устанавливаются флаги, а содержимое аккумулятора не изменяется.
Строка 303: Строка 303:
 |AND А |аккумулятор остается без изменений;​ \\ в соответствии с его содержимым устанавливаются флаги, S←старший бит; \\ Z←1 при А=0, иначе Z←0; \\ P/V←1 при чётном количестве единиц,​ иначе P/V←0; \\ N←0; \\ C←0.| |AND А |аккумулятор остается без изменений;​ \\ в соответствии с его содержимым устанавливаются флаги, S←старший бит; \\ Z←1 при А=0, иначе Z←0; \\ P/V←1 при чётном количестве единиц,​ иначе P/V←0; \\ N←0; \\ C←0.|
 |OR A|как при AND A.| |OR A|как при AND A.|
-|XOR А|очистка аккумулятора (A←00); флаги ​как при AND A.|+|XOR А|очистка аккумулятора (A←00); флаги ​— как при AND A.|
 |СР А|аккумулятор без изменений;​ флаги устанавливается как при SUB A.| |СР А|аккумулятор без изменений;​ флаги устанавливается как при SUB A.|
  
Строка 313: Строка 313:
 |SCF|установка Флага переноса| |SCF|установка Флага переноса|
  
-Десятичная коррекция аккумулятора используется после сложения либо вычитания чисел в BCD (двоично-десятичной) формате. В этом формате 8-битный операнд представляет собой двузначное десятичное число, в котором младшей десятичной цифре соответствует младшая тетрада,​ а старшей – старшая. Для цифр BCD формата допустимы значения от 0 до 9. Однако,​ результат сложения пли вычитания может превысить 9. В этом случае необходима десятичная коррекция. После команд сложения она действует следующим образом:​+Десятичная коррекция аккумулятора используется после сложения либо вычитания чисел в BCD (двоичнодесятичной) формате. В этом формате 8битный операнд представляет собой двузначное десятичное число, в котором младшей десятичной цифре соответствует младшая тетрада,​ а старшей – старшая. Для цифр BCD формата допустимы значения от 0 до 9. Однако,​ результат сложения пли вычитания может превысить 9. В этом случае необходима десятичная коррекция. После команд сложения она действует следующим образом:​
   - если содержимое младшей тетрады аккумулятора больше 9 или H=1, то к аккумулятору добавляется число 6.   - если содержимое младшей тетрады аккумулятора больше 9 или H=1, то к аккумулятору добавляется число 6.
   - если содержимое старшей тетрады аккумулятора стало после этого больше 9 или C=1, то число 6 добавляется и к старшей тетраде аккумулятора.   - если содержимое старшей тетрады аккумулятора стало после этого больше 9 или C=1, то число 6 добавляется и к старшей тетраде аккумулятора.
Строка 322: Строка 322:
 Команда CPL побитно инвертирует содержимое аккумулятора (дополнение до 1) Команда NEG изменяет знак содержимого аккумулятора на противоположный (дополнение до 2), она соответствует вычитанию содержимого аккумулятора из нуля. С помощью команды SCF флаг переноса устанавливается в 1, с помощью команды ССF его можно инвертировать. Команда CPL побитно инвертирует содержимое аккумулятора (дополнение до 1) Команда NEG изменяет знак содержимого аккумулятора на противоположный (дополнение до 2), она соответствует вычитанию содержимого аккумулятора из нуля. С помощью команды SCF флаг переноса устанавливается в 1, с помощью команды ССF его можно инвертировать.
  
-==== 16-битовые арифметические команды. ====+==== 16битовые арифметические команды. ====
  
-Команды этой группы сведены в [[#​t515|таблицу 5.1.5]]. Их мнемоники соответствуют принятым для 8–битных арифметических команд,​ только дополнительно указывается приемник результата. 16-битные арифметические команды позволяют использовать регистровые пары и 16-разрядные регистры.+Команды этой группы сведены в [[#​t515|таблицу 5.1.5]]. Их мнемоники соответствуют принятым для 8–битных арифметических команд,​ только дополнительно указывается приемник результата. 16битные арифметические команды позволяют использовать регистровые пары и 16разрядные регистры.
  
 В этой группе не предусмотрена команда SUB, поэтому при потребности в ней следует применять команду SBC, предварительно сбросив флаг переноса,​ например,​ командой AND A. В этой группе не предусмотрена команда SUB, поэтому при потребности в ней следует применять команду SBC, предварительно сбросив флаг переноса,​ например,​ командой AND A.
Строка 332: Строка 332:
 Эта группа команд объединена в [[#​t5111|таблице 5.1.11]]. Эта группа команд объединена в [[#​t5111|таблице 5.1.11]].
  
-Эти команды позволяют адресоваться к любому регистру или ячейке памяти. Они особенно удобны при выполнении умножения и деления. Две команды (RLD и RRD) вращают тетрады аккумулятора и ячейки памяти,​ адресуемой парой HL. Их целесообразно применять в двоично-десятичной (BCD) арифметике. Конкретный вид вращения или сдвига ясен из символических пояснений к каждой команде. Эта группа содержит 76 команд.+Эти команды позволяют адресоваться к любому регистру или ячейке памяти. Они особенно удобны при выполнении умножения и деления. Две команды (RLD и RRD) вращают тетрады аккумулятора и ячейки памяти,​ адресуемой парой HL. Их целесообразно применять в двоичнодесятичной (BCD) арифметике. Конкретный вид вращения или сдвига ясен из символических пояснений к каждой команде. Эта группа содержит 76 команд.
  
 ==== Команды для работы с битами ==== ==== Команды для работы с битами ====
Строка 340: Строка 340:
 ==== Команды переходов ==== ==== Команды переходов ====
  
-Команды переходов собраны в [[#​t516|таблице 5.1.6]]. Переход ​это ветвление программы,​ при котором в счетчик команд PC загружается новый адрес. В команде он представлен абсолютно,​ относительно или косвенно. Следует помнить,​ что условный переход происходит только при выполнении условия,​ заданного в команде. Если условие не выполняется,​ то программа переходит к команде,​ следующей за командой перехода. При абсолютной адресации команда содержит адрес перехода. Такая команда состоит из трех байтов:​ кода операции,​ младшего байта адреса и старшего байта адреса перехода.+Команды переходов собраны в [[#​t516|таблице 5.1.6]]. Переход ​— это ветвление программы,​ при котором в счетчик команд PC загружается новый адрес. В команде он представлен абсолютно,​ относительно или косвенно. Следует помнить,​ что условный переход происходит только при выполнении условия,​ заданного в команде. Если условие не выполняется,​ то программа переходит к команде,​ следующей за командой перехода. При абсолютной адресации команда содержит адрес перехода. Такая команда состоит из трех байтов:​ кода операции,​ младшего байта адреса и старшего байта адреса перехода.
  
-При относительной адресации команда состоит из двух байтов. Второй байт ​это расстояние между адресом перехода и текущим состоянием счетчика команд (т.е. смешение). Смешение может быть от +127 до -126 относительно адреса кода операции команды,​ следующей за командой перехода.+При относительной адресации команда состоит из двух байтов. Второй байт ​— это расстояние между адресом перехода и текущим состоянием счетчика команд (т.е. смешение). Смешение может быть от +127 до -126 относительно адреса кода операции команды,​ следующей за командой перехода.
  
 При косвенной адресации в командах перехода содержим е регистровой пары HL пли одного из индексных регистр (IX или IY) прямо загружается в счетчик команд. При косвенной адресации в командах перехода содержим е регистровой пары HL пли одного из индексных регистр (IX или IY) прямо загружается в счетчик команд.
Строка 352: Строка 352:
 ==== Команды вызова и возврата ==== ==== Команды вызова и возврата ====
  
-Эта группа объединена в [[#​t5110|таблице 5.1.10]]. Команда вызова подпрограммы CALL — это специфическая команда перехода,​ при которой МП запоминает адрес команды,​ следующей за командой CALL. Команда возврата RET противоположна команде CALL. В ней адрес из стека прямо загружается в счётчик команд,​ и осуществляется возврат к прерванной программе. МП имеет две специальные команды возврата:​ RETI возврат из маскируемого прерывания и RETN -возврат из немаскируемого прерывания. Команда RETI является единственной командой,​ которая распознается периферийными микросхемами комплекта Z80. Это необходимо для организации приоритетных прерываний и нормального возврата из прерываний,​ поступивших от периферийных схем. Об этом подробно написано в книге 7 "​Построение систем. Программирование. Отладка"​.+Эта группа объединена в [[#​t5110|таблице 5.1.10]]. Команда вызова подпрограммы CALL — это специфическая команда перехода,​ при которой МП запоминает адрес команды,​ следующей за командой CALL. Команда возврата RET противоположна команде CALL. В ней адрес из стека прямо загружается в счётчик команд,​ и осуществляется возврат к прерванной программе. МП имеет две специальные команды возврата:​ RETI — возврат из маскируемого прерывания и RETN — возврат из немаскируемого прерывания. Команда RETI является единственной командой,​ которая распознается периферийными микросхемами комплекта Z80. Это необходимо для организации приоритетных прерываний и нормального возврата из прерываний,​ поступивших от периферийных схем. Об этом подробно написано в книге 7 "​Построение систем. Программирование. Отладка"​.
  
 Команды вызова подпрограмм состоят из 3 байтов. Однако,​ специфические команды рестарта RST p состоят из одного байта. Фиксированный адрес перехода встроен в код операции этих команд (см. методы адресации). Команды вызова подпрограмм состоят из 3 байтов. Однако,​ специфические команды рестарта RST p состоят из одного байта. Фиксированный адрес перехода встроен в код операции этих команд (см. методы адресации).
Строка 358: Строка 358:
 Группа команд вызова и возврата не влияет на состояние флагов. Группа команд вызова и возврата не влияет на состояние флагов.
  
-==== Команды ввода-вывода ====+==== Команды вводавывода ====
  
-Набор команд ввода-вывода представлен в [[#​t519|таблице 5.1.9]]. Адресация в этих командах может быть непосредственной либо косвенной,​ но регистру C.+Набор команд вводавывода представлен в [[#​t519|таблице 5.1.9]]. Адресация в этих командах может быть непосредственной либо косвенной,​ но регистру C.
  
-Команды с непосредственной адресацией IN A,(n) и OUT (n),A аналогичны командам ввода-вывода МП I8080. Но в добавление к адресу порта n, выставляемому в младшую часть шины адреса,​ в старшую часть ША подается содержимое аккумулятора. Это позволяет,​ предварительно загрузив аккумулятор нужным значением,​ использовать 16-разридный адрес ввода-вывода. На флаги эти две команды не влияют.+Команды с непосредственной адресацией IN A,(n) и OUT (n),A аналогичны командам вводавывода МП I8080. Но в добавление к адресу порта n, выставляемому в младшую часть шины адреса,​ в старшую часть ША подается содержимое аккумулятора. Это позволяет,​ предварительно загрузив аккумулятор нужным значением,​ использовать 16разридный адрес вводавывода. На флаги эти две команды не влияют.
  
 В командах с косвенной адресацией данные пересылаются между портом адрес которого загружен в регистр C, и одним из РОНов. В командах с косвенной адресацией данные пересылаются между портом адрес которого загружен в регистр C, и одним из РОНов.
Строка 370: Строка 370:
 </​code>​ </​code>​
  
-При этом в старшую часть адреса подается содержимое регистра B, т.е. также может использоваться 16-разрядный адрес ввода-вывода.+При этом в старшую часть адреса подается содержимое регистра B, т.е. также может использоваться 16разрядный адрес вводавывода.
  
 Две команды IN C,(C) и OUT (C),C имеют особенности. В команде вывода регистр C содержит адрес канала и его же в качестве данник посылает в порт. В команде ввода содержимое регистра C после ввода из порта замещается принятыми данными. Две команды IN C,(C) и OUT (C),C имеют особенности. В команде вывода регистр C содержит адрес канала и его же в качестве данник посылает в порт. В команде ввода содержимое регистра C после ввода из порта замещается принятыми данными.
Строка 376: Строка 376:
 Команды OUT (C),r не влияют на флаги. Команды ввода IN r,(C) устанавливают флаги Z, S, P, H в соответствии с принятыми данными и сбрасывают флаг N. Следует уделить команду INF, которая,​ воздействуя на регистр флагов,​ не изменяет состояния РОН. Команды OUT (C),r не влияют на флаги. Команды ввода IN r,(C) устанавливают флаги Z, S, P, H в соответствии с принятыми данными и сбрасывают флаг N. Следует уделить команду INF, которая,​ воздействуя на регистр флагов,​ не изменяет состояния РОН.
  
-Косвенная адресация используется также командами ввода-вывода блоков. Они пересылают данные между портом,​ адресуемым регистром C, и памятью,​ адресуемой регистровой парой HL.+Косвенная адресация используется также командами вводавывода блоков. Они пересылают данные между портом,​ адресуемым регистром C, и памятью,​ адресуемой регистровой парой HL.
  
 |INI|ввод и инкремент HL| |INI|ввод и инкремент HL|
Строка 387: Строка 387:
 |OTDR|вывод и декремент HL до B=0| |OTDR|вывод и декремент HL до B=0|
  
-Регистр B здесь используется как двоичный счётчик ​он автоматически декрементируется после пересылки каждого байта (максимально 256). Вместе с тем, содержимое B выдается в старшую часть ША. Это может быть использовано в случае,​ когда необходимо выводить данные в несколько портов с идущими подряд (в старшем байте) 16-разрядными адресами.+Регистр B здесь используется как двоичный счётчик ​— он автоматически декрементируется после пересылки каждого байта (максимально 256). Вместе с тем, содержимое B выдается в старшую часть ША. Это может быть использовано в случае,​ когда необходимо выводить данные в несколько портов с идущими подряд (в старшем байте) 16разрядными адресами.
  
-Команды ввода-вывода блоков устанавливают флаги следующим образом:​+Команды вводавывода блоков устанавливают флаги следующим образом:​
 |S|неопределён| |S|неопределён|
 |Z←1, если регистр B=0 (выполнение команд заканчивается),​ иначе Z←0|| |Z←1, если регистр B=0 (выполнение команд заканчивается),​ иначе Z←0||
Строка 401: Строка 401:
 Эта группа ([[#​t5112|таблица 5.1.12]]) содержит шесть команд управления. Эта группа ([[#​t5112|таблица 5.1.12]]) содержит шесть команд управления.
  
-Команда NOP это пустая команда,​ при которой не выполняется никаких действий.+Команда NOP — это пустая команда,​ при которой не выполняется никаких действий.
  
 Команда HALT останавливает работу МП до тех пор, пока не будет принят запрос на прерывание. Команда HALT останавливает работу МП до тех пор, пока не будет принят запрос на прерывание.
Строка 408: Строка 408:
 {{anchor:​tables}} {{anchor:​tables}}
 {{anchor:​t511}} {{anchor:​t511}}
-Таблица 5.1.1. 8-битовые команды загрузки+Таблица 5.1.1. 8битовые команды загрузки
  
 ^  Команда ​ ^  T  ^  Код ​ ||^  Пояснения ​ ^  C  ^  Z  ^  P  ^  S  ^  N  ^  Y  ^ ^  Команда ​ ^  T  ^  Код ​ ||^  Пояснения ​ ^  C  ^  Z  ^  P  ^  S  ^  N  ^  Y  ^
Строка 439: Строка 439:
  
 {{anchor:​t512}} {{anchor:​t512}}
-Таблица 5.1.2. 16-битовые команды загрузки+Таблица 5.1.2. 16битовые команды загрузки
  
 ^  Команда ​ ^  T  ^  Код ​ ||^  Пояснения ​ ^  C  ^  Z  ^  P  ^  S  ^  N  ^  Y  ^ ^  Команда ​ ^  T  ^  Код ​ ||^  Пояснения ​ ^  C  ^  Z  ^  P  ^  S  ^  N  ^  Y  ^
Строка 483: Строка 483:
  
 {{anchor:​t514}} {{anchor:​t514}}
-Таблица 5.1.4. 8-битовые арифметические и логические команды+Таблица 5.1.4. 8битовые арифметические и логические команды
  
 ^  Команда ​ ^  T  ^  Код ​ ||^  Пояснения ​ ^  C  ^  Z  ^  P  ^  S  ^  N  ^  Y  ^ ^  Команда ​ ^  T  ^  Код ​ ||^  Пояснения ​ ^  C  ^  Z  ^  P  ^  S  ^  N  ^  Y  ^
Строка 726: Строка 726:
 {{anchor:​n53}} {{anchor:​n53}}
 ===== 5.3. Флаги признаков ===== ===== 5.3. Флаги признаков =====
-FIXME 
  
-Каждый из двух флаговых регистров МП Z80 содержит по шесть информационных битов, состояние которых устанавливается в соответствии с результатом операции. Флаги S, Z, C и P/V используются в командах условного перехода,​ условного вызова подпрограмм и условного возврата из подпрограмм. Флаги H и N непосредственно программно не анализируются. Они используются в двоично-десятичной арифметике.+Каждый из двух флаговых регистров МП Z80 содержит по шесть информационных битов, состояние которых устанавливается в соответствии с результатом операции. Флаги S, Z, C и P/V используются в командах условного перехода,​ условного вызова подпрограмм и условного возврата из подпрограмм. Флаги H и N непосредственно программно не анализируются. Они используются в двоичнодесятичной арифметике.
  
 ==== S (F7) Sign — Флаг знака ==== ==== S (F7) Sign — Флаг знака ====
Строка 739: Строка 738:
  
 Флаг Z устанавливается или обнуляется в результате выполнения следующих команд:​ Флаг Z устанавливается или обнуляется в результате выполнения следующих команд:​
-  - При 8-битных арифметических и логических операциях флаг устанавливается в 1, если результат выполнения команды равен нулю. Если результат не равен нулю, флаг Z обнуляется.+  - При 8битных арифметических и логических операциях флаг устанавливается в 1, если результат выполнения команды равен нулю. Если результат не равен нулю, флаг Z обнуляется.
   - При командах поиска и сравнения флаг Z устанавливается в 1. когда содержимое ячейки памяти адресуемой регистровой парой HL, совладает с содержимым аккумулятора.   - При командах поиска и сравнения флаг Z устанавливается в 1. когда содержимое ячейки памяти адресуемой регистровой парой HL, совладает с содержимым аккумулятора.
   - После выполнения команды тестирования отдельного бита во флаг Z записывается инвертированное значение проверенного бита.   - После выполнения команды тестирования отдельного бита во флаг Z записывается инвертированное значение проверенного бита.
Строка 749: Строка 748:
 ==== C (F0) Carry — Флаг переноса ==== ==== C (F0) Carry — Флаг переноса ====
  
-На состояние этого флага влияют следующие команды: ​ ​- ​+На состояние этого флага влияют следующие команды:​
   - Команды сложения устанавливают флаг C, когда есть Перенос от бита 7 к биту 8 результата сложения однобайтных чисел, или от бита 15 к биту 16 при сложении двухбайтных чисел. Иначе C=0.   - Команды сложения устанавливают флаг C, когда есть Перенос от бита 7 к биту 8 результата сложения однобайтных чисел, или от бита 15 к биту 16 при сложении двухбайтных чисел. Иначе C=0.
   - Команды вычитания устанавливают флаг, если есть заём, и сбрасывают,​ когда его нет.   - Команды вычитания устанавливают флаг, если есть заём, и сбрасывают,​ когда его нет.
Строка 763: Строка 762:
  
 Этот флаг имеет несколько функций:​ Этот флаг имеет несколько функций:​
-  - <​WRAP>​При арифметических операциях над числами со знаком он действует как флаг переполнения V. т.к. диапазон представления чисел со знаком от -128 до +127, то при операциях над ними возможен выход результата за эти пределы ​переполнение. В этом случае флаг, устанавливается в 1, сигнализируя об ошибочности результата. Логика установки флага V в 1 такова:​ +  - <​WRAP>​При арифметических операциях над числами со знаком он действует как флаг переполнения V. т.к. диапазон представления чисел со знаком от -128 до +127, то при операциях над ними возможен выход результата за эти пределы ​— переполнение. В этом случае флаг, устанавливается в 1, сигнализируя об ошибочности результата. Логика установки флага V в 1 такова:​ 
-  * а) если был перенос из 6-го бита в 7-ой, и не было переноса из 7-го бита во флаг C. +  * а) если был перенос из 6го бита в 7ой, и не было переноса из 7го бита во флаг C. 
-  * б) не было переноса из 6-го бита в 7-ой, но есть перенос из 7-го бита во флаг C.+  * б) не было переноса из 6го бита в 7ой, но есть перенос из 7го бита во флаг C.
  
 Примеры:​ Примеры:​
Строка 802: Строка 801:
 ==== H (F4) Halfoarry — Флаг полупереноса ==== ==== H (F4) Halfoarry — Флаг полупереноса ====
  
-Команды сложения,​ вычитания,​ инкремента,​ декремента и сравнения 8-битных операндов устанавливают флаг H когда был перенос из третьего бита результата в четвертый,​ или был заём от четвёртого бита к третьему. Этим он указывает команде DAA требует ли результат десятичной коррекции.+Команды сложения,​ вычитания,​ инкремента,​ декремента и сравнения 8битных операндов устанавливают флаг H когда был перенос из третьего бита результата в четвертый,​ или был заём от четвёртого бита к третьему. Этим он указывает команде DAA требует ли результат десятичной коррекции.
  
 ==== N (F1) Addition/​Subtraction — Флаг сложения/​вычитания ==== ==== N (F1) Addition/​Subtraction — Флаг сложения/​вычитания ====
Строка 808: Строка 807:
 Команды сложение,​ инкремента и логические команды обнуляют флаг N, а команды вычитания,​ декремента,​ сравнения и инвертирования его устанавливают. Команды сложение,​ инкремента и логические команды обнуляют флаг N, а команды вычитания,​ декремента,​ сравнения и инвертирования его устанавливают.
  
-Состояние флага N используется командой DAA. Т.к. алгоритм корректировки результата двоично-десятичных операций различен при сложении и вычитании,​ этот флаг показывает,​ какое именно действие происходило перед этим.+Состояние флага N используется командой DAA. Т.к. алгоритм корректировки результата двоичнодесятичных операций различен при сложении и вычитании,​ этот флаг показывает,​ какое именно действие происходило перед этим.
  
 В [[#​t52|таблице 5.2]] показано как выполнение команд влияет на регистр флагов. Команды,​ которые здесь не представлены,​ не влияют ни на один флаг. В [[#​t52|таблице 5.2]] показано как выполнение команд влияет на регистр флагов. Команды,​ которые здесь не представлены,​ не влияют ни на один флаг.
Строка 824: Строка 823:
 |CPI; CPD; CPIR; CPDR|  X  |  ?  |  X  |  X  |  X  |  ?  |  1  |    |Если BC≠0, то P/V=1 \\ Если BC=0, то P/V=0 \\ Если A≠(HL), то Z=0 \\ Если A=(HL), то Z=1| |CPI; CPD; CPIR; CPDR|  X  |  ?  |  X  |  X  |  X  |  ?  |  1  |    |Если BC≠0, то P/V=1 \\ Если BC=0, то P/V=0 \\ Если A≠(HL), то Z=0 \\ Если A=(HL), то Z=1|
 | |||||||||| | ||||||||||
-|ADD s; ADC s|  ?  |  ?  |  X  |  ?  |  X  |  V  |  0  |  ?  |8-битовые арифметические команды|+|ADD s; ADC s|  ?  |  ?  |  X  |  ?  |  X  |  V  |  0  |  ?  |8битовые арифметические команды|
 |SUB s; SBC s; CP s; NEG|  ?  |  ?  |  X  |  ?  |  X  |  V  |  1  |  ?  |:::| |SUB s; SBC s; CP s; NEG|  ?  |  ?  |  X  |  ?  |  X  |  V  |  1  |  ?  |:::|
 | |||||||||| | ||||||||||
Строка 830: Строка 829:
 |OR s; XOR s|  ?  |  ?  |  X  |  0  |  X  |  P  |  0  |  0  |:::| |OR s; XOR s|  ?  |  ?  |  X  |  0  |  X  |  P  |  0  |  0  |:::|
 | |||||||||| | ||||||||||
-|INC t|  ?  |  ?  |  X  |  ?  |  X  |  V  |  0  |    |Только 8-битовые команды|+|INC t|  ?  |  ?  |  X  |  ?  |  X  |  V  |  0  |    |Только 8битовые команды|
 |DEC t|  ?  |  ?  |  X  |  ?  |  X  |  V  |  1  |    |:::| |DEC t|  ?  |  ?  |  X  |  ?  |  X  |  V  |  1  |    |:::|
 | |||||||||| | ||||||||||
-|ADD HL,dd; ADD IX,pp; ADD IY,​rr| ​   |    |  X  |  X  |  X  |    |  0  |  ?  |16-битовые – арифметические команды|+|ADD HL,dd; ADD IX,pp; ADD IY,​rr| ​   |    |  X  |  X  |  X  |    |  0  |  ?  |16битовые – арифметические команды|
 |ADC HL,​dd| ​ ?  |  ?  |  X  |  X  |  X  |  V  |  0  |  ?  |:::| |ADC HL,​dd| ​ ?  |  ?  |  X  |  X  |  X  |  V  |  0  |  ?  |:::|
 |SBC HL,​dd| ​ ?  |  ?  |  X  |  X  |  X  |  V  |  1  |  ?  |:::| |SBC HL,​dd| ​ ?  |  ?  |  X  |  X  |  X  |  V  |  1  |  ?  |:::|
Строка 850: Строка 849:
 |IN r,(C); INF|  ?  |  ?  |  X  |  ?  |  X  |  P  |  0  |    |:::| |IN r,(C); INF|  ?  |  ?  |  X  |  ?  |  X  |  P  |  0  |    |:::|
 | |||||||||| | ||||||||||
-|INI; IND; OUTI; OUTD|  X  |  ?  |  X  |  X  |  X  |  X  |  1  |    |Блочные команды ввода-вывода:​ \\ Если B≠0, то Z=0 \\ Если В=0, то Z=1|+|INI; IND; OUTI; OUTD|  X  |  ?  |  X  |  X  |  X  |  X  |  1  |    |Блочные команды вводавывода:​ \\ Если B≠0, то Z=0 \\ Если В=0, то Z=1|
 |INIR; INDR; OTIR; OTDR|  X  |  1  |  X  |  X  |  X  |  X  |  1  |    |:::| |INIR; INDR; OTIR; OTDR|  X  |  1  |  X  |  X  |  X  |  X  |  1  |    |:::|
  
 {{anchor:​n54}} {{anchor:​n54}}
 ===== 5.4. Очередность выполнения по циклам ===== ===== 5.4. Очередность выполнения по циклам =====
-FIXME 
  
-Для обозначения действий микропроцессора в каждой машинном цикле в [[#​t53таблице 5.3]] приняты следующие сокращения:​+Для обозначения действий микропроцессора в каждой машинном цикле в [[#t53|таблице 5.3]] приняты следующие сокращения:​
  
 |OCR (operation code read)|чтение кода операции| |OCR (operation code read)|чтение кода операции|
 |CBR (control byte read)|чтение управляющего байта кода операции (ED, DD, FD, CB)| |CBR (control byte read)|чтение управляющего байта кода операции (ED, DD, FD, CB)|
-|IOP (internal CPU-operation)|внутренние операции ЦП, выходные сигналы управления неактивны|+|IOP (internal CPU operation)|внутренние операции ЦП, выходные сигналы управления неактивны|
 |MRD (memory read)|чтение байта из косвенно адресованной ячейки памяти| |MRD (memory read)|чтение байта из косвенно адресованной ячейки памяти|
-|MRH (memory rend, high byte)|чтение старшего байта 16-разрядного слова из косвенно адресованной ячейки памяти| +|MRH (memory rend, high byte)|чтение старшего байта 16разрядного слова из косвенно адресованной ячейки памяти| 
-|MRL (memory read, low byte)|чтение младшего байта 16-разрядного слова из косвенно адресованной ячейки памяти|+|MRL (memory read, low byte)|чтение младшего байта 16разрядного слова из косвенно адресованной ячейки памяти|
 |MWR (memory write)|запись байта в косвенно адресованную ячейку памяти| |MWR (memory write)|запись байта в косвенно адресованную ячейку памяти|
-|MWH (memory write, high byte)|запись старшего байта 16-разрядиого слова в косвенно адресованную ячейку памяти| +|MWH (memory write, high byte)|запись старшего байта 16разрядиого слова в косвенно адресованную ячейку памяти| 
-|MWL (memory write, low byte)|запись младшего байта 16-разрядного слова в косвенно адресованную ячейку памяти| +|MWL (memory write, low byte)|запись младшего байта 16разрядного слова в косвенно адресованную ячейку памяти| 
-|ORD (operand read)|чтение операнда-байта, непосредственно представленного в команде| +|ORD (operand read)|чтение операндабайта, непосредственно представленного в команде| 
-|ORH (operand read, high byte)|чтение старшего байта 16-разрядного слова, непосредственно представленного в команде| +|ORH (operand read, high byte)|чтение старшего байта 16разрядного слова, непосредственно представленного в команде| 
-|ORL (operand read, Ion byte)|чтение младшего байта 16-разрядного слова, непосредственно представленного в команде|+|ORL (operand read, Ion byte)|чтение младшего байта 16разрядного слова, непосредственно представленного в команде|
 |PRD (port read)|ввод данных из порта| |PRD (port read)|ввод данных из порта|
 |PWR (port write)|вывод данных в порт| |PWR (port write)|вывод данных в порт|
Строка 882: Строка 880:
 |(n)|продолжительность цикла в периодах тактовой частоты| |(n)|продолжительность цикла в периодах тактовой частоты|
  
-{{anchor:t63}} +{{anchor:t53}} 
-Таблица ​6.3. очередность выполнения по циклам+Таблица ​5.3. очередность выполнения по циклам
 ^  Тип команды ​ ^  Байт ​ ^  Цикл M1  ^  Цикл M2  ^   ​Цикл M3  ^  Цикл M4  ^  Цикл M5  ^  Пояснение ​ ^ ^  Тип команды ​ ^  Байт ​ ^  Цикл M1  ^  Цикл M2  ^   ​Цикл M3  ^  Цикл M4  ^  Цикл M5  ^  Пояснение ​ ^
 |LD r1,​r2| ​ 1  |OCR(4)| | | | |ii: IX или IY| |LD r1,​r2| ​ 1  |OCR(4)| | | | |ii: IX или IY|
Строка 914: Строка 912:
 |POP ii|  2  |CBR(4); OCR(4)|SRL(3);​ SPI|SRH(3); SPI| | |ii: IX или IY| |POP ii|  2  |CBR(4); OCR(4)|SRL(3);​ SPI|SRH(3); SPI| | |ii: IX или IY|
 | |||||||| | ||||||||
-| |    ||||||| +|EX DE,HL ​1  ​|OCR(4)| | | | | | 
-| |    ||||||| +|EX AF,AF’; EXX ​1  ​|OCR(4)| | | | | | 
-| |    ||||||| +|EX (SP),HL ​1  ​|OCR(4)|SRL(3); SPI|SRH(4)|SWH(3); SPD SWL(5)| | 
-| |    |||||||+|EX (SP),ii ​1  ​|CBR(4); OCR(4)|SRL(3); SPI|SRH(3)|SWH(3); SPD SWL(5)| |ii: IX или IY|
 | |||||||| | ||||||||
- +|LDI; LDD; CPI; CPD|  2  |CBR(4); OCR(4)|MRD(3)|MWR(3)| | | | 
 +|LDIR; LDDR; CPIR; CPDR|  2  |CBR(4); OCR(4)|MRD(3)|MWR(3)|IOP(5)| |IOP(5) в M4, только когда BC≠0| 
 +| |||||||| 
 +|ALU r|  1  |OCR(4)| | | | |ALU означает:​ ADD, ADC, SUB, SEC, AND, OR, XOR или CP| 
 +|ALU n|  2  |OCR(4)|ORD(3)| | | |:::| 
 +|ALU (HL)|  1  |OCR(4)|MRD(3)| | | |:::| 
 +|ALU (ii+d)| ​ 3  |CBR(4); OCR(4)|ORD(3)|IOP(5)|MRD(3)| |:::| 
 +| |||||||| 
 +|INC r; DEC r|  1  |OCR(4)| | | | | | 
 +|INC (HL); DEC (HL)|  1  |OCR(4)|MRD(3)|MWR(3)| | | | 
 +|INC (ii+d); DEC (ii+d)| ​ 3  |CBR(4); OCR(4)|ORD(3)|IOP(5)|MRD(4)|MWR(3)|ii:​ IX или IY| 
 +| |||||||| 
 +|DAA|  1  |OCR(4)| | | | | | 
 +|CPL|  1  |OCR(4)| | | | | | 
 +|NEG|  2  |CBR(4); OCR(4)| | | | | | 
 +|CCF; SCF|  1  |OCR(4)| | | | | | 
 +| |||||||| 
 +|NOP; HALT|  1  |OCR(4)| | | | | | 
 +|DI; EI|  1  |OCR(4)| | | | | | 
 +|IM0; IM1; IM2|  2  |CBR(4); OCR(4)| | | | | | 
 +| |||||||| 
 +|ADD HL,​dd| ​ 1  |OCR(4)|IOP(4)|IOP(3)| | | | 
 +|ADC HL,dd; SBC HL,dd; ADD ii,​pp| ​ 2  |CBR(4); OCR(4)|IOP(4)|IOP(3)| | |ADD ii,pp – это ADD IX,pp или ADD IY,rr| 
 +| |||||||| 
 +|INC dd; DEC dd|  1  |OCR(6)| | | | | | 
 +|INC ii; DEC ii|  2  |CBR(4); OCR(6)| | | | |ii: IX или IY| 
 +| |||||||| 
 +|RLCA; RRCA; RLA; RRA|  1  |OCR(4)| | | | |ROT означает:​ RLC, RL, RRC, RR, SLA,SRA или SRL.| 
 +|ROT r|  2  |CBR(4); OCR(4)| | | | |:::| 
 +|ROT (HL)|  2  |CBR(4); OCR(4)|MRD(3)|MWR(3)| | |:::| 
 +|ROT (ii+d)| ​ 4  |CBR(4); CBR(4)|ORD(3)|OCR(5)|MRD(4)|MWR(3)|:::​| 
 +|RLD; RRD|  2  |CBR(4); OCR(4)|MRD(3)|IOP(4)|MWR(3)| |:::| 
 +| |||||||| 
 +|BIT b,r; SET b,r; RES b,r|  2  |CBR(4); OCR(4)| | | | | | 
 +|BIT b,​(HL)| ​ 2  |CBR(4); OCR(4)|MRD(4)| | | | | 
 +|SET b,(HL); RES b,​(HL)| ​ 2  |CBR(4); OCR(4)|MRD(4)|MWR(3)| | | | 
 +|BIT b,​(ii+d)| ​ 4  |CBR(4); CBR(4)|ORD(3)|OCR(5)|MRD(4)| | | 
 +|SET b,​(ii+d);​RES b,​(ii+d)| ​ 4  |CBR(4); CBR(4)|ORD(3)|OCR(5)|MRD(4)|MWR(3)|ii:​ IX или IY| 
 +| |||||||| 
 +|JP nn; JP cc,​nn| ​ 3  |OCR(4)|ORL(3)|ORH(3)| | | | 
 +|JR e|  2  |OCR(4)|ORD(3)|IOP(5)| | | | 
 +|JR C,e; JR Z,e; JR NC,e; JR NZ,e|  2  |OCR(4)|ORD(3)|IOP(5)| | |IOP(5) – при невыполнении условия| 
 +|JP (HL)|  1  |OCR(4)| | | | | | 
 +|JP (ii)|  2  |CBR(4); OCR(4)| | | | |ii: IX или IY| 
 +|DJNZ e|  2  |OCR(5)| | | | |IOP(5), если B≠0| 
 +| |||||||| 
 +|CALL nn|  3  |OCR(4)|ORL(3)|ORH(4);​ SPD|SWH(3); SPD|SWL(3)| | 
 +|CALL cc,​nn| ​ 3  |OCR(4)|ORL(3)|ORH(4);​ SPD|SWH(3); SPD|SWL(3)|cc| 
 +|CALL cc,​nn| ​ 3  |OCR(4)|ORL(3)|ORH(3)| | |cc не выполняется| 
 +| |||||||| 
 +|RET|  1  |OCR(4)|SRL(3);​ SPI|SRH(3); SPI| | | | 
 +|RET cc|  1  |OCR(4)|SRL(3);​ SPI|SRH(3); SPI| | |cc| 
 +| |||||||| 
 +|RET cc|  1  |OCR(4)| | | | |cc не выполняется| 
 +|RETI; RETN|  2  |CBR(4); OCR(4)|SRL(3);​ SPI|SRH(3); SPI| | | | 
 +|RST p|  1  |OCR(5); SPD|SWH(3); SPD|SWL(3)| | | | 
 +| |||||||| 
 +|IN A,​(n)| ​ 2  |OCR(4)|ORD(4)|PRD(4)| | | | 
 +|IN r,(C); INF|  2  |CBR(4); OCR(4)|PRD(4)| | | | | 
 +|INI; IND|  2  |CBR(4); OCR(5)|PRD(4)|MWR(3)| | | | 
 +|INIR; INDR|  2  |CBR(4); OCR(5)|PRD(4)|MWR(3)|IOP(5)| |IOP(5), если B≠0| 
 +| |||||||| 
 +|OUT (n),​A| ​ 2  |OCR(4)|ORD(4)|PWR(4)| | | | 
 +|OUT (C),​r| ​ 2  |CBR(4); OCR(4)|PWR(4)| | | | | 
 +|OUTI; OUTD|  2  |CBR(4); OCR(5)|MRD(3)|PWR(4)| | | | 
 +|OTIR; OTDR|  2  |CBR(4); OCR(5)|MRD(3)|PWR(4)|IOP(5)| |IOP(5), если B≠0| 
 +| |||||||| 
 +|Подтверждение прерывания:​|||||||| 
 +|NMI|  -  |OCR(5); SPD|SWH(3); SPD|SWL(3)| | |См. [[06#​pict_6_4|рис. 6.4]]| 
 +|INT, Режим 0|  -  |INTA(6); SPD|SWH(3); SPD|SWL(3)| | |При команде RST p| 
 +| |  -  |INTA(6)|ORL(3)|ORH(4);​ SPD|SWH(3); SPD|SWL(3)|При команде CALL| 
 +|INT, Режим 1|  -  |INTA(7;) SPD|SWH(3); SPD|SWL(3)| | |RST 38H| 
 +|INT, Режим 2|  -  |INTA(7); SPD|SWH(3); SPD|SWL(3)|MRL(3)|MRH(3)|См. [[06#​pict_6_13|рис. 6.13]]|
  
 Принятые обозначения отражают программную суть происходящих в данном цикле действий. С точки зрения процессов на шинах все они сводятся к машинным циклам,​ рассмотренным в [[#​04|главе 4]]: Принятые обозначения отражают программную суть происходящих в данном цикле действий. С точки зрения процессов на шинах все они сводятся к машинным циклам,​ рассмотренным в [[#​04|главе 4]]:
 |OCR, CBR|цикл извлечения кода операции ([[04#​pict_4_2|рис. 4.2]])| |OCR, CBR|цикл извлечения кода операции ([[04#​pict_4_2|рис. 4.2]])|
-|MRD, MRH, MRL, ORD, ORH, ORL, SRH, SRL|цикл чтения из памяти (рис. 4.4)| +|MRD, MRH, MRL, ORD, ORH, ORL, SRH, SRL|цикл чтения из памяти ([[04#​pict_4_4|рис. 4.4]])| 
-|MWR, MWH, MWL, SWH, SWL|цикл записи в память (рис. 4.4)| +|MWR, MWH, MWL, SWH, SWL|цикл записи в память ([[04#​pict_4_4|рис. 4.4]])| 
-|PRD|цикл ввода (рис. 4.6)| +|PRD|цикл ввода ([[04#​pict_4_6|рис. 4.6]])| 
-|PWR|цикл вывода (рис. 4.6)| +|PWR|цикл вывода ([[04#​pict_4_6|рис. 4.6]])| 
-|INTA|цикл подтверждения маскируемого прерывания (рис 4.9)|+|INTA|цикл подтверждения маскируемого прерывания ([[04#​pict_4_9|рис4.9]])|
  
  
microprocessor_kit_z80-book1/05.1594460549.txt.gz · Последние изменения: 2020-07-11 12:42 — GreyWolf