Главная страница
Навигация по странице:

  • Индикатор адреса и данных.

  • Ввод команд и данных в ОЗУ.

  • Чтение и запись информации в регистры

  • Чтение содержимого ОЗУ или ППЗУ

  • Индикация ошибок

  • Отличия программы “Эмулятор МикроЭВМ-580” от устройства Электроника-580

  • Практическая работа №20. Ознакомление с учебной микро-ЭВМ «Электроника- 580»(этапы проектирования) Цель работы

  • Теоретическая часть.

  • Методические указания для практических занятий по дисциплине мдк. 02. 01


    Скачать 7.37 Mb.
    НазваниеМетодические указания для практических занятий по дисциплине мдк. 02. 01
    Дата09.09.2022
    Размер7.37 Mb.
    Формат файлаpdf
    Имя файлаMetod_Mikroprocessornye-sistemy_PZ_09.02.01_2020.pdf
    ТипМетодические указания
    #669073
    страница15 из 43
    1   ...   11   12   13   14   15   16   17   18   ...   43
    (абстрактное представление)
    Цель работы: изучить инструкцию по эксплуатации УОУ "Электроника-580"и работу программы-эмулятора «МикроЭВМ-580».
    Теоретическая часть.
    Для работы с микро-ЭВМ используется 25 клавиш, из которых верхний ряд и правый столбец являются командными. Нажатие командных клавиш способствует вызову программы
    Монитор и выполнению соответствующих действий УОУ. Остальные 16 клавиш (клавиши данных) служат для ввода в УОУ шестнадцатеричных цифр (0,...,F). Назначение клавиш следующее:
    RST (сброс) - способствует установке УОУ в исходное состояние;
    ADDR (адрес) - устанавливает УОУ в режим задания адреса ячейки памяти;
    MEM (память) - служит для перевода УОУ в режим записи данных в ячейку памяти;
    NEXT (следующий) - увеличивает на 1 адрес, инициируемый на дисплее ячейки памяти, или обращается к следующему регистру УУ;
    CLR (восстановление) - восстанавливает начальное значение адреса или данных, если после их ввода не задействовались командные клавиши;
    REG (регистр) - инициирует содержимое регистра УУ;
    STEP (шаг) - осуществляет пошаговый (ручной) режим выполнения команд;
    RUN (прогон) - запускает выполнение программы в автоматическом режиме до команды останова либо до введенной контрольной точки; b7 b6 b5 b4 b3 b2 b1 b0

    106
    BRK (контрольная точка) - служит для задания адреса контрольной точки в программе.
    С учетом включения командных клавиш клавиши данных могут использоваться для задания имен регистров и регистровых пар микропроцессора:
    A,B,C,D,E,8/H,9/L,F - для обозначения регистров A-:-L и F;
    I/P - для указания стека SP;
    2/T - для обозначения содержимого вершины стека SР.
    Индикатор адреса и данных.
    Индикатор адреса и данных состоит из восьми разрядов. Каждый разряд является семисегментной ячейкой на светодиодах и отображает цифры 0-9; буквы A,C,E,F и буквы B,D,R.
    При отображении ячейки памяти в разрядах 1-4 индикатора в шестнадцатеричной системе счисления высвечивается адрес, в разрядах 7,8 - данные, хранящиеся по этому адресу. В других случаях в разрядах 1-:-4 отображается, например, содержимое счетчика команд, а в разрядах 7,8 - очередная команда либо содержимое регистра микропроцессора. В последнем случае в пятом разряде инициируется наименование регистра. Например, при чтении содержимого ячейки памяти В9 (16) с адресом 817А (16) мы увидим на индикаторе 817А В9, где 817А отображает состояние счетчика команд, а В9 - содержимое ячейки при этом состоянии. Если при этом состоянии необходимо инициировать содержимое какого-либо регистра, то на индикаторе высвечивается 817А В-А6.
    Ввод команд и данных в ОЗУ.
    Программа размещается в рабочей незанятой области ОЗУ (рисунке 3) и содержит последовательность закодированных в двоичной системе команд. Каждая программа имеет начальную и конечную команды.
    Последовательность команд внутри программы определяется естественным порядком.
    Поэтому для записи программы нужно определить ее объем в ячейках памяти и выбрать адрес начальной команды. При свободной ОЗУ программу размещают с первой рабочей ячейки ОЗУ, т.е. с адреса 8000
    (16)
    ; если эта ячейка занята другой программой или данными, выбирают другую свободную область ОЗУ и начинают запись программы с ее начального адреса.
    Если программа может быть размещена в любой области ОЗУ, то данные непременно размещаются по адресам, указанным в программе.
    Рассмотрим ввод программы и данных на примере. Пусть фрагмент программы состоит из
    3-х последовательных команд CNZ 8200, SBB D, MOV A, M, закодированных C4, 00, 82, 9A, 7E.
    Причем для реализации первой команды требуется отвести ячейку 8200. Следовательно, ячейка под номером 8200
    (16)
    будет занята и программу надо разместить в свободной области. Выберем область памяти для фрагмента программы начиная с ячейки памяти под номером 820А
    (16)
    и введем последовательно команды в ОЗУ, для чего подключим монитор в режим записи символов в ОЗУ. Такой режим обеспечивается нажатием клавиши ADDR (фиксация адреса ячейки, в которой будет производиться запись). Так как адрес ячейки 820А, то последовательно нажимаем клавиши 8,2,0,А. При этом после каждого нажатия этих клавиш на индикаторе в разрядах 1-:-4 будет высвечиваться ххх8, хх82, х820, 820А, где х - произвольный символ предыдущего состояния индикатора. Таким образом, монитор подключился к ячейке памяти 820А, однако, чтобы происходила запись в эту ячейку, необходимо нажатием клавиши МЕМ включить режим записи. При срабатывании этого режима в шестом слева индикаторе дисплея высвечивается символ "," (запятая). Теперь можно первый байт команды CNZ 8200 вводить в ячейку 820А.
    Введем его нажатием клавиш С,4. При этом на индикаторе дисплея разрядах 7,8 последовательно появится информация хС, С4. Таким образом, ячейка 820А занимается КОП команды, которая должна быть продолжена в последующих двух ячейках (команда трехбайтная). Для повышения скорости ввода в мониторе предусмотрена подпрограмма автоматического подключения следующей (предыдущей) ячейки памяти нажатием клавиши NEXT или подключения предыдущей ячейки памяти нажатием клавиши МЕМ. При этом в режиме записи информации в ячейку должна обязательно быть запятая в 6-м разряде индикатора.
    Нажмем клавишу NEXT, счетчик адреса увеличится на единицу; и на индикаторе дисплея в разрядах 1-:-4 появится 820В. Теперь введем второй байт команды нажатием клавиши 0,0. На индикаторе в двух разрядах справа последовательно появится х0, 00. Нажмем вновь NEXT, в

    107
    разрядах 1-:-4 индикатора отобразится 820С. Введем 8,2. Затем аналогично введем коды 9А и 7F в ячейки 820D и 820Е соответственно. Таким образом , наша программа разместилась в ячейках
    820А-820Е. Содержимое программы можно проверить многократным нажатием клавиши МЕМ, при этом ячейки будут просматриваться в обратном порядке. При наличии неправильного кода в ячейке и "," в 6-м разряде индикатора код можно исправить путем ввода необходимых символов.
    Ввод данных выполняется аналогично записи команд программы, только данные размещаются по адресам, указанным в программе. В нашем случае программа работает с операндом по адресу 8200. Нажимаем клавишу ADDR, клавиши 8,2,0,0, клавишу МЕМ и вводим число в шестнадцатеричной системе счисления.
    Если при вводе данных или команд допущена ошибка, ее можно исправить повторным правильным нажатием клавиш. При этом в ячейке останется информация, отображаемая на дисплее, соответствующая нажатию двух последних клавиш. Нажатие клавиши CLR восстанавливает в ячейке содержимое первоначальной записи, если другие командные клавиши не нажимались.
    При попытке ввести информацию в ячейку без предварительного нажатия клавиши МЕМ, а также при адресе ячейки ППЗУ либо нерабочей ячейки ОЗУ на дисплее отображается сигнал ошибки "E r r".
    Чтение и запись информации в регистры
    Для записи данных в регистры микропроцессора необходимо нажать последовательно клавиши REG и Ri, где Ri - клавиша обозначения регистра.
    После нажатия клавиш в разряде 5-го индикатора отобразится имя регистра, а в разрядах
    7,8 - его содержимое (осуществляется режим чтения). Пусть необходимо осуществить запись информации в аккумулятор, например, рассмотрим число А8
    (16)
    . Нажимаем клавишу REG , затем клавишу А, при этом на дисплее отобразится REG А-хх. Нажимаем клавишу А, затем 8, на экране последовательно инициируется REG А-хА, REG А-А8. Нажатие клавиши NEXT устанавливает адрес следующего регистра. При этом в регистре с новым именем можно прочитать или изменить содержимое нажатием клавиш данных.
    При чтении содержимого регистровой пары надо нажать последовательно три клавиши
    ADDR, RP, МЕМ, где RP

    {I/P, 8/H, B, D, 2/T}. При нажатии клавиши I/P, 8/H, B, D, 2/T в регистрах 5-, 6-го индикатора отобразится имя регистровой пары SP, HL, BC, DE, SГ соответственно, а в разрядах 1-:- 4 - ее содержимое
    Чтение содержимого ОЗУ или ППЗУ
    Чтение содержимого ячейки памяти по адресу NIKM
    (16)
    осуществляется нажатием командной клавиши АDDR и последовательным нажатием клавиш данных N, I, K, M. При этом на экране сигнализируется адрес ячейки и ее содержимое (ХХ): NIKM хх. Для чтения содержимого следующей ячейки нажимается клавиша NEXT, предыдущей - МЕМ.
    Индикация ошибок
    При неверных действиях оператора на индикаторе появится код ошибки Err хххх. Он высвечивается в следующих случаях:
    - при попытке записи в несуществующую ячейку ОЗУ или в ППЗУ, а также если была блокирована возможность ввода данных в память (не нажата клавиша МЕМ);
    - при попытке установить несуществующее имя регистра;
    - при попытке нажать клавишу RP П {В, D, 8/H, 1/P, 2/T}, отличную от обозначений символов регистровых пар для операций ADDR RP МЕМ или ADDR RP BRK (RP П {В, D, 8/H,
    1/P, 2/T});
    - при попытке запустить программу на выполнение клавишами STEP или RUN, если введено меньше четырех символов адреса после нажатия клавиши ADDR.
    Если появится сигнал ошибки Err, то нажатием CLR или ADDR можно восстановить предыдущее состояние счетчика команд и саму команду. Нажатием клавиши МЕМ восстанавливается предыдущее значение ячейки памяти и ее адрес.
    Отличия программы “Эмулятор МикроЭВМ-580” от устройства Электроника-580

    108
    Внешний вид программы “Эмулятор МикроЭВМ-580” версия 1.00 представлен на рисунке
    4.
    Рисунок 4
    По сравнению с устройством Электроника-580 в эмулятор добавлены следующие клавиши:
    “Остановка” – остановка программы в момент ее исполнения с помощью “Run”. Служит для остановки зациклившихся программ.
    “Текст трассировки” – вызывает окно с текстом трассировки (рисунок 5) в котором в последней строке отображается текущее состояние регистров. информация обновляется по мере выполнения команд. В регистре RK находится команда, которая была выполнена последней, рядом отображается ее мнемокод. При достижении 500 строк в окне “Текст трассировки” первые строка удаляется для избежания перегрузки вашего ПК.
    “Просмотр памяти” – вызывает окно (рисунок 6), в которое осуществляется считывание памяти виртуальной Электроники-580.
    “Сохранить” – сохраняет содержимое памяти и регистров виртуальной Электроники-580 в файл.
    “Загрузить ” – загружает содержимое памяти и регистров виртуальной Электроники-580 из файла.
    В эмулятор добавлена эффективная система поиска команд: поиска кода по мнемокоду и поиска мнемокода по коду. Достаточно набрать в соответствующем поле код или мнемокод и искомое будет выведено в соседнем поле. Мнемокод необходимо вводить большими буквами.

    109
    Рисунок 5
    Рисунок 6
    В программе "Эмулятор МикроЭВМ-580" рабочей является вся область памяти 0000-:-
    FFFF. В области 0000-:-003F записаны микропрограммы вызываемые микрокомандой RST.
    В программе "Эмулятор МикроЭВМ-580" при вводе любых символов (адрес, данные) в соответствующем поле не возникает символов “x”. Происходит лишь сдвиг старых символов.
    Таким образом исключаются все возможные ошибки Электроники-580.
    Индикация регистров “С” и “Z” производится лишь при выполнении команд в окне трассировке.
    При выполнении команды RST программа переспрашивает пользователя о необходимости сохранения результатов работы и необходимости сброса.
    Практическая работа №20. Ознакомление с учебной микро-ЭВМ «Электроника-
    580»(этапы проектирования)
    Цель работы: изучить система команд микро-ЭВМ «Электроника-580».
    Теоретическая часть.
    Последовательность (закон) преобразования информации в ЭВМ задается программой.
    Программа размещается в ОЗУ в виде команд, представленных в машинных кодах.
    Представление программ в машинных кодах требует много времени на ввод команд и их проверку. Поэтому для уменьшения времени на программирование, вероятности ошибок кодирования, повышения наглядности представления команд для задания закона преобразования информации используется машинно-ориентированный язык Ассемблер. Поскольку различные микро-ЭВМ отличаются структурой и конструктивными особенностями, изменяется содержание и языка Ассемблер. Однако эти изменения имеют преемственность, а представление программы на языке Ассемблер позволяет получать наиболее короткие программы, занимающие меньший объем памяти по сравнению с программами, написанными на языках высокого уровня (БЕЙСИК,
    СИ). Программа, представленная в мнемонике Ассемблера, также должна быть оттранслирована, т.е. переведена и размещена в машинных кодах в ОЗУ . Для такого перевода необходима

    110
    программа-транслятор, которой в мониторе УОУ не имеется. Поэтому, хотя в данной работе и изучается язык Ассемблер и команды представляются в его мнемонике, запись команд в ОЗУ осуществляется в шестнадцатеричной системе счисления вручную с клавиатуры УОУ.
    Система команд микропроцессора КР 580 ВМ 80А приведена в таблице. 1. Команды условно разбиты на пять групп, в первом столбце таблицы представлены наименования команд в мнемонике Ассемблера, где
    Ri, Rj

    {A ,B ,C ,D , E , H , L , M };
    V - 8-битное данное [V
    (16)
    ] ; aa - 16-битный адрес памяти [aa
    (16)
    ] ;
    RP- регистровая пара B,C; D,E; H,L или указатель стека SP ; ap - 8-битный адрес порта [ap
    (16)
    ].
    Во втором столбце таблицы указано содержание первого байта команды (ПБ), где Т означает ссылку на дополнение к таблице 1, в котором ПБ конкретизирован в зависимости от типа команды. В третьем столбце таблицы 1 размещена размерность команды в байтах, в четвертом - её функциональное назначение, в последующих столбцах указано содержание поименованных разрядов регистра F после выполнения команды :
    " " - возможно изменение в состояние, зависящее от результата выполнения команды ;
    0 " - " - состояние не меняется ;
    1 " 0 ", " 1 " - состояние нуля или единицы .
    Таблица 1

    111 1. Команды передачи данных
    Первая группа команд в таблице 1 обеспечивает выполнение операций размещения, обмена, загрузки и перемещения данных. Число команд - 84 . Наибольшее число команд пересылки типа MOV Ri,Rj. Команды однобайтные, предназначены для пересылки операндов из одного регистра в другой или обмена информацией между РОН и ОЗУ.
    Например, команда MOV A,B имеет код 78
    (16)
    (дополнение к таблице1) адресация - регистровая, выполняет операцию передачи содержимого регистра B в регистр A (A

    B).
    Команды MOV M, Rj осуществляют передачу содержимого одного из РОН в ячейку памяти с адресом ,указанным в регистровой паре H, L. Поэтому перед выполнением данных команд необходимо предварительно поместить младший байт адреса ячейки М в регистр L, старший байт адреса в регистр H. Такая операция выполняется командой LHLD аа, где в ячейке с адресом аа располагают будущее содержимое L, а в ячейке аа 1 содержимое H. Например, после загрузки этой командой регистра Н содержимым 82
    (16)
    , L - 40
    (16)
    выполняется команда MOV M, A: код команды 77
    (16)
    загружается в РК и из аккумулятора информация передается в ячейку с адресом 8240
    (16)
    Команды MOV Ri, M осуществляют передачу содержимого ячейки памяти М с адресом , указанным в регистровой паре H,L, в один из РОН .
    Рассмотрим назначение других команд :
    MVI Ri, V, осуществляют непосредственную передачу операнда, находящегося во втором байте команды , в РОН или ячейку памяти .
    MVI B,V код - 06
    (16)
    , загружает в регистр В второй байт команды, равный V ;
    MVI M,V код - 36
    (16)
    , осуществляет непосредственную передачу V в ячейку с адресом , указанным в регистровой паре H, L .

    112
    Команда LDA аа осуществляет прямую загрузку аккумулятора содержимым ячейки памяти с адресом аа , причем второй байт команды - младшие разряды адреса , третий байт - старшие .
    STA аа осуществляет передачу содержимого аккумулятора в ячейку с адресом аа, т.е.
    М(байт3,байт2)

    А.
    LHLD аа загружает регистровую пару H,L содержимым ячейки памяти с адресом аа, аа 1, т.е. Н

    М(аа 1), L

    М(аа) .
    LDAX B, LDAX D загружают аккумулятор содержимым ячейки по адресу, находящемуся в регистровой паре B,C; D,E соответственно .
    STAX B,STAХ D передают содержимое аккумулятора в ячейку памяти по адресу, находящемуся в регистровой паре B,C;D,E соответственно.
    XCHG осуществляет обмен данными между регистрами H и D , L и E .
    SHLD аа загружает две соседние ячейки памяти содержимым регистров H,L :
    М(байт3,байт2=аа(16))

    L , М(аа 1)

    H.
    2. Арифметические команды
    Эти команды предназначены для выполнения операции сложения, сложения с переносом, вычитания, вычитания с заёмом, инкрементирования, декрементирования, десятичной коррекции аккумулятора. В большинстве случаев эти команды изменяют содержимое разрядов регистра флажков F, который содержит информацию следующего вида :
    S
    Z
    0
    AC
    0
    P
    1
    CУ b7 b6 b5 b4 b3 b2 b1 b0 где разряд S - индикатор знака, Z - нуля,
    AC - вспомогательного переноса,
    P - четности, CУ - переноса.
    Состояние регистра F используется последующими командами для выполнения и организации управления вычислительным процессом. Рассмотрим команды этой группы:
    ADD Ri осуществляет сложение в прямых кодах содержимого аккумулятора и операнда, находящегося в РОН или ячейке памяти.
    ADD B код- 80
    (16)
    , выполняет операцию А=А В, результат сложения остается в А .
    ADD M код- 86
    (16)
    , складывает содержимое аккумулятора с операндом ячейки памяти по адресу, указанному в регистровой паре H,L.
    ADI V код С6
    (16)
    выполняет сложение в АЛУ аккумулятора с операндом в команде, результат сложения заносит в А. В данной команде в первом байте располагается КОП, во втором
    - операнд V.
    ADC Ri складывает содержимое А с РОН или ячейкой памяти и в младший разряд сумматора АЛУ прибавляет содержимое младшего разряда регистра F.
    ADC M код- 8Е
    (16)
    складывает содержимое аккумулятора с ячейкой памяти с адресом, указанным в регистровой паре H,L, и к результату сложения прибавляет СУ. Результат операции передается в А.
    ACI V осуществляет сложение аналогично ADI V, кроме того, к младшему разряду сумматора АЛУ прибавляет значение СУ регистра F(сложение с переносом).
    DAD RP выполняет двухбайтное сложение регистровой пары RP с содержимым регистровой пары H,L .При наличии переноса Рст из сумматора -СУ=1 ,если его нет , то СУ=0 .
    Результат заносится в H,L.
    DAD B код- 09
    (16)
    выполняет операцию HL= BC HL; СУ=Рст.
    SUB Ri позволяет непосредственно вычесть из аккумулятора содержимое РОН или ячейки памяти (A=A-Ri ) и результат вычитания занести в А (сложить в дополнительном коде А=А [(
    )
    1] без учета знака вычитаемого) эта команда не выявляет переполнения и имеет другие разновидности:
    SUI V - вычитание непосредственно из А операнда.

    113
    SBB Ri - вычитание с заемом А=А [(
    ) 1] [- СУ]д.
    SBBV - вычитание непосредственно операнда с заемом А = А - V - СУ.
    SBB M осуществляет вычитание A=A-М-СУ посредством сложения содержимого аккумулятора с инвертированным значением операнда, содержащимся в ячейке М, при СУ=1 и
    А=А
    1 при СУ=0. Рассмотрим эту операцию подробнее:
    Пусть необходимо вычесть с заёмом из А содержимое ячейки 8204
    (16)
    Пусть А=F8
    (16)
    , М=30
    (16)
    , заема не было ; СУ=0.
    Тогда в АЛУ под действием команды произойдет сложение: F 8
    (16)
    3 0
    (16)
    1111 1000 A = [ -
    8
    (10)
    ] M= 0011 0000 = 48
    (10)
    1101 0000 [ M]= [-48
    (10)
    ]Pст= 1 1100 1000 С 8
    (16)
    А = [-56(
    10)
    ] 9 2
    После сложения F = 92
    (16)
    , т.е. 1001 0010
    Из состояния разрядов регистра флажков видно, что S =1 ,т.е. в результате сложения получено отрицательное число ( разряд 7 результата =1); Z =0(результат не равен 0 ); АС=0 (при сложении младшей тетрады нет переноса ); Р=0 (в результате сложения получилось число с нечетным числом "1" ); СУ=0 (не нужен заём при вычитании из старшего байта; при вычитании
    СУ=, при выполнении сложения типа ADD СУ=Рст - перенос в старший байт при сложении с повышенной точностью). Если перед вычитанием СУ=1, то, выполняя команду SBB M, получим
    А=С7, F=92
    (16)
    . Заметим, что до выполнения команды в H занесен код 82(16), в L- 04(16),а в ячейку 8204
    (16)
    записан операнд 30
    (16)
    INR Ri, INR RP являются разновидностями команды ADD, осуществляют прибавление "1" к РОН, ячейке памяти или содержимому регистровой пары .
    DCR RI , DCX RP декрементируют содержимое Ri или RP .
    DAA корректирует результат сложения, хранящийся в А в двоичном коде, в двоичнодесятичный код <8421>: при АС =1 или b3b2b1b0
    (2)
    >9 прибавляет 6 к младшей тетраде байта, при СУ=1 или b7b6b5b4
    (2)
    >9 прибавляет 6 к старшей тетраде .
    Команда DAA после ADD позволяет выполнить сложение в коде D1 .
    3. Логические команды
    Задачей этих команд является выполнение поразрядной конъюнкции, дизъюнкции , сложения по модулю 2 , сравнения содержимого А и Ri или А и V, а также циклического сдвига операндов в А (таблица 1). Например, команда XRA M( код- AE
    (16)
    ) осуществляет сложение по модулю 2 содержимого ячейки памяти М, расположенной по адресу, находящемуся в H,L, с аккумулятором, результат операции размещает в А.
    Команды сдвига осуществляют сдвиг чисел на один разряд циклически через разряд СУ регистра F
    RAL L1(A,СУ), СУ п b7
    RAR R1(СУ,А), СУ п b0 или с занесением крайних цифр А в разряд СУ регистра
    RLC L1(A,b7),
    СУ п b7RRC R1(b0,A),
    СУ п b0
    При выполнении команд сравнения операндов
    CMP Ri , CPI V разряды Z и СУ регистра
    F устанавливаются в значения аналогично операции вычитания.
    STC осуществляет присвоение СУ=1;
    CMC инвертирует значение переноса СУ=СУ
    СМА инвертирует все разряды A=
    4. Команды передачи управления
    Четвертая группа команд содержит команды перехода, вызова, возврата и повторного запуска. Эта группа предназначена для изменения естественного порядка следования команд.

    114
    JMP aa - безусловный переход к команде, находящейся в ячейке (байт3, байт2 = аа).
    Второй и третий байты команды загружаются в W,Z и РС, а через регистр адреса, команда извлекает очередную необходимую команду программы.
    JNZ аа извлекает команду аналогично JMP только при Z=0, в противном случае извлекается следующая по порядку команда, PC=PC 1. Таким же образом выполняются команды условного перехода JN, JNC, JPO, JPE, JP, JM в зависимости от состояний разрядов Z ,СУ, P, S регистра F.
    PCHL передает содержимое регистровой пары H,L в счетчик команд, тем самым следующие команды извлекаются по адресу в РС.
    CALL aa вызывает начальную команду подпрограммы, расположенной по адресу аа(16)= байт3 байт2 команды. При этом адрес следующей команды запоминается занесением в стековую память: в ячейку памяти М(SP-1) заносятся старшие разряды РС(РСН), в ячейку М(SP-2)- младшие PCL, значение указателя стека SP уменьшается на 2. Данная команда осуществляет безусловный переход к подпрограмме, однако часто требуется переход к подпрограмме в зависимости от состояния регистра F. Для этой цели используются следующие разновидности команды CALLаа : CNZ аа(С4), CZ аа(СС), CNC аа(D4), CC aa(DC), CPO aa(E4), CPE aa(EC), CP aa(F4), CM aa(FC).
    В этих командах проверяются условия аналогично командам условного перехода и при истинности условий реализуют функции CALLaa , т.е. осуществляют переход к подпрограмме по адресу аа с занесением содержимого РС в стековую память. Если условие не выполняется, реализуется следующая команда РС 1 основной программы .
    RET - безусловный возврат к команде основной программы : её адрес загружается из вершины SГ стековой памяти, к указателю стека прибавляется 2. Возможен также возврат по условию с использованием команд: RNZ(C0), RZ(C8), RNC(D0), RC(D8), RPO(E0), RPE(E8),
    RP(F0), RM(F8).
    RSTi*8 - повторный пуск (рестарт) осуществляет прерывание выполнения основной программы, адрес команды основной программы передается в стековую память аналогично командам CALLaa. Счетчик команд загружается фиксированным адресом ППЗУ. Так, команда
    RST7*8 загружает РС адресом 0038
    (16)
    =8*7=56
    (10)
    . Команды RST позволяют использовать подпрограммы монитора для организации процесса вычислений .
    5. Команды ввода и вывода, обращения к стеку и управления микропроцессором
    Последняя группа команд выполняет операции помещения в стек и извлечения из него, ввода и вывода данных, обмена данными, подтверждения и неподтверждения прерываний, управления отсутствием операций и останова и установления маски прерываний.
    INaр - вводит данные в А из порта периферийного устройства, адрес которого определяется вторым байтом команды.
    OUTap - выводит данные из А в порт, адрес которого определяется вторым байтом команды.
    PUSH RP - помещает содержимое регистровой пары RP в стек. В ячейку М(SP-1) помещает значение старшего регистра, в М(SP-2) - значение младшего регистра пары, указатель стека дважды декрементируется SP=SP-2. Разновидностью этой команды является команда занесения в стек слова состояния процессора PUSH PSW, которая помещает в М( SP - 1) содержимое А, а в ячейку М(SP - 2 ) содержимое F, причем разрядам ячейки М( SP - 2 ) присваиваются b0

    СУ, b2

    P, b4

    АС, b6

    Z, b7

    S.
    POP RP извлекает из стека в регистровую пару содержимое двух ячеек памяти, в младший регистр загружаются данные из М(SP), в старший - из М(SP 1). К указателю стека прибавляется 2.
    Разновидностью этой команды является POP PSW , которая из ячейки М(SP) загружает регистр F по следующему правилу : флагу СУ

    b0,P

    b2, AC

    b4, Z

    b6, S

    b7; A

    M(SP 1).
    XTHL осуществляет обмен содержимого H,L с двумя ячейками вершины стека: L

    M(SP),
    H

    M(SP 1).
    SPHL передает в указатель стека содержимое регистровой пары H,L.
    EI разрешает прерывания. При выполнении EI прерывания не признаются.

    115
    DI - после выполнения этой команды микропроцессор игнорирует запросы на прерывания до появления команды DI.
    HLT - останов вычислений.
    1   ...   11   12   13   14   15   16   17   18   ...   43


    написать администратору сайта