Команды передачи данных и ввода-вывода Команды передачи данных служат для пересылки данных между следующими устройствами: - регистр – регистр; - регистр – память; - данные, содержащиеся в команде, - регистр; - данные, содержащиеся в команде, - память. Команды передачи данных Могут быть однобайтовыми, двухбайтовыми и трехбайтовыми. Эти команды не оказывают воздействия на флаги условий. Однобайтные MOV R1, R2 –пересылка данных из регистра в регистр. В качестве регистров может быть использован любой из регистров A, B, C, D, E, H, L. R1 ß R2 MOV R, M – пересылка данных из памяти в регистр. (М - ячейка памяти, адрес которой указан в регистровой паре HL). R ß (HL). MOV M, R – пересылка данных из регистра в память. (HL) ß R. Х байтовые MVI R, DATA – пересылка непосредственная. Содержимое второго байта команды пересылается в регистр R. R ß (BYTE 2). MVI M, DATA – пересылка в память непосредственная. (HL) ß (BYTE 2). Х байтовые LXI RP, DATA 16 – непосредственная загрузка регистровой пары. (RH) ß (BYTE3), (RL) ß (BYTE2). LDA ADDR – прямая загрузка А. Cодержимое ЯП, адрес которой указан во втором и третьем байтах команды, загружается в А. A ß [(BYTE3, BYTE2)]. STA ADDR – прямая запись содержимого А в ячейку памяти, адрес которой указан во втором и третьем байтах команды. [(BYTE3, BYTE2)] ß А. Однобайтовые STAX – косвенная загрузка А в память. Содержимое А пересылается в ЯП, адрес которой указан в паре регистров (RP). Может быть указана только пара В и D. (RP) ß A. LDAX – косвенная загрузка А. Содержимое ЯП, адрес которой указан в регистровой паре (RP), пересылается в А. Может быть указана только пара В и D. А ß(RP). Команды ввода-вывода Для обмена данными с процессором внешние устройства имеют на своих входах и выходах регистры, называемые портами ввода-вывода. Оказывают влияние на флаги Х байтовые IN PORT - команда ввода данных предназначена для ввода данных из входного порта в А. Команда двухбайтовая. А ß (PORT) OUT PORT - команда вывода данных предназначена для вывода данных из А в выходной порт. Команда двухбайтовая. (PORT) ß А. Команды работы со стеком Однобайтовые PUSH RP – загрузка в стек содержимого пары регистров PUSH PSW - загрузка в стек слово состояния программы. POP RP – считать из стека содержимое пары регистров. POP PSW - считать из стека слова состояния программы. XTHL – обмен содержимого верхушки стека и содержимого регистров H и L. (L) ↔ (SP) (H) ↔ (SP) + 1 SPHL – пересылка содержимого регистров H и L в указатель стека. (SP) ↔ (H)(L). Команды обработки данных К этим командам относятся команды выполнения арифметических операций и команды выполнения логических операций. 7.1 Арифметические команды Команды этой группы выполняют арифметические операции над данными в регистрах и памяти. Эти команды воздействуют на флаги состояний стандартным образом. Однобайтовые ADD R – команда сложения содержимого А с содержимым регистра. А ß А + R ADD M – команда сложения содержимого А с содержимым ЯП, адрес которой находится в регистровой паре HL. А ß A + (HL) Х байтовые ADI DATA – непосредственное сложение. А ß А + (ВYTE2). Однобайтовые ADC R - сложение содержимого регистра с А с переносом. A ß A + R + (CY) ADС M - сложение содержимого памяти с А переносом.  ACI - сложение константы с А с переносом АßА + (ВYTE2) + (CY) SUB R – команда вычитания содержимого регистра из содержимого А. А ß А - R SUB M – команда вычитания содержимого ЯП из содержимого А. A ß A - (HL) Х байтовые SUI DATA – непосредственное вычитание. А ß А - (ВYTE2). Однобайтовые SBB R – вычитание содержимого регистра и бита переноса. A ß A – R - (CY). SBB M – вычитание содержимого ЯП и бита переноса. A ß A – (HL) – (CY). SBB R - вычитание регистра с заёмом (уменьшаемое меньше вычитаемого). A ß A - R - (CY) SBB М - вычитание памяти с заёмом. А ß А - (HL) - (CY) Х байтовые SBI DATA – непосредственное вычитание с заёмом. A ß A - (BYTE2) – (CY). Однобайтовые INR R – увеличение содержимого регистра на 1. R ß R + 1. INR M – увеличение содержимого памяти на 1. (НL) ß (НL) + 1. DCR R – уменьшение содержимого регистра на 1. R ß R – 1. DCR M – уменьшение содержимого памяти на 1. (HL) ß (HL) – 1. INX RP – увеличение содержимого регистровой пары на 1. [(RH)(RL)] ß[(RH)(RL)] + 1. DCX RP – уменьшение содержимого регистровой пары на 1. [(RH) (RL)] ß [(RH) (RL)] – 1. DAD RP – сложение содержимого пары регистров с содержимым регистров H и L. [(H)(L)] ß [(H)(L)] + [(RH)(RL)]. Команды сложения и вычитания с учётом переносов (заёма) позволяют организовать обработку многобайтовых чисел последовательно по байтам, которые хранятся в смежных ячейках памяти и адресуются, начиная с младшего. 7.2 Логические команды Команды этой группы выполняют поразрядные логические операции над данными, хранящимися в регистрах и ЯП и флагами. Все команды воздействуют на флаги. Однобайтовые ANA R – операция конъюнкция (логическое умножение) над содержимым регистра и А. А ß (А Λ R). ANA M – операция конъюнкция над содержимым ЯП и А. Аß [А Λ (HL)]. Х байтовая ANI DATA - непосредственная операция конъюнкция. А ß (А Λ ВYTE2). Однобайтовые XRA R – регистровая операция сложение по модулю 2 (операция неравнозначности). (А) ß (А R). XRA M – операция сложение по модулю 2 над памятью. . Х байтовая XRI DATA – непосредственная операция сложение по модулю 2. (A)ß [(A) (BYTE2)]. Однобайтовые ORA R – регистровая операция дизъюнкция (логическое сложение). A ß (A V R). ORA M – операция дизъюнкция над памятью. (A)ß [A V (HL)]. Х байтовые ORI DATA – непосредственная операция дизъюнкция. A ß (A V BYTE2). Однобайтовые CMP R – сравнение содержимого регистра с содержимым А. А - R, содержимое А не изменяется. CMP M – сравнение содержимого ЯП с содержимым А. A - (HL), содержимое А не изменяется. Х байтовая CPI DATA – непосредственное сравнение. А – (ВYTE2), содержимое А не изменяется. Однобайтовые CMA – инвертирование А. A ß . RLC - циклический сдвиг содержимого А на один разряд влево. RRC - циклический сдвиг содержимого А на один разряд вправо. Команды управления Команды этой группы предназначены для управления работой МП. EI – разрешить прерывание. DI – запретить прерывание. Однобайтовые HLT – останов выполнения текущей программы до тех пор пока не появится запрос на прерывание от устройств ввода вывода. NOP – пустая операция. Команда используется для организации временных задержек. |