Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OMT&МП2.doc
Скачиваний:
12
Добавлен:
13.11.2019
Размер:
2.35 Mб
Скачать

Контрольные вопросы

  1. В чем отличие алгоритмов умножения при сдвиге влево и сдвиге вправо?

  2. Почему при ограниченной разрядности операндов, когда хотя бы один из них имеет отрицательный знак, умножение в дополнительном коде дает ошибочный резуль­тат?

  3. Почему в подпрограммах 1 и 2 в счетчик числа циклов загружается число 16D?

  4. Необходимо произвести умножение 17-ти разрядного положительного числа на 18-ти разрядное отрицательное число. Выбрать число РОН для размещения результата. По какому биту результата можно судить о знаке результата?

  5. Чем вызвана замена команды ASR R1 в подпрограмме 1 на команду ROR R1 в подпрограмме 2?

  6. В чем отличие между классическим алгоритмом деления на основе последовательных операции сдвига и вычитания и алгоритмом, приведенным в методических ука­заниях?

  7. Доказать, что действительно деление на отрицательное число по упрощенному алгоритму не дает правильного результата.

  8. Почему в подпрограммах 4 и 5 в счетчик числа циклов загружается число 16D?

  9. По упрощенному алгоритму произвести операцию деления чисел (-1021):(41). Числа десятичные.

  10. Чем вызвано ограничение на разрядность частного в подпрограммах 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

AA+data

Сложить аккумулятор с непосредственными данными

11000110

2

2

7

Z,S,P,C,AC

ACI data

AA+data+C

11001110

2

2

7

Z,S,P,C,AC

SUI data

AA-data

Вычесть из аккумулятора непосредственные данные

11010110

2

2

7

Z,S,P,C,AC

SBI data

AA-data-C

11011110

2

2

7

Z,S,P

ANI data

AA^data

Логическое И

11100110

2

2

7

Z,S,P

Продолжение табл. П.А

Мнемокод

Содержание

команды

Назначение

команды

Двоичный код

Число

Признаки

байтов

циклов

Тактов

XRI data

AA+data

Логическое искл ИЛИ

11101110

2

2

7

Z,S,P

ORI data

AAdata

Логическое ИЛИ

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

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

ПРИЛОЖЕНИЕ С

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]