Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Топ:
Методика измерений сопротивления растеканию тока анодного заземления: Анодный заземлитель (анод) – проводник, погруженный в электролитическую среду (грунт, раствор электролита) и подключенный к положительному...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Марксистская теория происхождения государства: По мнению Маркса и Энгельса, в основе развития общества, происходящих в нем изменений лежит...
Интересное:
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Дисциплины:
2019-11-11 | 195 |
5.00
из
|
Заказать работу |
|
|
Описание эмулятора
Эмулятор 8 - разрядного процессора реализован на ЭВМ типа IBM - РСАТ.
При входе в эмулятор открывается окно ПМК КР580ВМ80, в котором изображена структура "стенда".
В верхней части окна (рис.1) указываются режимы работы: "файл", "структурная схема", "система команд", "помощь".
Рис. 1.
Строкой ниже указывается адрес (состояние типы адреса в шестнадцатиричной системе счисления), данные (состояние шины данных в шестнадцатиричной системе счисления).
Далее показано окно, в котором указывается адрес ОЗУ и его содержимое, или номер регистра и его содержимое.
В окне флагов записывается состояние флагов Z, S, Р, С, АС на данный момент выполнения команды процессором, где Z - признак нулевого результата, S - знак, Р - признак четного количества единиц результата, С - признак переноса из старшего разряда, AC - признак дополнительного переноса из старшего разряда младшей тетрады байта.
Для ввода информации используется клавиатура, которая подразделяется на цифровую от 0 до F и режимную SpL, SpH, PcL, PcH, ОЗУ, Сброс ОЗУ, Регистр, Сброс Р e г.
Для ввода информации ОЗУ необходимо нажать кнопку «ОЗУ», затем кнопку «Ввод». После этого ввести в данную ячейку код команды или данные.
Для ввода информации в регистры требуется нажать клавишу «Регистр», клавишу «Ввод», а затем на цифровой клавиатуре произвести ввод данных.
Клавиши SpL, SpH и PcL, PcH позволяют записывать адреса в указатель стека и счетчик команд.
При вводе любой информации необходимо выполнить нажатия "мышкой" на клавишу "ввод".
В правой части "окна" расположены регистры процессора:
А - аккумулятор;
B, C, D, E, H, L - регистры общего назначения (РОН);
|
PC - программный счетчик;
SP - указатель стека.
Указатель стека - указывает вершину стека FFFF (перевернутый стек).
В области окна "выполнение программы" задается режим:
автоматический режим - при нажатии кнопки "автоматический режим" - выполняется программа до команды HLT;
покомандный режим - при нажатии кнопки "покомандный режим" реализуется весь цикл исполнения команды;
потактный режим - при каждом нажатии кнопки "выполнить" осуществляется выполнение одного такта работы процессора.
В правой части окна экрана расположено "окно", в котором указана "Позиция" адресного пространства ОЗУ, в котором производится набор программы: адрес команды, код, ассемблерный код команды. "Позиция" указывает область адресного пространства ОЗУ, в котором прокруткой "А" или "V" можно указывать начало требуемого адресного пространства.
При указании "мышью" позиции "структурная схема" раскрывается следующее окно, в котором показана структурная схема процессора (рис. 2).
Рис. 2.
Структурная схема 8 - разрядного процессора включает АЛУ с входными регистрами ("Аккумулятор", "Буф. регистр 1", "Буф. регистр 2"), "Рег. признаков", "Схема десятичной коррекции'', "Регистр команд", "Деш. команд", "Блок синхронизации и управления", "Регистры временного хранения W и Z", "Регистры общего назначения B, C, D, E, H, L", указатель стека, счетчик команд, схемы инкремента и декремента.
Указанные схемы подключены к внешним шинам адреса и данных через "Буферные регистры" адреса и данных.
Для организации режимов работы, как и в предыдущем окне, в данном расположена клавиатура ввода информации, аналогичная клавиатуре предыдущего окна, и соответствующие режимные клавиши, а также клавиши режима работы: автоматический режим - AT; покомандный режим - КМ; потактный режим - ТК. При потактном режиме можно исследовать выполнение любой команды.
|
При каждом нажатии кнопки "Вып." реализуется очередной такт работы процессора. При этом фиксируется на экране все состояния его регистров, номер такта, номер цикла, состояния управляющих сигналов, регистр состояния и PSW.
Режим работы с клавиатурой соответствует предыдущему окну.
При указании "мышью" в окне "ПМК КР580ВМ80" на позицию. "Система команд", раскрывается окно "Команды" в котором предоставлена таблица (рис. 3) системы команд. Код команды определяется по матрице в 16-ричиой системе счисления по столбцу и строке таблицы, например: MOV В, С - 41 h или Н L Т - 76 h.
Рис. 3.
Система команд процессора.
Команды процессора представлены следующими форматами: однобайтным, двухбайтным и трехбайтным. За одно обращение к памяти выбирается один байт команды и размещается в регистре команд. Если команда имеет 2 или 3 байта, то второй и третий байты записываются в программно недоступные регистры W и Z, которые называются регистрами временного хранения.
В процессоре применяются четыре следующие способа адресации:
- прямая адресация (относится к командам обращение к памяти, причем во втором и третьем байтах команды записывается адрес ОЗУ);
- регистровая адресация (используется для обращения к внутренним регистрам процессора);
- непосредственная адресация (в поле команды размещается операнд);
- регистровая косвенная адресация (в поле команды размешается адрес регистровой пары, в которой записан адрес ОЗУ).
В качестве регистровых пар могут быть использованы пары регистров В-С, D-E, H-L, причем последняя пара H-L - адресует ячейку памяти М, которая называется псевдорегистром.
Система команд процессора включает 5 групп команд:
1) команды пересылок;
2) команды арифметических операций;
3) команды логических операций;
4) команды передачи управления;
5) команды: обращение к стеку, ввода-вывода и управление МП - системой.
Группы команд пересылок.
Эти команды производят обмен между регистрами РОН и ОЗУ.
1. | MOV R1, R2 | передать с регистра на регистр, (R2) → (R1) |
2. | MOV R, M | передать из памяти ОЗУ → РОН, т.е. [HL] → R, (Н) - старший полуадрес ячейки памяти, (L) - младший полуадрес |
3. | MOV М, R | передать в память (РОН) → ОЗУ, т.е. содержимое регистра R записать в ОЗУ по адресу, указанному в регистровой паре HL: (R) → ОЗУ[HL] |
4. | MVI R, data8 | передать непосредственный операнд, в R передается 8 - разрядный операнд, который находится во втором байте команды |
5. | MVI M, data8 | передать в память непосредственный операнд <data> → ОЗУ[HL] |
6. | LXI RP, data16 | загрузить непосредственный 16-разрядный операнд. Команда 3-байтная. Здесь RP = BC, DE, HL в Ri записывается 3-й байт, в Ri + 1 записывается 2-й байт, где Ri - В, D, H Ri +1 - С, Е, L |
7. | LDA addr | загрузить аккумулятор содержимым ячейки памяти адреса addr; команда трехбайтная |
8. | STA addr | запомнить содержимое аккумулятора в ОЗУ по <addr>, т.е. (A) → ОЗУ[<addr>], где <addr> = байт3, байт2 команды. |
9. | LHLD addr | загрузить регистры Н и L операндом из ОЗУ по <addr>; команда выполняется следующим образом: 1 этап: ОЗУ[<addr>] → L. 2 этап: инкремент адреса <addr> + 1. 3 этап: ОЗУ[<addr> + 1] → H |
10. | SHLD addr | запомнить содержимое регистров Н и L в ОЗУ по адресу addr; команда выполняется следующим образом: 1 этап: (L) → ОЗУ [<addr>]. 2 этап: инкремент адреса <addr> + 1. 3 этап: (H) → ОЗУ [<addr> +1]. |
11. | LDAX RP | загрузить А с косвенной адресацией, т.е. из ОЗУ, адрес ячейки которого указан в регистровой паре (BC – для LDAX B, DE – для LDAX D), прочитать операнд и передать его в аккумулятор |
|
Группа команд арифметических операций.
Эти команды выполняют арифметические операции и поразрядные булевы операции над данными, размещенными в регистрах РОН и в памяти. Они вырабатывают признаки, которые поступают в регистр признаков. Эти признаки еще называются флажками. Сложение и вычитание делаются в дополнительном коде.
1. | ADD R | сложить с регистром (R) + (A) → А |
2. | ADD M | сложить с памятью (A) + ОЗУ[HL] → А |
3. | ADI data8 | сложить непосредственно (A) + <data> → A, т.е. сложить содержимое аккумулятора со вторым байтом команды, результат записать в аккумулятор |
4. | ADC R | сложить с регистром и с битом переноса (A) + (R) + C → А |
5. | ADC М | сложить с памятью и с битом переноса (A) + ОЗУ[HL] + C → A |
6. | ACI data8 | сложить с непосредственным операндом и битом переноса (A) + <data> + C → A |
7. | SUB R | вычесть содержимое регистра РОН: (A) - (R) → A |
8. | SUB М | вычесть содержимое памяти: (A) - ОЗУ[HL] → A |
9. | SUI data8 | вычесть из A непосредственный операнд: (A) - <data> → A |
10. | SBB R | вычесть из A содержимое регистра с займом (c учетом флага переноса) (A) - (R) - C → А |
11. | SBB M | вычесть из A содержимое памяти с займом (c учетом флага переноса) (A) – ОЗУ[HL] - C → A |
12. | SBI data8 | вычесть из A непосредственный операнд с займом (A) - <data> - С → А |
13. | INR R | увеличить на "1" содержимое регистра (R) + 1 → R |
14. | INR M | увеличить на "1" содержимое памяти по адресу, указанному в HL: ОЗУ[HL] + 1 → ОЗУ[HL] |
15. | DCR R | уменьшить на "1" содержимое регистра (R) - 1 → R |
16. | DCR M | уменьшить на "1" содержимое памяти по адресу, указанному в HL: ОЗУ[HL] - 1 → ОЗУ[HL] |
17. | INX RP | Увеличить на "1" содержимое регистровой пары: RP + 1 → RP; RP: BC для INX B, DE для INX D, HL для INX H. |
18. | DAD RP | сложить содержимое регистров HL, RP и результат записать в регистровую пару HL: (HL) + (RP) → (HL); RP: BC для DAD B, DE для DAD D, HL для DAD H. |
19. | DAA | Выполнить двоично - десятичную коррекцию содержимого аккумулятора; десятичная операция выполняется по правилам десятичной арифметики. |
|
Примечание. Команды 13-17 используются для организации счетчиков циклов в программах.
Группа команд логических операций.
1. | ANA R | логическая "И" с A и регистром РОН; (A) & (R) → А, С:=0, АС:=0. Команда используется для выделения части слова: 00110111 & 00001111 = 00000111 |
2. | ANA M | логическая "И" с A и памятью; ОЗУ[HL] & (A) → А, С:=0, АС:=0 |
3. | ANI data8 | логическая "И" с A и непосредственным операндом; <data> & <R> → А, С:=0, АС:=0. |
4. | XRA R | сложение по mod2 с A и регистром: (А) mod2 (R) → А |
5. | XRA М | сложить по mod2 содержимое А с содержимым памяти по адресу HL: ОЗУ[HL] mod2 (A) → А |
6. | XRI data8 | сложить по mod2 содержимое А с непосредственным операндом: (A) mod2 <data> → А |
7. | ORA R | "ИЛИ" с A и регистром: (A) v (R) → А, С:=0, АС:=0 |
8. | ORA M | "ИЛИ" с A и памятью: ОЗУ[HL] v (A) → А, С:=0, АС:=0 |
9. | ORI data8 | "ИЛИ" с A и непосредственным операндом: (A) v <data> → А, С:=0, АС:=0 |
10. | CMP R | сравнить A с регистром. Сравнение делается через вычитание (A) - (R), результат в А не записывается, но регистр признаков устанавливается в соответствии с результатом вычитания: если (А) = (К), тo Z:=l, если (А) ≠ (К), то S:=1, иначе Z:=0, S:=0 |
11. | СМР М | сравнение A с памятью: (А) – ОЗУ[HL] |
12. | CPI data8 | сравнение A с непосредственным операндом (A) - <data>. В остальном – аналогично команде СМР R. |
13. | RLC | циклический сдвиг влево A. Все сдвиги делаются только над содержимым А. Сдвиг выполняется только на один разряд. Сдвиг на n-разрядов можно организовать только программно). А(n+1) А(n) (A0) (A7) (C) (A7) |
14. | RRC | Циклический сдвиг вправо A: А(n+1) → А(n) (A0) → (A7) (C) → (A7) |
15. | RAL | сдвиг A влево через флаг переноса А(n+1) А(n) (A0) (C) (C) (A7) |
16. | RAR | сдвиг A вправо через флаг переноса А(n+1) → А(n) (C) → (A7) (A0) → (C) |
17. | STS | Установить в единицу флаг переноса: 1 → С. |
18. | CMC | инвертировать содержимое флага переноса ┐С → С. |
19. | СМА | инвертировать содержимое аккумулятора ┐(А) → А. |
Примечание: команды 1- 3 используются для выделения частей машинных слов.
|
Группа команд передачи управления.
Данная группа команд образует условные, безусловные переходы и обращения к подпрограммам.
1. | JMP addr | безусловный переход по адресу, указанному во втором и третьем байтах команды |
2. | JC addr | условный переход по единичному значению признака переноса С; если условие выполняется, то адрес перехода записывается в счетчик команд (СК), иначе содержимое СК увеличивается на три |
3. | JNC addr | условный переход по нулевому значению признака переноса С. |
4. | JZ addr | условный переход по единичному значению признака результата. |
5. | JNZ addr | условный переход по нулевому признаку Z результата |
6. | JP addr | условный переход по положительному значению результата |
7. | JM addr | условный переход по отрицательному значению результата |
8. | JPE addr | условный переход по четности кода результата |
9. | JPO addr | условный переход по нечетности кода результата |
10. | CALL addr | безусловный переход к подпрограмме; содержимое СК побайтно загружается в стек, а адрес <addr>, указанный в команде, передается на счетчик команд; указатель стека (УС) перед каждой загрузкой уменьшается на 1. |
11. | RET | возврат из подпрограммы; команда ставится в конце подпрограммы и обеспечивает чтение из стека и загрузку побайтно адреса возврата в счетчик команд; после каждого обращения к стеку УС увеличивается на "1". |
Группа команд обращения к стеку, ввода, вывода, управления МП системой:
1. | PUSH RP | записать в стек содержимое регистровой пары (для BC – PUSH B, для DE – PUSH D, для HL – PUSH H); команда выполняется следующим образом: а) УС уменьшается на "1"; б) (R) → OЗУ [УС-1]; в) УС уменьшается на "1"; г) (Р) → ОЗУ [УС-2]. |
2. | PUSH PSW | поместить в стек словосостояния процессора, которое включает содержимое А и PSW. Команда выполняется следующим образом: а) УС уменьшается на "1"; б) (А) записывается в ОЗУ по адресу [УС-1]; в) УС уменьшается на "1"; г) (PSW) записывается в ОЗУ по адресу [УС-2]. |
3. | POP RP | загрузка регистровой пары из стека, команда выполняется следующим образом: а) из ОЗУ по адресу УС читается слово и загружается в регистр Р, указатель стека увеличивается на "1"; б) из ОЗУ по адресу УС+1 читается слово и загружается в регистр R, указатель стека увеличивается на "1". |
4. | POP PSW | загрузка аккумулятора и регистра признаков из стека, команда выполняется следующим образом: а) из ОЗУ по адресу [УС] читается слово и загружается в PSW, указатель стека увеличивается на "1"; б) из ОЗУ по адресу [УС+1] читается слово и загружается в А, указатель стека увеличивается на "1". |
5. | XTHL | поменять местами содержимое стека и регистровой пары HL, команда выполняется следующим образом: а) меняется местами содержимое регистра Н и ячейки ОЗУ по адресу [УС], затем УС увеличивается на "1"; б) меняется местами содержимое регистра Н и ячейки ОЗУ по адресу [УС+1], затем УС увеличивается на "1". Обмен производится через регистры Z и W. |
6. | SPHL | передать содержимое регистровой пары HL в счетчик команд: (HL) → СК. |
7. | IN port | команда ввода; во втором байте указан адрес порта. |
8. | OUT port | команда вывода; во втором байте указан адрес порта. |
9. | HLT | команда останова |
10. | NОР | пустая команда; после ее выборки счетчик команд автоматически увеличивается на "1" |
Длительность выполнения команды зависит от типа и формата команды. Самая короткая команда может быть выполнена за 1 цикл и содержать до 5 тактов. Самая длинная команда может выполняться за 5 циклов, имея по 5 тактов в каждом цикле.
В окне команд (рис. 3) можно получить "помощь" по назначению команды и правилам ее выполнения, указав эту команду "мышкой" и щелкнув ее 2 раза левой кнопкой.
Формат данных
Процессор обрабатывает двоичные и двоично-десятичные числа, представленные в следующих форматах: целое двоичное число без знака, целое двоичное число со знаком, двоично-десятичное число.
Нумерация разрядов справа налево, знак занимает 8 - разряд.
Приложение 1: Помощь по работе с эмулятором МП КР580ВМ80
Функциональные клавиши
1. Кнопка Сброс ОЗУ – предназначена для обнуления содержимого всего пространства памяти МП.
2. Кнопка Сброс Рег – необходима для обнуления содержимого всего регистров и флагов МП.
3. Кнопки Автоматический режим, Покомандный режим, Потактовый режим – предназначены для включения одного из трех режимов выполнения программ: автоматически, по одной команде, и режим выполнения по тактам команды.
4. Кнопка Выполнить – предназначена для выполнения программ пользователя в одном из трех режимов.
Цифровая клавиатура
1. Кнопки 0 – F – предназначены для ввода 16-ричных чисел.
2. Кнопка Забой – отменяет ошибочный ввод информации.
3. Кнопка Ввод – предназначена для записи информации в регистры МП или ячейки памяти, либо изменение адресов в сторону увеличения.
Приложение 2: Ошибки эмулятора МП КР580ВМ80
- при появлении сообщения “неопределенная команда” программа входит в состояние зависания, при котором необходимо уничтожить процесс;
- сохранять программу нужно через главное меню [Файл \ Сохранить как], опция [Файл \ Сохранить] не работает.
- для возможности работы программы (в покомандном, потактовом режимах) в теле программы должна отсутствовать команда HLT.
- команда CMP M не работает, ее необходимо избегать.
- в команде JMP [адрес] в начале необходимо написать старший байт адреса, а потом младший (в этом заключается ошибка), к примеру для перехода по адресу 8077, команду необходимо закодировать как C 3, 80, 77.
- для перехода в начало программы для отладки необходимо:
1) нажать на кнопку “ОЗУ”
2) ввести адрес начала программы в поле ввода
3) выбрать режим, к примеру покомандный.
4) нажимать на кнопку “Выполнить”, выполнять каждую команду.
5) для быстрого перехода к концу программы (ее выполнения) необходимо:
а) передать фокус на кнопку “Выполнить”
б) нажать на кнопку Enter, удерживая ее, анализируя состояние регистров дойти до конца.
Описание эмулятора
Эмулятор 8 - разрядного процессора реализован на ЭВМ типа IBM - РСАТ.
При входе в эмулятор открывается окно ПМК КР580ВМ80, в котором изображена структура "стенда".
В верхней части окна (рис.1) указываются режимы работы: "файл", "структурная схема", "система команд", "помощь".
Рис. 1.
Строкой ниже указывается адрес (состояние типы адреса в шестнадцатиричной системе счисления), данные (состояние шины данных в шестнадцатиричной системе счисления).
Далее показано окно, в котором указывается адрес ОЗУ и его содержимое, или номер регистра и его содержимое.
В окне флагов записывается состояние флагов Z, S, Р, С, АС на данный момент выполнения команды процессором, где Z - признак нулевого результата, S - знак, Р - признак четного количества единиц результата, С - признак переноса из старшего разряда, AC - признак дополнительного переноса из старшего разряда младшей тетрады байта.
Для ввода информации используется клавиатура, которая подразделяется на цифровую от 0 до F и режимную SpL, SpH, PcL, PcH, ОЗУ, Сброс ОЗУ, Регистр, Сброс Р e г.
Для ввода информации ОЗУ необходимо нажать кнопку «ОЗУ», затем кнопку «Ввод». После этого ввести в данную ячейку код команды или данные.
Для ввода информации в регистры требуется нажать клавишу «Регистр», клавишу «Ввод», а затем на цифровой клавиатуре произвести ввод данных.
Клавиши SpL, SpH и PcL, PcH позволяют записывать адреса в указатель стека и счетчик команд.
При вводе любой информации необходимо выполнить нажатия "мышкой" на клавишу "ввод".
В правой части "окна" расположены регистры процессора:
А - аккумулятор;
B, C, D, E, H, L - регистры общего назначения (РОН);
PC - программный счетчик;
SP - указатель стека.
Указатель стека - указывает вершину стека FFFF (перевернутый стек).
В области окна "выполнение программы" задается режим:
автоматический режим - при нажатии кнопки "автоматический режим" - выполняется программа до команды HLT;
покомандный режим - при нажатии кнопки "покомандный режим" реализуется весь цикл исполнения команды;
потактный режим - при каждом нажатии кнопки "выполнить" осуществляется выполнение одного такта работы процессора.
В правой части окна экрана расположено "окно", в котором указана "Позиция" адресного пространства ОЗУ, в котором производится набор программы: адрес команды, код, ассемблерный код команды. "Позиция" указывает область адресного пространства ОЗУ, в котором прокруткой "А" или "V" можно указывать начало требуемого адресного пространства.
При указании "мышью" позиции "структурная схема" раскрывается следующее окно, в котором показана структурная схема процессора (рис. 2).
Рис. 2.
Структурная схема 8 - разрядного процессора включает АЛУ с входными регистрами ("Аккумулятор", "Буф. регистр 1", "Буф. регистр 2"), "Рег. признаков", "Схема десятичной коррекции'', "Регистр команд", "Деш. команд", "Блок синхронизации и управления", "Регистры временного хранения W и Z", "Регистры общего назначения B, C, D, E, H, L", указатель стека, счетчик команд, схемы инкремента и декремента.
Указанные схемы подключены к внешним шинам адреса и данных через "Буферные регистры" адреса и данных.
Для организации режимов работы, как и в предыдущем окне, в данном расположена клавиатура ввода информации, аналогичная клавиатуре предыдущего окна, и соответствующие режимные клавиши, а также клавиши режима работы: автоматический режим - AT; покомандный режим - КМ; потактный режим - ТК. При потактном режиме можно исследовать выполнение любой команды.
При каждом нажатии кнопки "Вып." реализуется очередной такт работы процессора. При этом фиксируется на экране все состояния его регистров, номер такта, номер цикла, состояния управляющих сигналов, регистр состояния и PSW.
Режим работы с клавиатурой соответствует предыдущему окну.
При указании "мышью" в окне "ПМК КР580ВМ80" на позицию. "Система команд", раскрывается окно "Команды" в котором предоставлена таблица (рис. 3) системы команд. Код команды определяется по матрице в 16-ричиой системе счисления по столбцу и строке таблицы, например: MOV В, С - 41 h или Н L Т - 76 h.
Рис. 3.
Система команд процессора.
Команды процессора представлены следующими форматами: однобайтным, двухбайтным и трехбайтным. За одно обращение к памяти выбирается один байт команды и размещается в регистре команд. Если команда имеет 2 или 3 байта, то второй и третий байты записываются в программно недоступные регистры W и Z, которые называются регистрами временного хранения.
В процессоре применяются четыре следующие способа адресации:
- прямая адресация (относится к командам обращение к памяти, причем во втором и третьем байтах команды записывается адрес ОЗУ);
- регистровая адресация (используется для обращения к внутренним регистрам процессора);
- непосредственная адресация (в поле команды размещается операнд);
- регистровая косвенная адресация (в поле команды размешается адрес регистровой пары, в которой записан адрес ОЗУ).
В качестве регистровых пар могут быть использованы пары регистров В-С, D-E, H-L, причем последняя пара H-L - адресует ячейку памяти М, которая называется псевдорегистром.
Система команд процессора включает 5 групп команд:
1) команды пересылок;
2) команды арифметических операций;
3) команды логических операций;
4) команды передачи управления;
5) команды: обращение к стеку, ввода-вывода и управление МП - системой.
Группы команд пересылок.
Эти команды производят обмен между регистрами РОН и ОЗУ.
1. | MOV R1, R2 | передать с регистра на регистр, (R2) → (R1) |
2. | MOV R, M | передать из памяти ОЗУ → РОН, т.е. [HL] → R, (Н) - старший полуадрес ячейки памяти, (L) - младший полуадрес |
3. | MOV М, R | передать в память (РОН) → ОЗУ, т.е. содержимое регистра R записать в ОЗУ по адресу, указанному в регистровой паре HL: (R) → ОЗУ[HL] |
4. | MVI R, data8 | передать непосредственный операнд, в R передается 8 - разрядный операнд, который находится во втором байте команды |
5. | MVI M, data8 | передать в память непосредственный операнд <data> → ОЗУ[HL] |
6. | LXI RP, data16 | загрузить непосредственный 16-разрядный операнд. Команда 3-байтная. Здесь RP = BC, DE, HL в Ri записывается 3-й байт, в Ri + 1 записывается 2-й байт, где Ri - В, D, H Ri +1 - С, Е, L |
7. | LDA addr | загрузить аккумулятор содержимым ячейки памяти адреса addr; команда трехбайтная |
8. | STA addr | запомнить содержимое аккумулятора в ОЗУ по <addr>, т.е. (A) → ОЗУ[<addr>], где <addr> = байт3, байт2 команды. |
9. | LHLD addr | загрузить регистры Н и L операндом из ОЗУ по <addr>; команда выполняется следующим образом: 1 этап: ОЗУ[<addr>] → L. 2 этап: инкремент адреса <addr> + 1. 3 этап: ОЗУ[<addr> + 1] → H |
10. | SHLD addr | запомнить содержимое регистров Н и L в ОЗУ по адресу addr; команда выполняется следующим образом: 1 этап: (L) → ОЗУ [<addr>]. 2 этап: инкремент адреса <addr> + 1. 3 этап: (H) → ОЗУ [<addr> +1]. |
11. | LDAX RP | загрузить А с косвенной адресацией, т.е. из ОЗУ, адрес ячейки которого указан в регистровой паре (BC – для LDAX B, DE – для LDAX D), прочитать операнд и передать его в аккумулятор |
Группа команд арифметических операций.
Эти команды выполняют арифметические операции и поразрядные булевы операции над данными, размещенными в регистрах РОН и в памяти. Они вырабатывают признаки, которые поступают в регистр признаков. Эти признаки еще называются флажками. Сложение и вычитание делаются в дополнительном коде.
1. | ADD R | сложить с регистром (R) + (A) → А |
2. | ADD M | сложить с памятью (A) + ОЗУ[HL] → А |
3. | ADI data8 | сложить непосредственно (A) + <data> → A, т.е. сложить содержимое аккумулятора со вторым байтом команды, результат записать в аккумулятор |
4. | ADC R | сложить с регистром и с битом переноса (A) + (R) + C → А |
5. | ADC М | сложить с памятью и с битом переноса (A) + ОЗУ[HL] + C → A |
6. | ACI data8 | сложить с непосредственным операндом и битом переноса (A) + <data> + C → A |
7. | SUB R | вычесть содержимое регистра РОН: (A) - (R) → A |
8. | SUB М | вычесть содержимое памяти: (A) - ОЗУ[HL] → A |
9. | SUI data8 | вычесть из A непосредственный операнд: (A) - <data> → A |
10. | SBB R | вычесть из A содержимое регистра с займом (c учетом флага переноса) (A) - (R) - C → А |
11. | SBB M | вычесть из A содержимое памяти с займом (c учетом флага переноса) (A) – ОЗУ[HL] - C → A |
12. | SBI data8 | вычесть из A непосредственный операнд с займом (A) - <data> - С → А |
13. | INR R | увеличить на "1" содержимое регистра (R) + 1 → R |
14. | INR M | увеличить на "1" содержимое памяти по адресу, указанному в HL: ОЗУ[HL] + 1 → ОЗУ[HL] |
15. | DCR R | уменьшить на "1" содержимое регистра (R) - 1 → R |
16. | DCR M | уменьшить на "1" содержимое памяти по адресу, указанному в HL: ОЗУ[HL] - 1 → ОЗУ[HL] |
17. | INX RP | Увеличить на "1" содержимое регистровой пары: RP + 1 → RP; RP: BC для INX B, DE для INX D, HL для INX H. |
18. | DAD RP | сложить содержимое регистров HL, RP и результат записать в регистровую пару HL: (HL) + (RP) → (HL); RP: BC для DAD B, DE для DAD D, HL для DAD H. |
19. | DAA | Выполнить двоично - десятичную коррекцию содержимого аккумулятора; десятичная операция выполняется по правилам десятичной арифметики. |
Примечание. Команды 13-17 используются для организации счетчиков циклов в программах.
Группа команд логических операций.
1. | ANA R | логическая "И" с A и регистром РОН; (A) & (R) → А, С:=0, АС:=0. Команда используется для выделения части слова: 00110111 & 00001111 = 00000111 |
2. | ANA M | логическая "И" с A и памятью; ОЗУ[HL] & (A) → А, С:=0, АС:=0 |
3. | ANI data8 | логическая "И" с A и непосредственным операндом; <data> & <R> → А, С:=0, АС:=0. |
4. | XRA R | сложение по mod2 с A и регистром: (А) mod2 (R) → А |
5. | XRA М | сложить по mod2 содержимое А с содержимым памяти по адресу HL: ОЗУ[HL] mod2 (A) → А |
6. | XRI data8 | сложить по mod2 содержимое А с непосредственным операндом: (A) mod2 <data> → А |
7. | ORA R | "ИЛИ" с A и регистром: (A) v (R) → А, С:=0, АС:=0 |
8. | ORA M | "ИЛИ" с A и памятью: ОЗУ[HL] v (A) → А, С:=0, АС:=0 |
9. | ORI data8 | "ИЛИ" с A и непосредственным операндом: (A) v <data> → А, С:=0, АС:=0 |
10. | CMP R | сравнить A с регистром. Сравнение делается через вычитание (A) - (R), результат в А не записывается, но регистр признаков устанавливается в соответствии с результатом вычитания: если (А) = (К), тo Z:=l, если (А) ≠ (К), то S:=1, иначе Z:=0, S:=0 |
11. | СМР М | сравнение A с памятью: (А) – ОЗУ[HL] |
12. | CPI data8 | сравнение A с непосредственным операндом (A) - <data>. В остальном – аналогично команде СМР R. |
13. | RLC | циклический сдвиг влево A. Все сдвиги делаются только над содержимым А. Сдвиг выполняется только на один разряд. Сдвиг на n-разрядов можно организовать только программно). А(n+1) А(n) (A0) (A7) (C) (A7) |
14. | RRC | Циклический сдвиг вправо A: А(n+1) → А(n) (A0) → (A7) (C) → (A7) |
15. | RAL | сдвиг A влево через флаг переноса А(n+1) А(n) (A0) (C) (C) (A7) |
16. | RAR | сдвиг A вправо через флаг переноса А(n+1) → А(n) (C) → (A7) (A0) → (C) |
17. | STS | Установить в единицу флаг переноса: 1 → С. |
18. | CMC | инвертировать содержимое флага переноса ┐С → С. |
19. | СМА | инвертировать содержимое аккумулятора ┐(А) → А. |
Примечание: команды 1- 3 используются для выделения частей машинных слов.
Группа команд передачи управления.
Данная группа команд образует условные, безусловные переходы и обращения к подпрограммам.
1. | JMP addr | безусловный переход по адресу, указанному во втором и третьем байтах команды |
2. | JC addr | условный переход по единичному значению признака переноса С; если условие выполняется, то адрес перехода записывается в счетчик команд (СК), иначе содержимое СК увеличивается на три |
3. | JNC addr | условный переход по нулевому значению признака переноса С. |
4. | JZ addr | условный переход по единичному значению признака результата. |
5. | JNZ addr | условный переход по нулевому признаку Z результата |
6. | JP addr | условный переход по положительному значению результата |
7. | JM addr | условный переход по отрицательному значению результата |
8. | JPE addr | условный переход по четности кода результата |
9. | JPO addr | условный переход по нечетности кода результата |
10. | CALL addr | безусловный переход к подпрограмме; содержимое СК побайтно загружается в стек, а адрес <addr>, указанный в команде, передается на счетчик команд; указатель стека (УС) перед каждой загрузкой уменьшается на 1. |
11. | RET | возврат из подпрограммы; команда ставится в конце подпрограммы и обеспечивает чтение из стека и загрузку побайтно адреса возврата в счетчик команд; после каждого обращения к стеку УС увеличивается на "1". |
Группа команд обращения к стеку, ввода, вывода, управления МП системой:
1. | PUSH RP | записать в стек содержимое регистровой пары (для BC – PUSH B, для DE – PUSH D, для HL – PUSH H); команда выполняется следующим образом: а) УС уменьшается на "1"; б) (R) → OЗУ [УС-1]; в) УС уменьшается на "1"; г) (Р) → ОЗУ [УС-2]. | ||||
2. | PUSH PSW | поместить в стек словосостояния процессора, которое включает содержимое А и PSW. Команда выполняется следующим образом: а) УС уменьшается на "1"; б) (А) записывается в ОЗУ по адресу [УС-1]; в) УС уменьшается на "1"; г) (PSW) записывается в ОЗУ по адресу [УС-2]. | ||||
3. | POP RP | загрузка регистровой пары из стека, команда выполняется следующим образом: а) из ОЗУ по адресу УС читается слово и загружается в регистр Р, указатель стека увеличивается на "1"; б) из ОЗУ по адресу УС+1 читается слово и загружается в регистр R, указатель стека увеличивается на "1". | ||||
4. | POP PSW | загрузка аккумулятора и регистра признаков из стека, команда выполняется следующим образом: а) из ОЗУ по адресу [УС] читается слово и загружается в PSW, указатель стека увеличивается на "1"; б) из ОЗУ по адресу [УС+1] читается слово и загружается в А, указатель стека увеличивается на "1". | ||||
5. | XTHL | поменять местами содержимое стека и регистровой пары HL, команда выполняется следующим образом:
а) меняется
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается... Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности... Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости... История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м... © cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста. |