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

  • Практическая работа №10. Исследование процессора (регистровая память). Цель работы

  • Способы адресации памяти.

  • Практическая работа № 11. Исследование процессора К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
    страница10 из 43
    1   ...   6   7   8   9   10   11   12   13   ...   43
    Содержание отчета
    Отчет должен содержать:
    1.
    Название работы, фамилию и инициалы студента, номер группы, цель работы.
    2.
    Структурную схему МП КР580.
    3.
    Описание выводов МП КР580.
    4.
    Структурную схему памяти МП КР580.
    5.
    Форматы команд МП КР580.
    6.
    Команды эмулятора emКР580 (кратко, в том числе команды его текстового редактора).
    7.
    Программу Прогр. 1.1с комментариями и в печатном виде.
    8.
    Результаты выполнения задания к лабораторной работе.
    9.
    Выводы по лабораторной работе.
    Контрольные вопросы
    1. Какие бывают форматы 1- 2-х и 3-хбайтных команд?
    2. Назначение выводов процессора.
    3. Какова структура памяти МП КР580?
    4. Как осуществить в МП-системе обмен данными с портом ввода/вывода, с ячейкой памяти?
    5. Что такое и для чего нужна десятичная коррекция данных.
    6. Для чего предназначены механизмы прямого доступа к памяти и обработки прерываний?
    7. Назначение общих регистров процессора (РОН), указателя стека, счетчика команд, регистра флагов.
    8. Какие поля содержит эмулятор emКР580 во время симуляции процесса выполнения программы?
    9. Работа программы по командам, т. е. что делает каждая команда программы?
    Практическая работа №10. Исследование процессора (регистровая память).
    Цель работы: изучить состав и назначение регистров процессора.
    Краткие сведения из теории

    60
    Процессор содержит ряд узлов, выполняющих различные функции, такие, как арифметическо-логическое устройство (АЛУ), используемое для осуществления операций над данными, дешифратор команд (ДК) и устройство управления (УУ), которые анализируют команды, поступающие из программной памяти, и генерируют необходимые импульсы для выполнения этих операций, а также ряд регистров. Процессор КР580 имеет семь регистров общего назначения, обозначаемых A, B, C, D, E, H, L. Они предназначены для хранения как постоянных, так и переменных данных и адресов. В структуре процессора предусмотрена реализация команд пересылки данных из одного регистра в другой, из регистра в память и наоборот, или же команд для выполнения арифметических или логических операций над содержимым двух регистров (в этом случае один из регистров обязательно должен быть регистром А, например, нельзя суммировать содержимое регистров В и С).
    Регистр А особый, называется аккумулятором, т. к. в нем аккумулируются результаты ряда арифметических операций.
    Регистр команд (РК) хранит команду, которая выполняется. Он соединен с дешифратором команд, который анализирует команду и определяет вид обработки. Команда хранится и используется в течение всего времени ее выполнения.
    Буферные регистры данных и адреса предназначены для временного хранения данных и адреса с целью обеспечения нормальной работы других узлов микро-ЭВМ.
    Регистры счетчик команд (СК, PC), указатель стека (УС, SP) и регистр флагов (F), играют очень важную роль в программировании микропроцессора.
    Все пять бит регистра признаков (F) устанавливаются по результату выполнения операции в АЛУ:

    Признак переноса (С) устанавливается в 1, если при выполнении команд появляется единица переноса из старшего разряда.

    Дополнительный признак переноса (АС) устанавливается в 1, если при выполнении команд возникает единица переноса из третьего разряда числа. Состояние разряда может быть проанализировано лишь командой десятичной коррекции.

    Признак знака (S) устанавливается в 1, если седьмой (старший) разряд числа равен
    1. Машинное слово представляется числом от –128 до +127. Седьмой разряд числа указывает на знак числа. Если он равен 0, то число положительное, если 1, то отрицательное.

    Разряд признака нулевого содержимого аккумулятора (Z) устанавливается в 1, если при выполнении команды результат равен нулю.

    Разряд признака паритета (Р) устанавливается в 1, если число единичных битов аккумулятора четно, в противном случае этот разряд будет установлен в нулевое состояние.
    Счетчик команд (СК) содержит текущий адрес памяти, к которому обращается программа.
    Его содержимое автоматически изменяется в течение каждого цикла команды.
    Указатель стека (УС) содержит адрес стековой памяти, начиная с которого ее можно применять для хранения и восстановления содержимого программно доступных регистров МП.
    Выполнение каждой команды производится
    МП в строго определенной последовательности, определяемой кодом команды, и синхронизируется во времени сигналами C
    1
    и C
    2
    тактового генератора. Период синхросигналов C
    1
    или C
    2
    называют машинным тактом (МТ).
    Длительность машинного такта от 0,5 до 2 мкс.
    Машинный цикл (МЦ) – время, требуемое для извлечения 1 байта информации из памяти или выполнения команды, определяемой одним машинным словом. Машинный цикл может состоять из 3 – 5 машинных тактов. Время выполнения команды – время получения, дешифрации и отработки команды процессором. В зависимости от вида команды, это время может состоять из
    1 – 5 машинных циклов. Существуют десять различных типов машинных циклов:
    1. Извлечение кода команды.
    2. Чтение данных из памяти.
    3. Запись данных в память.
    4. Извлечение из стека.
    5. Запись данных в стек.
    6. Ввод данных из внешнего устройства.

    61 7. Запись данных во внешнее устройство.
    8. Цикл обслуживания прерывания.
    9. Останов.
    10. Обслуживание прерывания при работе в режиме останова.
    Первым машинным циклом при выполнении любой команды является извлечение кода команды. На первом такте каждого машинного цикла МП указывает тип выполняемого цикла с помощью 8-разрядного слова состояния, выдаваемого на ШД. Отдельные разряды слова состояния используются для формирования шины управления.
    Способы адресации памяти.

    Прямая адресация.
    При прямой адресации команда содержит адрес памяти. Команда занимает три байта памяти, причем второй и третий байты содержат адрес.
    Пример:
    Загрузить содержимое ячейки 1F2A в аккумулятор.
    Мнемоника команды
    Запись в памяти
    LDA 1F2A
    3
    А
    2
    А
    1
    F

    Косвенная адресация.
    При косвенной адресации байт адресуется через пару регистров, т. е. адрес ячейки памяти может быть определен с помощью содержимого пары регистров. Для большинства команд используется регистры H и L. Регистр Н содержит старший байт адреса, регистр L – младший.
    Пример:
    Загрузить аккумулятор содержимым ячейки 1F2A.
    Память
    Регистры
    7
    Е
    1
    F
    2
    A
    MOV A, M
    B
    C
    D E
    H L
    A

    Непосредственная адресация.
    Команда с непосредственной адресацией содержит в одном из своих полей операнд.
    Команды с непосредственной адресацией не обращаются к памяти для извлечения операнда – они сами содержат операнд.
    Пример:
    Загрузить в аккумулятор величину
    2А.
    Память
    3
    E
    2
    A
    MVI A, 2A

    Адресация через указатель стека.
    Здесь адресация может осуществляться через 16-разрядный регистр – УС. Существуют две операции со стеком: запись в стек (PUSH) и выборка из стека (POP). Запись в стек используется для пересылки 16 бит данных из пары регистров или из программного счетчика (СК) в область памяти, отведенную под стек. Извлечение из стека используется для пересылки 16 бит из

    62
    стековой области памяти, в любую пару регистров или в программный счетчик. Подробнее эти операции будут рассмотрены позже.
    Практическая часть
    1.
    Изучить способы адресации МП КР580.
    2.
    Ознакомиться с языком программирования
    Ассемблер и с программированием в машинных кодах для МП БИС КР580.
    3.
    Ознакомиться с системой команд МП КР580.
    4.
    Рассмотреть особенности выполнения команд пересылки данных, арифметических и логических команд.
    5.
    Самостоятельно составить программу сравнения двух 8-разрядных чисел, находящихся в ячейках памяти с адресами 0100h и 0101h, и записи большего из них в память по адресу 0102h.
    Задание 1. Исследование программы по выполнению арифметических и логических
    операций с одним операндом (над содержимым аккумулятора).
    Порядок выполнения задания:
    1.
    Ввести программу Прогр. 2.1, исправить ошибки, осуществить пуск.
    2.
    Исследовать процесс выполнения программы в пошаговом режиме (обратить особое внимание на изменения регистра флагов).
    3.
    Заменяя во второй строке программы число, записываемое в регистр B, исследовать программу при различном значении этого числа.
    4.
    Занести результаты выполнения программы в таблицуТабл. 2.2, числа в таблицу заносить в 16-ричной системе счисления).
    Контрольные вопросы
    1.
    Способы адресации МП КР580.
    2.
    Что такое машинный такт и машинный цикл?
    3.
    Какие бывают в МП КР580 машинные циклы?
    4.
    Назначение общих регистров процессора (РОН), указателя стека, счетчика команд, регистра флагов.
    Практическая работа № 11. Исследование процессора К580 (система команд).
    Цель работы: изучить систему команд процессора К580.
    Теоретические сведения.
    Команды МП можно разделить на 4 категории:

    Команды пересылки данных (см. Табл. 0-4Табл. 0-7).
    Эти команды приводят к перемещению элементов информации между регистрами или между регистром и ячейкой памяти (портом ввода/вывода). Общее число таких команд велико, т. к. имеется много видов адресации, а также большое число ограничений на форматы команд, обусловленное небольшой длиной слова процессора. Это приводит к усложнению архитектуры.

    Арифметические и логические команды (см. Табл. 0-8Табл. 0-10).
    К ним относятся команды, объединяющие два элемента данных арифметически или логически, или выполняют операции над одним числом. Для этого используется регистр А.

    Команды передачи управления (см. Табл. 0-11Табл. 0-13).
    Они включают в себя команды разветвления, перехода к подпрограммам и возврата из подпрограмм.

    Команды различного назначения (специальные команды, см. Табл. 0-14).
    К данному классу относятся команды, которые нельзя точно классифицировать.
    Команды пересылки данных.

    63
    Команды пересылки "регистр-регистр" – MOV R1, R2. Формат этих команд имеет вид
    01 DDD SSS, где DDD – регистр приемник, SSS – регистр источник. Регистры определяются номерами B = 0, C = 1, D = 2, E = 3, H = 4, L = 5, A =7. Таким образом, команда 4С (01001100) означает "переслать содержимое регистра Н в регистр С". Если значение DDD или SSS равно 110, то приемником или источником является ячейка памяти, адрес которой хранится в паре регистров
    HL (косвенная адресация).
    Команда MVI служит для пересылки одного байта в любой из 7 РОН. Формат команды
    00 DDD 110. Если DDD = 0, 1, ..., 5, 7, то пересылается константа, следующая в программе за этой командой в регистры B, C, ..., L, A. Если поле DDD = 6, то константа пересылается в ячейку памяти, адрес которой хранится в паре регистров H, L.
    Для быстрой загрузки регистров H, L существует команда LXI H, пересылающая следующие за командой LXI H два байта (в программе) в указанную пару регистров. Таким же образом команда LXI D загружает два байта в пару регистров D и Е, а команда (LXI B) – два байта в регистры В и С. Эти команды называются командами непосредственной загрузки.
    Существуют команды, выделяющие регистр А для специальных целей. Команды STAX и
    LDAX служат для передачи данных между регистром А и ячейкой памяти, адрес которой находится либо в паре регистров ВС, либо в паре регистров DЕ, причем STAX B – пересылает содержимое А в ячейку памяти, адрес которой находится в ВС, а LDAX D – осуществляет обратную передачу содержимого ячейки памяти с адресом, записанным в DE в регистр А.
    В выше приведенных командах доступ к ячейке памяти становится возможным только после помещения адреса в пару регистров. Это эффективно, если неоднократно используется один и тот же адрес. При одноразовом использовании адреса используют метод абсолютной адресации.
    К этой же группе команд могут быть отнесены команды ввода/вывода. Команды ввода/вывода IN и OUT осуществляют передачу данных между процессором и каналом ввода/вывода (портом ввода/вывода), номер которого приведен вслед за командой.
    Арифметические и логические команды.
    К арифметическим командам относятся: команды сложения и вычитания с учетом (ADD,
    ADI, SUB и SUI) и без учета (ADC, ACI, SBB и SBI) флага переноса, команды инкрементации и декрементации (INR, DCR, INX и DCX), команда десятичной коррекции аккумулятора (DAA) и команда DAD, выполняющая увеличение регистровой пары HL на величину, содержащуюся в другой регистровой паре (BC или DE).
    К логическим командам относятся команды логического И, ИЛИ, исключающего ИЛИ,
    НЕ; команды сдвига влево и вправо с учетом и без учета переноса; команда инверсии аккумулятора (CMA); команды сравнения (CMP, CPI). Сюда же можно отнести несколько команд изменения содержимого триггера переноса в регистре флагов: STC – установить в единицу триггер переноса; СМС – инвертировать содержимое триггера переноса.
    Команды передачи управления.
    Команды передачи управления делятся на три типа: ветвления, обращения к подпрограммам и возврата из подпрограмм. Адреса команд ветвления хранятся за 1-м байтом команды.
    Для команд перехода к подпрограммам характерно наличие адресов возврата, хранимых в стеках, а команды возврата из подпрограмм не имеют ассоциированных с ними адресов, они получают адреса возврата из стека.
    Каждый из трех видов перехода может быть безусловным и условным в соответствии с одним из двоичных разрядов регистра признаков. Команды JMP, CALL, RET предназначены для осуществления безусловных переходов.
    Команда PCHL приводит к тому, что содержимое регистров HL передается в программный счетчик (PC). Это переход на ячейку памяти, указанную парой HL (безусловный переход с косвенной адресацией). Команда RST – команда начального запуска прерывания программы, которая является специально командой перехода, используемой совместно с процедурами прерывания.
    Есть и другие команды, относящиеся к данной группе (см. Табл. 0-11Табл. 0-13).

    64
    Специальные команды.
    К ним относятся команды EI и DI – разрешающие и, соответственно, запрещающие прерывания; NOP – пустая команда, не выполняющая никакой операции, но включаемая в программу для коррекции времени выполнения или последовательности команд и HLT – команда останова.
    Все вышеприведенные команды, а также и некоторые неупомянутые другие команды приведены вТабл. 2.1.
    Табл. 2.1. Команды микропроцессора КР580.

    Мнемониче ское обозначени е
    Описание команды
    2-й или
    16-й код
    Число тактов ых импул ьсов
    Передача, загрузка и хранение
    1
    MOV r1r2
    Передать содержимое одного регистра в другой.
    01DDDSSS
    5 2
    MOV M r
    Передать содержимое регистра в память.
    01110SSS
    7 3
    MOV r M
    Передать содержимое памяти в регистр.
    01DDD110 7
    4
    MVI r
    Загрузить регистр вторым байтом команды.
    00DDD110 7
    5
    MVI M
    Загрузить память вторым байтом команды.
    00110110 10 6
    LXI B
    Загрузить пару регистров
    ВС вторым и третьими байтами команды.
    00000001 10 7
    LXI D
    Загрузить пару регистров
    DЕ вторым и третьими байтами команды.
    00010001 10 8
    LXI H
    Загрузить пару регистров
    HL вторым и третьим байтами команды.
    00100001 10 9
    STAX В
    Записать содержимое аккумулятора в память по адресу, указанному в паре регистров ВС.
    00000010 7
    1 0
    STAX D
    Записать содержимое аккумулятора в память по адресу, указанному в паре регистров DE.
    00010010 7
    1 1
    LDAX В
    Загрузить аккумулятор содержимым ячейки, адрес которой указан в паре регистров ВС.
    00001010 7
    1 2
    LDAX D
    Загрузить аккумулятор содержимым ячейки, адрес которой указан в паре регистров DE.
    00011010 7

    65 1
    3
    STA
    Загрузить содержимое аккумулятора в память по адресу, указанному во втором и третьем байтах команды.
    00110010 1
    3 1
    4
    LDA
    Загрузить аккумулятор содержимым ячейки, адрес которой указан во втором и третьем байтах команды.
    00111010 1
    3 1
    5
    SHILD
    Записать в память содержимое пары регистров
    HL по адресу, указанному во втором и третьем байтах команды.
    00100010 1
    6 1
    6
    LHLD
    Загрузить пару регистров
    HL содержимым ячейки, адрес которой указан во втором и третьем байтах команды.
    00101010 1
    6 1
    7
    XCHG
    Поменять местами содержимое пар регистров
    DE и HL.
    11101011 4
    Операции со стеком
    1 8
    PUSH В
    Записать содержимое пары регистров ВС в стек.
    11000101 1
    1 1
    9
    PUSH D
    Записать содержимое пары регистров DE в стек.
    11010101 1
    1 2
    0
    PUSH Н
    Записать содержимое пары регистров HL в стек.
    11100101 1
    1 2
    1
    PUSH PSW
    Записать содержимое аккумулятора и регистра признаков в стек.
    11110101 1
    1 2
    2
    POP В
    Загрузить пару регистров
    ВС из стека.
    11000001 1
    0 2
    3
    POP D
    Загрузить пару регистров
    DE из стека.
    11010001 1
    0 2
    4
    POP Н
    Загрузить пару регистров
    HL из стека.
    11100001 1
    0 2
    5
    POP PSW
    Загрузить аккумулятор и регистр признаков из стека.
    11110001 1
    0 2
    6
    XTHL
    Поменять местами содержимое верхней ячейки стека и пары регистров HL.
    11100011 1
    8 2
    7
    SPHL
    Передать содержимое пары регистров HL в указатель стека.
    11111001 5
    2 8
    LXI SP
    Загрузить указатель стека вторым и третьими байтами команды.
    00110001 1
    0 2
    9
    INX SP
    Увеличить на 1 содержимое указателя стека.
    00110011 5

    66 3
    0
    DCX SP
    Уменьшить на
    1 содержимое указателя стека.
    00111011 5
    Переходы
    3 1
    JMP
    Безусловный переход.
    11000011 1
    0 3
    2
    JC
    Условный переход по единице триггера переноса.
    11011010 1
    0 3
    3
    JNC
    Условный переход по нулевому значению триггера переноса.
    11010010 1
    0 3
    4
    JZ
    Условный переход по нулевому значению результата.
    11001010 1
    0 3
    5
    JNZ
    Условный переход по ненулевому значению результата.
    11000010 1
    0 3
    6
    JP
    Условный переход по положительному значению результата.
    11110010 1
    0 3
    7
    JM
    Условный переход по отрицательному значению результата.
    11111010 1
    0 3
    8
    JPE
    Условный переход по четности кода результата.
    11101010 1
    0 3
    9
    JPO
    Условный переход по нечетности кода результата.
    11100011 1
    0 4
    0
    PCHL
    Передать содержимое пары регистров
    HL в программный счетчик.
    11101001 5
    Вызовы
    4 1
    CALL
    Безусловный переход к подпрограмме.
    11001101 1
    7 4
    2
    СС
    Переход к подпрограмме по единичному значению триггера переноса.
    11011100 1
    1/17 4
    3
    CNC
    Переход к подпрограмме по нулевому значению результата.
    11010100 1
    1/17 4
    4
    CZ
    Переход к подпрограмме по нулевому значению результата.
    11001100 1
    1/17 4
    5
    CNZ
    Переход к подпрограмме по ненулевому значению результата.
    11000100 1
    1/17 4
    6
    СР
    Переход к подпрограмме по положительному значению результата.
    11110100 1
    1/17 4
    7
    СМ
    Переход к подпрограмме по отрицательному значению результата.
    11111100 1
    1/17 4
    8
    СРЕ
    Переход к подпрограмме по четности кода результата.
    11101100 1
    1/17

    67 4
    9
    СРО
    Переход к подпрограмме по нечетности кода результата.
    11100100 1
    1/17
    Возвраты
    5 0
    RET
    Возврат из подпрограммы.
    11001001 1
    0 5
    1
    RC
    Условный возврат из подпрограммы по единичному значению триггера переноса.
    11011000 5
    /11 5
    2
    RNC
    Условный возврат из подпрограммы по нулевому значению триггера переноса.
    11010000 5
    /11 5
    3
    RZ
    Условный возврат из подпрограммы по нулевому значению результата.
    11001000 5
    /11 5
    4
    RNZ
    Условный возврат из подпрограммы по ненулевому значению результата.
    11000000 5
    /11 5
    5
    RP
    Условный возврат из подпрограммы по положительному значению результата.
    11110000 5
    /11 5
    6
    RM
    Условный возврат из подпрограммы по отрицательному значению результата.
    11111000 5
    /11 5
    7
    RPE
    Условный возврат из подпрограммы по четности кода результата.
    11101000 5
    /11 5
    8
    RPO
    Условный возврат из подпрограммы по нечетности кода результата.
    11100000 5
    /11
    Рестарт
    5 9
    RST
    Начальный запуск прерывающей программы.
    11ААА111 1
    1
    Увеличение и уменьшение.
    6 0
    INR
    Увеличить содержимое регистра на единицу.
    00DDD100 5
    6 1
    DCR
    Уменьшить содержимое регистра на единицу.
    00DDD101 5
    6 2
    INR M
    Увеличить содержимое памяти на единицу.
    00110100 1
    0 6
    3
    DCR М
    Уменьшить содержимое памяти на единицу.
    00110101 1
    0 6
    4
    INX B
    Увеличить на единицу содержимое пары регистров
    ВС.
    00000011 5
    6 5
    INX D
    Увеличить на единицу содержимое пары регистров
    DE.
    00010011 5

    68 6
    6
    INX H
    Увеличить на единицу содержимое пары регистров
    HL.
    00100011 5
    6 7
    DCX B
    Уменьшить на единицу содержимое пары регистров
    BC.
    00001011 5
    6 8
    DCX D
    Уменьшить на единицу содержимое пары регистров
    DE.
    00011011 5
    6 9
    DCX H
    Уменьшить на единицу содержимое пары регистров
    HL.
    00101011 5
    Сложение
    7 0
    ADD
    К содержимому аккумулятора прибавить содержимое регистра.
    10000SSS
    4 7
    1
    ADC
    К содержимому аккумулятора прибавить содержимое регистра и триггера переноса.
    10001SSS
    4 7
    2
    ADD M
    К содержимому аккумулятора прибавить содержимое памяти.
    10000110 7
    7 3
    ADC M
    К содержимому аккумулятора прибавить содержимое памяти и триггера переноса.
    11000110 7
    7 4
    ADI
    К содержимому аккумулятора прибавить второй байт команды.
    11000110 7
    7 5
    ACI
    К содержимому аккумулятора прибавить второй байт команды и содержимое триггера переноса.
    11001110 7
    7 6
    DAD B
    К содержимому пары регистров HL прибавить содержимое пары регистров
    ВС.
    00001001 1
    0 7
    7
    DAD D
    К содержимому пары регистров HL прибавить содержимое пары регистров
    DE.
    00011001 1
    0 7
    8
    DAD H
    К содержимому пары регистров HL прибавить содержимое пары регистров
    DE.
    00101001 1
    0 7
    9
    DAD SP
    К содержимому пары регистров HL прибавить содержимое указателя стека.
    00111001 1
    0
    1   ...   6   7   8   9   10   11   12   13   ...   43


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