- •Описание лабораторного макета
- •Устройство умк
- •2. Подготовка умк к работе
- •3. Порядок работы
- •3.1. Описание клавиатуры.
- •Индикация и изменение содержимого памяти.
- •3.3. Индикация и изменение содержимого регистров.
- •3.4. Передача управления программе пользователя.
- •3.6. Заполнение массива памяти константой.
- •3.8. Прерывание выполнения программы пользователя.
- •3.9. Пошаговое выполнение программ.
- •Лабораторная работа № 1 запись и выполнение простых программ
- •Теоретическая часть
- •Задание для домашней подготовки
- •Задание для выполнения в лаборатории
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 2 виды адресации и команды пересылок
- •Теоретическая часть
- •Задание для домашней подготовки
- •Задание для выполнения в лаборатории
- •Указания по оформлению отчета
- •Контрольные вопросы
- •Организация циклов
- •Задание для домашней подготовки
- •Задание для выполнения в лаборатории
- •Задание для домашней подготовки
- •Задание для выполнения в лаборатории
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 5 выполнение арифметических операций
- •Теоретическая часть
- •Задание для домашней подготовки
- •Задание для домашней подготовки
- •Задание для выполнения в лаборатории
- •Методические указания
- •Способы адресации процессора к1801
- •Форматы команд микропроцессора кр 1801:
- •Коды способов адресации процессора к1801
- •Задание для домашней подготовки
- •Команды переходов
- •Пример 9.2.
- •Пример 9.3
- •Задание для выполнения в лаборатории
- •Контрольные вопросы
- •Лабораторная работа № 10 выполнение арифметических операций в машинных кодах микропроцессора к1801вм1
- •Теоретическая часть
- •Умножение
- •Деление
- •Задание для домашней подготовки
- •Задание для выполнения в лаборатории
- •Указания по оформлению отчета
- •Контрольные вопросы
- •Приложения
- •Система команд микропроцессора кр580вм80а
- •Система команд мп к1801вм1 Одноадресные команды
- •Двухадресные команды
- •Регистровые команды
- •Команды управления
- •Команды прерываний и специальные команды
- •Изменение кодов условий
- •Условные обозначения
- •Время выполнения команд мп к1801вм1
- •1. Устройство умк 3
Контрольные вопросы
В чем отличие алгоритмов умножения при сдвиге влево и сдвиге вправо?
Почему при ограниченной разрядности операндов, когда хотя бы один из них имеет отрицательный знак, умножение в дополнительном коде дает ошибочный результат?
Почему в подпрограммах 1 и 2 в счетчик числа циклов загружается число 16D?
Необходимо произвести умножение 17-ти разрядного положительного числа на 18-ти разрядное отрицательное число. Выбрать число РОН для размещения результата. По какому биту результата можно судить о знаке результата?
Чем вызвана замена команды ASR R1 в подпрограмме 1 на команду ROR R1 в подпрограмме 2?
В чем отличие между классическим алгоритмом деления на основе последовательных операции сдвига и вычитания и алгоритмом, приведенным в методических указаниях?
Доказать, что действительно деление на отрицательное число по упрощенному алгоритму не дает правильного результата.
Почему в подпрограммах 4 и 5 в счетчик числа циклов загружается число 16D?
По упрощенному алгоритму произвести операцию деления чисел (-1021):(41). Числа десятичные.
Чем вызвано ограничение на разрядность частного в подпрограммах 4 и 5?
Приложения
ПРИЛОЖЕНИЕ А
Таблица П.А
Система команд микропроцессора кр580вм80а
Мнемокод |
Содержание команды |
Назначение команды |
Двоичный код |
Число |
Признаки |
||
байтов |
циклов |
Тактов |
|||||
MOV d,S |
(d)(S) |
Пересылка между регистрами (регистром и байтом памяти) |
01DDDSSS |
1 |
1 |
5 |
|
MOV M,S |
M(HL)(S) |
01110SSS |
1 |
2 |
7 |
|
|
MOV d,M |
(d)data |
01DDD110 |
1 |
2 |
7 |
|
|
HLT |
|
останов |
01110110 |
|
|
|
|
MVI d,data |
(d)data |
Переслать непосредственно данные в регистр (байт памяти) |
00DDD110 |
2 |
2 |
7 |
|
MVI M,data |
M(HL) data |
00110110 |
2 |
3 |
10 |
|
|
INR d |
(d)(d)+1 |
Инкремент и декремент содержимого регистра |
00DDD100 |
1 |
1 |
5 |
Z,S,P,AC |
DCR d |
(d)(d)-1 |
00DDD101 |
1 |
1 |
5 |
Z,S,P,AC |
|
INR M |
M(HL) M(HL)+1 |
Инкремент и декремент содержимого байта памяти |
00110100 |
1 |
3 |
10 |
Z,S,P,AC |
DCR М |
M(HL) M(HL)-1 |
00110101 |
1 |
3 |
10 |
Z,S,P,AC |
|
ADD S |
(A) (A)+(S) |
Сложение содержимого аккумулятора и регистра |
10000SSS |
1 |
1 |
4 |
Z,S,P, C,AC |
ADC S |
(A) (A)+(S)+(C) |
10001SSS |
1 |
1 |
4 |
Z,S,P,C,AC |
|
SUB S |
(A)(A)-(S) |
Вычитание из аккумулятора содержимого регистра |
10010SSS |
1 |
1 |
4 |
Z,S,P,C,AC |
SBB S |
(A) (A)-(S)-(C) |
10011SSS |
1 |
4 |
4 |
Z,S,P,C,AC |
|
ANA S |
(A) (A)^(S) |
Логическое И |
10100SSS |
1 |
1 |
4 |
Z,S,P |
XRA S |
(A)(A)+(S) |
Логическое исключающее ИЛИ |
10101SSS |
1 |
1 |
4 |
Z,S,P |
ORA S |
(A)(A)(S) |
Логическое ИЛИ |
10110SSS |
1 |
1 |
4 |
Z,S,P |
|
|
|
|
|
|||
|
|
|
|
|
|||
|
|
|
|
Продолжение табл. П.А |
|||
Мнемокод |
Содержание команды |
Назначение команды |
Двоичный код |
Число |
Признаки |
||
байтов |
циклов |
Тактов |
|||||
CMP S |
If (A) >(S) then Z=0,C=0 If (A)=(S) then Z=1,С=0 If(A)<(S) then Z=0,C=1 |
Сравнить содержимое регистра с содержимым аккумулятора |
10111SSS |
1 |
1 |
4 |
Z,S,P,C,AC |
ADD M |
(A) (A)+ M(HL) |
Сложение содержимого аккумулятора и байта памяти |
10000110 |
1 |
2 |
7 |
Z,S,P,C,AC |
ADC M |
(A)(A)+ M(HL)+(C) |
10001110 |
1 |
2 |
7 |
Z,S,P,C,AC |
|
SUB M |
(A)(A)- M(HL) |
Вычитание из аккумулятора содержимого байта памяти |
10010110 |
1 |
2 |
7 |
Z,S,P,C,AC |
SBB M |
(A)(A)- M(HL)-(C) |
10011110 |
1 |
2 |
7 |
Z,S,P,C,AC |
|
ANA M |
(A) (A)^ M(HL) |
Логическое И |
10100110 |
1 |
2 |
7 |
Z,S,P |
XRA M |
(A)(A)+ M(HL) |
Логическое исключающее ИЛИ |
10101110 |
1 |
2 |
7 |
Z,S,P |
ORA M |
(A) (A) M(HL) |
Логическое ИЛИ |
10110110 |
1 |
2 |
7 |
Z,S,P |
CMP M |
If (A)>M(HL) then Z=0,С=0 if (A)=M(HL) then Z=1,С=0 if (A)<M(HL) then Z=0,C=1 |
Сравнить содержимое байта памяти с содержимым аккумулятора |
10111110 |
1 |
2 |
7 |
Z,S,P,C,AC |
ADI data |
AA+data |
Сложить аккумулятор с непосредственными данными |
11000110 |
2 |
2 |
7 |
Z,S,P,C,AC |
ACI data |
AA+data+C |
11001110 |
2 |
2 |
7 |
Z,S,P,C,AC |
|
SUI data |
AA-data |
Вычесть из аккумулятора непосредственные данные |
11010110 |
2 |
2 |
7 |
Z,S,P,C,AC |
SBI data |
AA-data-C |
11011110 |
2 |
2 |
7 |
Z,S,P |
|
ANI data |
AA^data |
Логическое И |
11100110 |
2 |
2 |
7 |
Z,S,P |
|
|
|
|
Продолжение табл. П.А |
|||
Мнемокод |
Содержание команды |
Назначение команды |
Двоичный код |
Число |
Признаки |
||
байтов |
циклов |
Тактов |
|||||
XRI data |
AA+data |
Логическое искл ИЛИ |
11101110 |
2 |
2 |
7 |
Z,S,P |
ORI data |
AAdata |
Логическое ИЛИ |
11110110 |
2 |
2 |
7 |
Z,S,P |
CPI data |
If (A)>data then Z=0,С=0 if (A)=data then Z=1,С=0 if (A)< data then Z=0,С=1 |
Сравнить непосредственные данные с содержимым аккумулятора |
|
|
|
|
|
RLC |
|
Сдвинуть аккумулятор влево |
00000111 |
1 |
1 |
4 |
С |
RRС |
|
Сдвинуть аккумулятор вправо |
00001111 |
1 |
1 |
4 |
С |
RAL |
|
Сдвинуть аккумулятор влево с переносом |
00010111 |
1 |
1 |
4 |
С |
RAR |
|
Сдвинуть аккумулятор вправо с переносом |
00011111 |
1 |
1 |
4 |
С |
JMP addr |
PC(addr) |
Безусловный переход |
11000011 |
3 |
3 |
10 |
|
|
|
|
|
|
|
|
|
JC addr |
JMP if C=1 |
Переход при выполнении условия |
11011010 |
3 |
3 |
10 |
|
JNC addr |
JMP if C=0 |
11010010 |
3 |
3 |
10 |
|
|
JZ addr |
JMP if Z=1 |
11001010 |
3 |
3 |
10 |
|
|
JNZ addr |
JMP if Z=0 |
11000010 |
3 |
3 |
10 |
|
|
JM addr |
JMP if S=1 |
11111010 |
3 |
3 |
10 |
|
|
JP addr |
JMP if S=0 |
11110010 |
3 |
3 |
10 |
|
|
JPE addr |
JMP if P=1 |
11101010 |
3 |
3 |
10 |
|
|
JPO addr |
JMP if P=0 |
11100010 |
3 |
3 |
10 |
|
|
CALL addr |
stack(PC) (PC)addr |
Безусловный вызов подпрограммы |
11001101 |
3 |
5 |
17 |
|
|
|
|
|
Продолжение табл. П.А |
|||
Мнемокод |
Содержание команды |
Назначение команды |
Двоичный код |
Число |
Признаки |
||
байтов |
циклов |
Тактов |
|||||
СС addr |
CALL if C=1 |
Вызов подпрограммы при выполнении условия |
11011100 |
3 |
3/5 |
11/ 17 |
|
CNC addr |
CALL if C=0 |
11010100 |
3 |
3/5 |
11/ 17 |
|
|
CZ addr |
CALL if Z=1 |
11001100 |
3 |
3/5 |
11/ 17 |
|
|
CNZ addr |
CALL if Z=0 |
11000100 |
3 |
3/5 |
11/ 17 |
|
|
CM addr |
CALL if S=1 |
11111100 |
3 |
3/5 |
11/ 17 |
|
|
CP addr |
CALL if S=0 |
11110100 |
3 |
3/5 |
11/ 17 |
|
|
CPE addr |
CALL if P=1 |
11101100 |
3 |
3/5 |
11/ 17 |
|
|
CPO addr |
CALL if P=0 |
11100100 |
3 |
3/5 |
11/ 17 |
|
|
RET |
(PC)stack |
Безусловный возврат из подпрограммы |
11001001 |
1 |
3 |
10 |
|
RС |
RET if C=1 |
Возврат из подпрограммы при выполнении условия |
11011000 |
1 |
1/3 |
5/11 |
|
RNC |
RET if C=0 |
11010000 |
1 |
1/3 |
5/11 |
|
|
RZ |
RET if Z=1 |
11001000 |
1 |
1/3 |
5/11 |
|
|
RNZ |
RET if Z=0 |
11000000 |
1 |
1/3 |
5/11 |
|
|
RM |
RET if S=1 |
11111000 |
1 |
1/3 |
5/11 |
|
|
RP |
RET if S=0 |
11110000 |
1 |
1/3 |
5/11 |
|
|
RPE |
RET if P=1 |
11101000 |
1 |
1/3 |
5/11 |
|
|
RPO |
RET if P=0 |
11100000 |
1 |
1/3 |
5/11 |
|
|
RST N |
stack(PC) (PC)N*8 |
Переход к подпрограмме обработки прерывания |
11000111 |
1 |
3 |
11 |
|
IN port |
(A)(port) |
Ввод из ВУ |
11011011 |
2 |
3 |
10 |
|
OUT port |
(port)(A) |
Вывод в ВУ |
11010011 |
2 |
3 |
10 |
|
LXI B, d16 |
(BC)data16 |
Загрузить регистровую пару непосредственными данными |
00000001 |
3 |
3 |
10 |
|
LXI D, d16 |
(DE)data16 |
00010001 |
3 |
3 |
10 |
|
|
|
|
|
|
Продолжение табл. П.А |
|||
Мнемокод |
Содержание команды |
Назначение команды |
Двоичный код |
Число |
Признаки |
||
байтов |
циклов |
Тактов |
|||||
LXI H, d16 |
(HL)data16 |
Загрузить регистровую пару непосредственными данными |
00100001 |
3 |
3 |
10 |
|
LXI SP, d16 |
(SP)data16 |
00110001 |
3 |
3 |
10 |
|
|
PUSH B |
stack(BC) |
Запомнить данные в стеке |
11000101 |
1 |
3 |
11 |
|
PUSH H |
stack(HL) |
11100101 |
1 |
3 |
11 |
|
|
PUSH D |
stack(DE) |
11010101 |
1 |
3 |
11 |
|
|
PUSH PSW |
stack(A,F) |
11110101 |
1 |
3 |
11 |
|
|
POP B |
(BC)stack |
Извлечь данные из стека |
11000001 |
1 |
3 |
10 |
|
POP D |
(DE)stack |
11010001 |
1 |
3 |
10 |
|
|
POP H |
(HL)stack |
11100001 |
1 |
3 |
10 |
|
|
POP PSW |
(A,F)stack |
11110001 |
1 |
3 |
10 |
|
|
STA addr |
M(addr)(A) |
Запомнить A в памяти |
00110010 |
3 |
4 |
13 |
|
LDA addr |
(A)M(addr) |
Загрузить A из памяти |
00111010 |
3 |
4 |
13 |
|
XCHG |
(HL)(DE) |
Обмен содержимого регистровых пар |
11101011 |
1 |
1 |
4 |
|
XTHL |
(HL)stack |
Обмен стека |
11100011 |
1 |
5 |
18 |
|
SPHL |
(SP)(HL) |
Загрузить SP из HL пары |
11111001 |
1 |
1 |
5 |
|
PCHL |
(PC)(HL) |
Загрузить счетчик команд |
11101001 |
1 |
1 |
5 |
|
DAD B |
(HL)(HL)+ (BC) |
Двойное сложение |
00001001 |
1 |
3 |
10 |
С |
DAD D |
(HL)(HL)+ (DE) |
00011001 |
1 |
3 |
10 |
C |
|
DAD H |
(HL)(HL)+ (HL) |
00101001 |
1 |
3 |
10 |
C |
|
DAD SP |
(HL)(HL)+ (SP) |
00111001 |
1 |
3 |
10 |
C |
|
STAX B |
M(BC)(A) |
Запомнить аккумулятор |
00000010 |
1 |
2 |
7 |
|
STAX D |
M(DE)(A) |
00010010 |
1 |
2 |
7 |
|
|
|
|
|
|
Продолжение табл. П.А |
|||
Мнемокод |
Содержание команды |
Назначение команды |
Двоичный код |
Число |
Признаки |
||
байтов |
циклов |
Тактов |
|||||
LDAX B |
(A)M(BC) |
Загрузить аккумулятор |
00001010 |
1 |
2 |
7 |
|
LDAX D |
(A)M(DE) |
00011010 |
1 |
2 |
7 |
|
|
INX B |
(BC)(BC)+1 |
Инкрементировать регистровую пару |
00000011 |
1 |
1 |
5 |
|
INX D |
(DE)(DE)+1 |
00010011 |
1 |
1 |
5 |
|
|
INX H |
(HL)(HL)+1 |
00100011 |
1 |
1 |
5 |
|
|
INX SP |
(SP)(SP)+1 |
00110011 |
1 |
1 |
5 |
|
|
DCX B |
(BC)(BC)-1 |
Декрементировать регистровую пару |
00001011 |
1 |
1 |
5 |
|
DCX D |
(DE)(DE)-1 |
00011011 |
1 |
1 |
5 |
|
|
DCX H |
(HL)(HL)-1 |
00101011 |
1 |
1 |
5 |
|
|
DCX SP |
(SP)(SP)-1 |
00111011 |
1 |
1 |
5 |
|
|
CMA |
(A)( |
Инвертировать аккумулятор |
00101111 |
1 |
1 |
4 |
|
STC |
(C)1 |
Установить бит переноса С |
00110111 |
1 |
1 |
4 |
С=1 |
CMC |
(C)( |
Инвертировать бит С |
00111111 |
1 |
1 |
4 |
С= |
DAA |
|
Десятичная настройка аккумулятора |
00100111 |
1 |
1 |
4 |
|
SHLD addr |
M(addr)(L) M(addr+1) (H) |
Запомнить содержимое HL пары |
00100010 |
3 |
5 |
16 |
|
LHLD addr |
(L)M(addr) (H) M(addr+1) |
Загрузить HL пару |
00101010 |
3 |
5 |
16 |
|
EI |
|
Разрешение прерывания |
11111011 |
1 |
1 |
4 |
|
DI |
|
Запрещение прерывания |
11110011 |
1 |
1 |
4 |
|
NOP |
|
Нет операции |
00000000 |
1 |
1 |
4 |
|
Пояснения к таблице
* - число тактов, указано для 2 – х вариантов выполнения команд (передача управления не происходит и происходит);
d – регистр, приемник информации с адресом DDD;
S – регистр, источник информации с адресом SSS;
Регистры имеют следующие адреса: В-000; С-001; D-010; E-011; H-100; L-101; A-111;
(…) – содержимое;
M( …) – содержимое ячейки памяти по указанному адресу;
data – 8-ми разрядный операнд; Р – признак переноса;
addr – 16-ти разрядный адрес; РС – счетчик команд;
SP – указатель стека;
АС – признак вспомогательного переноса;
Z – признак переноса нулевого результата; nnn – двоичное число;
S – признак знака результата; С – признак переноса.
ПРИЛОЖЕНИЕ В
Таблица машинных кодов команд процессора КР580ВМ80А
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
В |
С |
D |
E |
F |
0 |
NOP |
LXI В,16 |
STAX В |
INX В |
INR В |
DCR В |
MVI B,08 |
RLC |
— |
DAD В |
LDAX В |
OCX В |
INR С |
DCR С |
MVI C, 08 |
RRC |
1 |
— |
LXI D,16 |
STAX D |
INX D |
INR D |
DCR D |
MVI D,08 |
RAL |
— |
DAD D |
LDAX D |
OCX D |
INR E |
DCR E |
MVI E., 08 |
RAR |
2 |
— |
LXI Н,16 |
SHLD ADR |
INX H |
INR H |
DCR H |
MVI H,08 |
DAA |
— |
DAD H |
LHLD ADR |
OCX H |
INR L |
DCR L |
MVI L, 08 |
CMA |
3 |
— |
LXI SP,16 |
STA ADR |
INX SP |
INR M |
DCR M |
MVI M,08 |
STC |
— |
DAD SP |
LDAX ADR |
OCX SP |
INR A |
DCR A |
MVI A, 08 |
CMC |
4 |
MOV В,В |
MOV B, C |
MOV B,D |
MOV B,E |
MOV B,H |
MOV B,L |
MOV B,M |
MOV B,A |
MOV C,B |
MOV C,C |
MOV C,D |
MOV C,E |
MOV C,H |
MOV C,L |
MOV C,M |
MOV C,A |
5 |
MOV D,.B |
MOV D,.C |
MOV D,D |
MOV D,E |
MOV D,H |
MOV D,L |
MOV D,M |
MOV D,A |
MOV E,B |
MOV E,C |
MOV E,D |
MOV E,E |
MOV E,H |
MOV E,L |
MOV E.M |
MOV E.A |
6 |
MOV Н,B |
MOV H,C |
MOV H,D |
MOV H,E |
MOV H,H |
MOV H,L |
MOV H,M |
MOV H,A |
MOV L,B |
MOV L,C |
MOV L,D |
MOV L,E |
MOV L,H |
MOV L,L |
MOV L,M |
MOV L,A |
7 |
MOV М,В |
MOV M,C |
MOV M,D |
MOV M,E |
MOV M,H |
MOV M,L |
MOV M,M |
MOV M,A |
MOV A,B |
MOV A,C |
MOV A,D |
MOV A,E |
MOV A,H |
MOV A,L |
MOV A,M |
MOV A,A |
8 |
ADD В |
ADD С |
ADD D |
ADD E |
ADD H |
ADD L |
ADD M |
ADD A |
ADC В |
ADC С |
ADC D |
ADC E |
ADC H |
ADC L |
ADC M |
ADC A |
9 |
SUB В |
SUB С |
SUB D |
SUB E |
SUB H |
SUB L |
SUB M |
SUB A |
SBB В |
SBB С |
SBB D |
SBB E |
SBB H |
SBB L |
SBB M |
SBB A |
А |
ANA В |
ANA С |
ANA D |
ANA E |
ANA H |
ANA L |
ANA M |
ANA A |
XRA В |
XRA С |
XRA D |
XRA E |
XRA H |
XRA L |
XRA M |
XRA A |
В |
ORA В |
ORA С |
ORA D |
ORA E |
ORA H |
ORA L |
ORA M |
ORA A |
CMP В |
CMP С |
CMP D |
CMP E |
CMP H |
CMP L |
CMP M |
CMP A |
С |
RNZ |
POP В |
JNZ ADR |
JMP ADR |
CNZ ADR |
PUSH В |
ADI 08 |
RST 0 |
RZ |
RET |
JZ ADR |
— |
CZ ADR |
CALL ADR |
ACI 08 |
RST 1 |
D |
RNC |
POP D |
JNC ADR |
OUT 08 |
CNC ADR |
PUSH D |
SUI 08 |
RST 2 |
RC |
— |
JC ADR |
IN 08 |
CC ADR |
— |
SBI 08 |
RST 3 |
Е |
RPO |
POP Н |
JPO ADR |
XTHL |
CPO ADR |
PUSH H |
ANI 08 |
RST 4 |
RPE |
PCHL |
JPE ADR |
XCHG |
CPE ADR |
— |
XRI 08 |
RST 5 |
F |
RP |
POP PSW |
JP ADR |
DI |
CP ADR |
PUSH PSW |
ORI 08 |
RST 6 |
RM |
SPHL |
JM ADR |
El |
CMP ADR |
— |
CPI 08 |
RST 7 |
ПРИЛОЖЕНИЕ С
