контрольная по ВМиС
.docЗадание 1. Устройство микропроцессора.
-
Разрядность, быстродействие.
-
Структура памяти, объем основной памяти.
-
Система команд.
В учебно-лабораторном микропроцессорном комплексе УМК в качестве центрального процессора применен микропроцессор КР580ВМ80А. Это восьмиразрядный однокристальный микропроцессор с фиксированной системой команд, предназначенный для построения средств обработки данных, применяемых в устройствах автоматики контроллерах и микроЭВМ.
Арифметико-логический блок включает восьмиразрядное арифметико-логическое устройство (АЛУ) выполняющее 4 арифметических операции (сложение с учетом переноса в младший разряд, сложение без учета переноса в младший разряд, вычитание с учетом заема из младшего разряда и вычитание без учете заема из младшего разряда), 4 логические операции (конъюнкция, дизъюнкция, неравнозначность, сравнение) и четыре вида циклического сдвига (сдвиг влево без переноса, сдвиг вправо без переноса, сдвиг влево с переносом, сдвиг вправо с переносом), блок десятичной коррекции, используемый для формирования кода коррекции 0110 при выполнении в АЛУ действий в двоично-десятичной системе, и регистр признаков, в который заносится информация о результате выполнения
При выполнении арифметических и логических операций одним из операндов служит содержимое аккумулятора и результат выполнения операции помещается в аккумулятор. Циклический сдвиг выполняется только над содержимым аккумулятора. Восьмиразрядный регистр признаков (флажковый регистр) фиксирует пять признаков полученного в АЛУ результата: z - признак нулевого результата, С - перенос из старшего разряда, s - знак результата, Р - признак четности числа единиц в коде результата, АС - дополнительный перенос (перенос из 4-го разряда кода результата). Три разряда этого регистра 1-й, 3-й и 5-й считая справа, хранят фиксированные значения соответственно 1,0,0.
Блок регистров включает семь программно доступных 8-разрядных регистра А, В, С, Д, Е, Н, L. Из них регистр А, называемый аккумулятором, предназначен для обмена информацией с внешними устройствами (т.е. либо содержимое этого регистра может быть выдано на выход, либо со входа в него может быть принято число) при выполнении арифметических, логических операций и операций сдвига. Он служит источником операнда (числа, участвующего в операции), в него помещается результат выполнения операции
Буферные регистры 1 и 2, регистры W и Z используются как буферные, программно-недоступные регистры временного хранения информации. Так регистры W и Z предназначены для приема и временного запоминания второго и третьего байтов команды переходов, передаваемых с внутренней шины данных в счетчик команд. Указатель стека SР (16-разрядный) служит для адресации особого вида памяти, называемого стеком. Счетчик команд РS (16 разрядный) предназначен для хранения адреса команды, после выбора из ОЗУ текущей команды содержимое счетчика увеличивается на единицу и таким образом формируется адрес очередной команды (при отсутствии безусловных и условных переходов).
При обращении к памяти в качестве адреса может использоваться и содержимое любой пары регистров блока РОН.
При выдаче адреса содержимое соответствующих регистров, указателя стека или счетчика команд передается в I6-разрядный управляемый адресный регистр, из которого далее через буфер адреса поступает на 16-разрядную шину адреса. С этой шины адрес может быть принят в ОЗУ.
<Набор ><команд ><МП ><КР580 ><содержит ><78 б><азовых ><команд, ><различающихся ><мнемоническим ><обозначением ><кода ><операции, ><а ><в ><целом ><включает ><244 ><различные ><><модификации. ><Функциональное ><описание ><команд ><приведено ><в ><прил. ><I.>
<Код ><операции ><любой ><команды ><(для ><однобайтовой ><команды >< ><- >< ><это ><ппросто ><код ><команды) ><в ><МП ><представляется ><двоичным ><8 ><- ><разрядным ><кодом. >< ><Например, >< ><код ><команды ><пересылки ><из ><регистра ><А ><в ><регистр ><В ><будет ><иметь ><вид ><01111000, ><код ><операции ><команды ><непосредственной ><записи ><8-разрядного ><операнда >< >< >< ><в >< >< >< ><память><>< >< ><имеет вид ><00110110, а ><команда ><загрузки ><аккумулятора ><с ><непосредственной ><адресацией ><будет ><иметь ><код ><операции ><00111010. >< ><Естественно, ><что ><запомнить более 200 ><бол>кодов ><команд, ><представленных ><в ><виде ><двоичных 8><88-разрядных чисел ><(набора ><единиц ><и ><нулей), ><почти ><невозможно. Поэтому ><каждому ><коду ><команды ><ставится ><в ><соответствие ><мнемоническое ><название ><команды ><(мнемоника), ><которое ><является ><сокращением ><от ><английских ><слов, ><описывающих ><ее ><действие. ><Мнемонический ><код ><команд ><позволяет ><легче ><запомнить ><их ><функции ><и ><значительно ><упрощает ><написание ><программ.>
<После ><мнемоники ><операции ><для ><двухбайтовых ><команд ><записывается ><8-разрядний ><операнд, ><обозначаемый ><D8, ><а ><для ><трехбайтовых ><- ><16-разрядный ><адрес ><ADR, ><либо ><операнд D><DD16.>
<Для с><окращения ><записи ><и ><удобства ><ввода ><в ><ЭВМ ><двоичные ><коды ><команд ><обычно ><представляют ><в ><шестнадцатеричном ><виде. ><Для ><этого ><двоичный ><код ><команды ><делится на>< ><группы ><по ><4 ><разряда ><(тетрады) ><и ><каждая ><тетрада ><представляется ><шестнадцатеричной ><цифрой. ><Таким ><образом, ><коды ><команд ><можно ><представить двухразрядным ><шестнадцатеричным ><кодом><. (Приложение ><2),16 ><-разрядный ><код ><адреса ><-четырьмя ><шестнадцатеричными ><цифрами, ><а ><операнды ><- ><8 ><- ><разрядные ><(D8) ><- ><двумя ><разрядами ><и ><16-разрядлие ><(D16)>< ><- ><четырьмя ><разрядами. ><Так, >< ><например, >< ><код ><команды ><пересылки>
MOV A,B = 0111 10002 = 7816 =78 H
<Таким ><образом, ><зная ><мнемонику ><ко><манды, ><можно ><по таблице (Приложение 2) ><() ><определить ><ее ><шестнадцатеричный ><код, а >< ><по ><таблице ><(Приложение ><1) п><орядок ><ее ><выполнения, ><способ ><адресации, ><формируемые ><признаки ><результата ><и ><т.д.>
<Все ><команды ><МП ><КР580 ><подразделяются на> ><5 ><функционально-><специализированных ><групп ><(Прил. >< >< ><1.2): >
1. <11Команды ><передачи ><данных ><- ><используются ><для ><передачи ><данных ><из ><регистра ><в ><регистр, ><из ><памяти ><в реги><стр ><(рег><истровую ><пару) ><и ><из ><регистра ><(регистровой ><пары) ><в ><память. ><Это ><команды ><типа ><MOV, MVI, LXI, LDA ><и ><т.д.;>
2. Команды арифметических операция применяются < ><к>для двоичных ><операций ><сложения, ><вычитания, инкрементирования ><и декрементирования>< ><содержимого >< >< >< ><регистра >< >< >< ><(регистровой >< >< >< пары><) >< >< >< или ячейки памяти, а также для сложения двоично-десятичных чисел. В состав этой группы входят команды типа ADD, ADI, SUB, SUI, INB, DCR и т.д.
3. Команды логических операций — реализуют операции И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ (неравнозначность), сравнения и сдвига. В состав этой группы входят команды вида АNА. ANI, XRA, XRI, ОRА, RLC, RAR и т.д.
4. Команды передачи управления — используются при условии и безусловных переходах в программе, вызовах подпрограмм и возвратах из них, рестартах подпрограмм при организации многоуровневых векторных прерываний. Это команды вида JMP, JC, CALL и т.д. Команды рестарта из этой группы RSТ0, ..., RST7 образуют особую группу команд. Эти однобайтные команды формируются, как правило, специальными аппаратными средствами (контроллерами прерываний) в режиме прерывания работы МП. В этот режим МП входит, получив сигнал прерывания от системного устройства (при условии, что триггер INTE был установлен в единицу). При этом МП заканчивает цикл выполнения текущей команды (в программном счетчике содержится уже адрес следующей команды программы), сбрасывает в нуль триггер INTE и считывает с ШД(8) код команды рестарта, который выставляется контроллером прерывания. Действие этой аппаратной команды аналогично действию команды вызова подпрограммы, но отличается, во-первых, тем, что ограничено возможностью вызова в соответствии с вектором прерывания лишь из восьми подпрограмм, размещаемых в первых 64 ячейках постоянной памяти и, во-вторых, тем, что при выполнении команды рестарта не происходит, как при выполнении любой другой команды, инкрементирования содержимого программного счетчика. Поэтому в стек записывается адрес очередной команды прерываемой программы, а по команде возврата (в подпрограмме обслуживания прерывания) этот адрес извлекается из стека и управление передается в ту точку прерванной программы, куда постудило прерывание, и продолжается выполнение основной программы.
5. Команды стека, ввода-вывода и управления — используются для управления прерыванием, останова МП, ввода-вывода данных и обращения к стеку, его указателю и вершине. Эта команды PUSН, РОР, ХТНL, IN, OUT, HLT, NOP и др.
Задание 2. Передать управление программе (табл. 1), вычисляющей выражение (а + b) - с при а = 10, b = 3, с = -1, размещенных в ячейках 0820, 0821 и 0822 соответственно, с остановом по адресу 080A.
Таблица 1
Адрес |
Содержимое (машинный код) |
Ассемблерный код (мнемокод) |
Комментарий |
0800 |
21 |
LXI H, 0820 |
Занесение адреса числа а в пару регистров |
0801 |
20 |
|
HL |
0802 |
08 |
|
|
0803 |
7Е |
MOV A, M |
Пересылка числа а из ячейки памяти в аккумулятор |
0804 |
23 |
INX H |
Инкриминирование содержимого регистра HL |
0805 |
86 |
ADD M |
Сложение а + в |
0806 |
23 |
INX H |
Инкриминирование содержимого регистра HL |
0807 |
96 |
SUB M |
Вычитание (а + в) – с |
0808 |
23 |
INX H |
Инкриминирование содержимого регистра HL |
0809 |
77 |
MOV M, A |
Пересылка содержимого аккумулятора в ячейки 0823 |
080А |
76 |
HLT |
Останов. |
... |
|
|
|
0820 |
0A |
A |
|
0821 |
03 |
B |
Числовая информация |
0822 |
FF |
C |
|
Задание 3. Команды передачи управления микропроцессора КР580.
Выполнить на эмуляторе МП КР580 Лабораторную работу №2. Ввести положительные и отрицательные (в дополнительном коде) элементы массива a1, a2, …, a10. Выполнить вариант согласно порядковому номеру в списке группы.
Вариант 2. Даны действительные числа а1, а2, а3…аn (положительные и отрицательные). Найти сумму модулей этих чисел.
Адрес |
Метка |
Содержимое |
Комментарий |
1 |
2 |
3 |
4 |
|
|
LXI H,NACH |
Загрузка адреса начала массива в пару регистров HL (адрес числа N) |
|
|
MOV С,M |
Загрузка числа N в регистр С |
|
|
MVI B 0 |
Загрузка регистра B константой 0 |
|
START: |
INX H |
Формирование адреса числа A1 |
|
|
MOV A,M |
Загрузка числа A1 в аккумулятор |
|
|
STC |
Установка регистра переноса |
|
|
CMC |
Инвертирование регистра переноса |
|
|
ADD B |
Сложение Ai, результат в аккумуляторе МП. |
|
|
MOV B,A |
Пересылка результата в регистр B |
|
|
DCR C |
Декрементир. содерж. регистра С |
|
|
JNZ START |
Условный переход по адресу (на метку) START, если Z=0 (Z=1 - на останов) |
|
|
INX H |
Формирование адреса ячейки памяти для размещения результата |
|
|
MOV M,A |
Пересылка результата в ячейку памяти |
|
|
HLT |
Останов. |
NACH |
|
N |
Массив памяти для размещения исходных данных и результата. |
|
|
A1 |
|
|
|
A2 |
|
|
|
… |
|
|
|
An |
|
|
|
результат |
|
Адрес |
Код |
Метка |
Мнемокод |
Комментарий |
0800 |
21 |
|
LXI H,NACH |
Загрузка адреса начала массива в пару регистров HL (адрес числа N) |
0801 |
13 |
|
|
|
0802 |
08 |
|
|
|
0803 |
4E |
|
MOV С,M |
Загрузка числа N в регистр С |
0804 |
06 |
|
MVI B 0 |
Загрузка регистра B константой 0 |
0805 |
00 |
|
|
|
0806 |
23 |
START: |
INX H |
Формирование адреса числа Ai |
0807 |
7E |
|
MOV A,M |
Загрузка числа Ai в аккумулятор |
0808 |
37 |
|
STC |
Установка регистра переноса |
0809 |
3F |
|
CMC |
Инвертирование регистра переноса |
080A |
80 |
|
ADD B |
Сложение Ai, результат в аккумуляторе МП. |
080B |
47 |
|
MOV B,A |
Пересылка результата в регистр B |
080C |
0D |
|
DCR C |
Декрементир. содерж. регистра С |
080D |
C2 |
|
JNZ START |
Условный переход по адресу (на метку) START, если Z=0 (Z=1 - на останов) |
080E |
06 |
|
|
|
080F |
08 |
|
|
|
0810 |
23 |
|
INX H |
Формирование адреса ячейки памяти для размещения результата |
0811 |
77 |
|
MOV M,A |
Пересылка результата в ячейку памяти |
0812 |
76 |
|
HLT |
Останов. |
0813 |
N |
|
NACH |
Массив памяти для размещения исходных данных и результата. |
0814 |
A1 |
|
|
|
0815 |
A2 |
|
|
|
0816 |
… |
|
|
|
0817 |
An |
|
|
|
0818 |
результат |
|
|
|
0819 |
|
|
|
|
081A |
|
|
|
|
081B |
|
|
|
|
081C |
|
|
|
|
|
|
|
|
|