Система команд микропроцессора к580

      Комментарии к записи Система команд микропроцессора к580 отключены

Отчет по лабораторной работе

«Организация ЭВМ и систем»

Исследование однокристального микропроцессора с фиксированным списком команд

Работу выполнил студент группы № 3081/3 Баранов Д.С.

Работу принял преподаватель _________________ Павловский Е.Г.

Жвариков В.А.

Санкт-Петербург

Цель работы

Ознакомление с микропроцессорным комплектом серии К580 на основе микроЭВМ на базе лабораторного стенда ТУМ1, практическое ознакомление с отдельными БИС микропроцессорного комплекта серии К580, методикой построения МП систем на его основе, структурой программного обеспечения.

Описание аппаратных средств

Лабораторный стенд ТУМ1.

Назначение лабораторного стенда ТУМ1: изучение функциональных возможностей и внутренней структуры МП различных типов, изучение системы команд (микрокоманд) этих МП и принципов проектирования и отладки микроконтроллеров на основе МП.

Функциональная структура лабораторного стенда представлена на рис. 1.

Рис. 1

Функциональная структура лабораторного стенда представляет собой схему микроЭВМ, включающей в себя:

— центральный процессор (ЦП);

— память;

— устройства ввода (клавиатура для ввода исходных данных и программ);

— устройства вывода (блок светодиодных индикаторов, позволяющий визуально контролировать вводимую информацию и результаты выполнения программ)

Система команд микропроцессора К580

В микропроцессоре К580 используются одно-, двух- и трехбайтовые команды; первый байт команды определяет выполняемую операцию, второй и третий операнды команды.

В состав микропроцессора входят 8 регистров:

— регистр аккумулятора А(особый регистр, в большинстве команд является неявным операндом)

— регистровые пары BC, DE и HL; могут использоваться как в виде пары регистров, так и в виде одного регистра;

— регистр флагов F (включает признаки переноса, межтетрадного переноса, знака, нуля и паритета).

В микропроцессоре используется «виртуальный регистр» M, который представляет собой ячейку памяти, адресуемую регистровой парой HL, двухбайтовый регистр счетчика команд PC, двухбайтовый указатель стека SP и регистр слова состояния программы PSW, включающий в себя регистры A и F.

В системе команд используются безадресные, одноадресные и двухадресные операции;

Используемые команды можно разделить на следующие группы:

— Команды пересылк и данных;

— Команды загрузки в стек и извлечения из стека;

— арифметические операции;

— логические операции;

— сдвиговые операции;

— команды условной и безусловной передачи управления, команды вызова подпрограмм и возврата из подпрограмм;

Программа работы

1) Ввести в процессор и протестировать набор вводных программ.

2) Составить и отладить программу сложения двух матриц 4×4.

3) Составить и отладить программу вывода на индикацию элементов матрицы 4×4 в цикле.

Вводные программы

Программа 1

Программа позволяет загрузить в регистры В и С данные 010 и 001. Текст программы представлен в Таблице 1.

Таблица 1

Адреса Команды Мнемоника команд Комментарии
L=000 LXIH ; Загрузка начального адреса памяти
В2 ; мл.байт адреса
В3 ; ст.байт адреса
LXIB ; Запись исходных данных в регистры В и С
В2 ; B2 — (C)
В3 ; B3 — (B)
МОV М,В ; Запоминание (В)
INX H ; Формирование следующего адреса памяти
МОV М,С ; Запоминание (С)
HLT ; Останов

Выполнение команды по адресу 006 осуществляется за 2 такта: первый такт – считывание команды (на световых индикаторах Шина адреса и Шина данных отображается адрес 006 и данные160), второй такт – запись в ячейку М, т.е. по адресу в регистрах HL = 000 200 данных из регистра В (на световых индикаторах Шина адреса и Шина данных отображается адрес 200 и данные 010). Аналогично происходит выполнение команды МОV М,С по адресу 010.

Результат выполнения программы: по адресу 000 200 записано число 010, по адресу 000 201 записано число 001.

Программа 2

Программа позволяет занести в стек (выбранный участок памяти ОЗУ) содержимое регистров В и С, в которых записаны данные 010 и 001 соответственно. Текст программы представлен в Таблице 2.

Таблица 2

Адреса Команды Мнемоника Комментарии команд
L=000 LXI SP ; Установка указателя стека:
В2 ; мл. байт адреса
В3 ; ст. байт адреса
LXI B ; Запись исходных данных в регистры В и С:
В2 ; B2 — (C)
В3 ; B3 — (B)
PUSH B ; Запоминание содержимого регистров В и С стеке
HLT ; Останов

Результат выполнения программы: в ячейку памяти с адресом L = 200 записано число 001 – содержимое регистра С, в ячейку памяти с адресом L = 201 записано число 010 – содержимое регистра В. Таким образом при записи в стек содержимого регистровой пары ВС сначала в стек было записано содержимое регистра В, затем содержимое регистра С. Так как в стек было записано 2 байта, содержимое указателя стека уменьшилось на два.

При выполнении команды PUSH RP несколько раз содержимое указателя стека уменьшается, это значит, что стек «растет» в сторону уменьшения адресов памяти.

Программа 3

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

Таблица 3

Адреса Команды Мнемоника Комментарии команд
L=000 LXI SP ; Загрузка начального адреса в указатель стека
В2 ; мл.байт адреса
В3 ; ст.байт адреса
РОР В ; Извлечение данных из стека и загрузка их в регистровую пару В и С
INR B ; Увеличение на 1 содержимого регистра В
DCR C ; Уменьшение на 1 содержимого регистра С
PUSH B ; Запоминание содержимого регистров В и С в стеке
HLT ; Останов

Перед началом выполнения программы в ячейки памяти с адресами H=000 L=200 и H=000 L=201 были записаны числа 001 и 010 соответственно. В результате по адресу 000 200 записано число 000, по адресу 000 201 записано число 011. Содержимое стека было записано в регистровую пару ВС, т.е. в регистр В записано число 010, в регистр С – 001, затем содержимое регистра В было инкрементировано, содержимое регистра С – декрементировано, после этого содержимое регистровой пары было записано обратно в стек, т.е. по тем же адресам, откуда данные были первоначально извлечены.

При выполнении команды PUSH RP загружаются ячейки с адресами (УС-1) и (УС-2), т.е. УС содержит. При выполнении команды POP RP информация извлекается из ячеек памяти с адресами УС и (УС+1), т.к. УС содержит адрес ячейки памяти, следующей за первой ячейкой для записи, т.е. указывает на вторую записанную ячейку.

При включении ЭВМ указатель стека показывает на произвольную неизвестную ячейку памяти, именно поэтому для работы со стеком надо инициализировать УС командой LXI SP.

Программа 4

Программа позволяет сложить содержимое регистра с содержимым ячейки памяти.

Складывается содержимое аккумулятора А с числом 100, записанным по адресу H=000 L=200.

Текст программы представлен в Таблице 4.

Таблица 4

Адреса Команды Мнемоника Комментарии команд
L=000 LXI H ; Загрузка начального адреса в указатель памяти
В2 ; мл. байт адреса
В3 ; ст. байт адреса
MVI A ; Непосредственная загрузка A одним из слагаемых.
В2 ; Байт данных слагаемого
ADD M ; Сложение содержимого A c содержимым ячейки памяти
MOV M,A ; Запоминание значения суммы в ячейке памяти
HLT ; Останов

До выполнения программы по адресу 000 200 было записано число 020, в результате выполнения программы содержимое этой ячейки памяти увеличилось на 010 и стало равным 030. Если выполнить ту же программу, но использовать вместо команды ADD M (код 206) команду ADC M (код 216), результат никак не изменится.

В Таблице 5 представлены результаты выполнения программы в автоматическом режиме.

Таблица 5

шаг содержимое ячейки памяти с адресом 000 200

Программа вычитания двух чисел:

lxi H, 000, 200

mvi D, 010

mvi A, 100

sub D

mov M, A

Результат: по адресу 000 200 записана разница чисел 100 и 010 = 060

Программа сложения двоично-десятичных чисел:

lxi H, 000, 200

mvi A, 045

mvi B, 066

add B

daa

mov M, A

Результат: по адресу 000 200 записана сумма десятичных чисел 25 и 36 = 61

Программа вычитания двоично-десятичных чисел:

lxi H, 000, 200

mvi A, 99

mvi B, 50

sub B

inc A

mov M, A

mvi A, 75

add M

daa

mov M, A

Результат: по адресу 000 200 записан результат вычитания десятичных чисел 75 и 50 = 25

Программа 5

Программа использует логическую операцию, операции сдвига и запоминания Слова Состояния Программы.

Перед выполнением программы по адресам от Н=000 L=011 до H=000 L=040 могут содержаться ненулевые данные, поскольку туда производилась запись данных и команд предыдущими программами.

Текст программы представлен в Таблице 6.

Таблица 6

Адреса Команды Мнемоника Комментарии команд
L=000 MVI B ; Непосредственная загрузка
В2 ; данных в РгВ
MVI A ; Непосредственная загрузка
B2 ; данных в A
XRA B ; Cложение по mod 2 содержимого A c Рг B
RAL ; Циклический сдвиг влево через перенос
LXI SP ; Инициализация указателя стека
В2 ; Мл.байт адреса
В3 ; Ст.байт адреса
PUSH PSW ; Запоминание в стеке Слова Состояния Программы
HLT ; Останов

Анализ аккумулятора и флагов состояния в ходе выполнения команд представлен в Таблице 7.

Таблица 7

команда А F
mvi B, data xxxxxxxx xx0x0x1x
mvi A, data xx0x0x1x
xra B
ral
lxi SP
push PSW
HLT

Результат: по адресу 000 200 записано число 207 = 10000111 – это значение флагов, по адресу 000 201 записано число 002 = 00000010 – это значение аккумулятора. Т.о. в стек было записано слово состояния.

Программа 6

Программа позволяет очистить (обнулить) заданную область памяти.

На Рис. 3 представлен один из возможных алгоритмов программы обнуления.

Рис. 3

Перед выполнением программы содержимое ячеек памяти с адресами от Н=000 L=011 до H=000 L=040 ненулевое, поскольку память использовалась в предыдущих программах и не была обнулена.

Текст программы представлен в Таблице 8.

Таблица 8

Адреса Команды Мнемоника Комментарии команд
L=000 SUB A ; Обнуление A
LXI H ; Загрузка начального адреса в указатель памяти
B2 ; мл. байт адреса
B3 ; ст. байт адреса
MOV M,A ; Обнуление ячейки памяти, адресуемой регистровой парой HL
INX H ; Формирование адреса следующей ячейки памяти
JMP ; Безусловный переход по адресу
B2 ; мл. байт адреса
B3 ; ст. байт адреса

При выполнении программы в автоматическом режиме она начинает обнулять ячейки памяти, начиная с 011, доходит до конца памяти и начинает обнулять ячейки, в которых записано начало программы. Обнулив ячейку 004 (в которой находится команда обнуления), она фактически заменяет ее пустой командой, и обнуление прекращается.

Программа 7

Псевдопрограмма состоит всего из одной команды, расположенной в произвольной области памяти. С помощью этой программы реализуется работа микроЭВМ при реализации команд, задаваемых с помощью клавиатуры стенда.

Текст программы приведен в Таблице 9.

Таблица 9

Адреса Команды Мнемоника Комментарии команд
H=100 L=200 HLT ; Останов

При вводе с клавиатуры команды JMP B2, B3 (код команды 303, 200, 100) в режиме отладки происходит запись в счетчик команд адреса 100 200, при выполнении команды HLT в режиме чтения программы из памяти происходит останов программы.

Программа 8

Программа позволяет проверить действия всех команд условных переходов.

Текст программы представлен в Таблице 10.

Таблица 10

Адрес Команда Мнемоника Комментарии
LXI SP ; Инициализация указателя стека
В2
В3
POP PSW ; Извлечение из стека слова состояния программы
3х2 х ; х=0..7; одна из команд условного перехода
В2
В3
HLT ; Останов

Перед выполнением программы в памяти по адресу H=000 L=200 записано число 002, соответствующее нулевому значению всех флагов в регистре признаков, а по адресу H=000 L=004 — число 302, определяющее код команды условного перехода по ненулевому результату JNZ.

При выполнении программы в пошаговом режиме осуществляется её циклическое выполнение, т.к. выполняется условие перехода (нулевое значение флага Z означает ненулевой результат).

При изменении данных по адресу H=000 L=200 на число 102 регистр признаков содержит ненулевой бит знака, значения всех остальных флагов равны нулю. В результате такого изменения программа будет выполняться циклически, т.к. по прежнему выполняется условие перехода – ненулевой результат.

Если изменить содержимое ячейки с адресом H=000 L=004 на число 312, программа не будет выполняться циклически, поскольку соответствующее команде JZ (код 312) условие перехода по нулевому результату не выполняется.

Были проверены действия команд условных переходов для каждого из четырех контролируемых признаков результата (нуль, перенос, четность и знак). Переход по признаку межтетрадного переноса АС невозможен.

Коды команд условных переходов и варианты содержимого регистра признаков результата представлены в Таблице 11.

Таблица 11

Команда Данные по адресу L=004 Данные по адресу L=200 флаги признаков результата
(коды команд условного перехода) (содержимое регистра признаков) s z ac p cy
НСУ 0 0 0 0 0
СУ 0 0 0 0 1
P0 0 0 0 0 0
PE 0 0 0 1 0
P 0 0 0 0 0
M 1 0 0 0 0

Диаграммы, иллюстрирующие действие команд условного перехода по признаку нулевого и ненулевого результата JZ и JNZ, представлены на Рис. 4 и Рис. 5 соответственно.

Рис. 4 Рис. 5

Замещение в программе команд условного перехода, записанных по адресу L=004, командами условного вызова и командами условного возврата возможно, если указывать в команде условного вызова адрес подпрограммы или если программа является подпрограммой программы более высокого уровня.

Программа 9

Программа была составлена самостоятельно, программа содержит команды вызова подпрограммы (CALL B2,B3) и возврата в основную программу (RET). Перед выполнением программ, работающих со стеком, необходимо инициализировать указатель стека.

Текст программы приведен в Таблице 12.

Таблица 12

основная программа
адрес команда мнемоника комментарии
lxi SP инициализация стека
call вызов подпрограммы
hlt останов
подпрограмма
nop
ret

Программа 10

Программа поясняет действие команд RST N и RET, используемых при работе с прерывающими программами.

Текст программы представлен в Таблице 13.

Таблица 13

Адреса Команды Мнемоника Комментарии команд
L=000 LXI SP ; Инициализация указателя стека
B2 ; Мл.байт адреса
B3 ; Ст.байт адреса
RST 1 ; Вызов подпрограммы по адресу L=010
HLT ; Останов
RET ; Возврат из подпрограммы

Полное описание работы программы по машинным циклам представлено в Таблице 14.

Таблица 14

Адреса (ША) Содержимое памяти (ШД) Комментарий
инициализация стека
код команды RST 1
запись в стек адреса
возврата из подпрограммы
код команды RET
чтение из стека адреса
возврата
код команды останова

Команда RST N, в отличие от команды CALL B2,B3, которая осуществляет вызов подпрограммы по произвольному указанному адресу, вызывает подпрограмму по адресу, определяемому значением N.

Программа 11

Программа позволяет проследить работу нескольких прерывающих друг друга вложенных программ.

Текст программы представлен в Таблице 15.

Таблица 15

Адрес Команда Мнемоника Комментарии
LXI SP Инициализация указателя стека
В2
В3
RST 1 Вызов подпрограммы 1
HLT Останов
RST 2 Вызов подпрограммы 2
RET Возврат из подпрограммы 1
RST 3 Вызов подпрограммы 3
RET Возврат из подпрограммы 2
RST 4 Вызов подпрограммы 4
RET Возврат из подпрограммы 3
RST 5 Вызов подпрограммы 5
RET Возврат из подпрограммы 4
RET Возврат из подпрограммы 5

На Рис. 6 представлена диаграмма, иллюстрирующая алгоритм работы программы.

Рис. 6

Если в вызываемой или прерывающей программе будет отсутствовать команда RET программа не будет соответствовать алгоритму, не будет происходить возврат в вызывающую программу, в счетчик команд будут записываться адреса, следующие за текущим адресом, а не читаться из стека.

Статьи к прочтению:

Лекция 2:Система команд процессора


Похожие статьи:

  • Структура и система команд эвм

    Решение задач на ЭВМ реализуется программным способом, то есть путем выполнения последовательно во времени отдельных операций,предусмотренных алгоритмом…

  • Система команд эвм общего назначения

    Методы адресации В машинах с регистрами общего назначения метод (или режим) адресации объектов, с которыми манипулирует команда, может задавать…