Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПТ методичка исправл длин прилож.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
982 Кб
Скачать
☆

4.8 Задание для домашней подготовки

4.8.1. Изучить мультиплексный способ вывода информации на дисплей.

4.8.2. Изучить принцип определения номера нажатой клавиши на клавиатуре.

4.8.3. Разработать программу вывода на дисплей текста, предварительно записанного в буфер.

4.8.4. Разработать программу контроллера «бегущих огней».

4.8.5. Разработать программу последовательного вывода на один индикатор дисплея текстового сообщения.

4.8.6. Разработать программу последовательного вывода символа «А» на все индикаторы дисплея.

  1. Порядок выполнения работы

5.1. Показать преподавателю разработанную программу и защитить ее.

5.2. Записать в оперативную память микроЭВМ машинные коды разработанной программы.

5.3. Отладить программу в пошаговом режиме.

5.4. Запустить программу и получить результат ее работы.

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

6.1. Порядок вывода информации на сегментные индикаторы.

6.2. Как изменится работа программы индикации, если в регистр (В) будет записан код 00010100 ?

6.3. Как определяется номер нажатой клавиши?

6.4. «Дребезг» и его устранение?

Приложение

Коды команд микропроцессора КР580 ИК80А

Таблица 27

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

0

NOP

LXI

B, &

STAX

B

INX

B

INR

B

DCR

B

MVI B, #

RLC

-

DAD

B

LDAX

B

DCX

B

INR

C

DCR

C

MVI

C,#

RRC

0

1

-

LXI

D, &

STAX

D

INX

D

INR

D

DCR

D

MVI

D, #

RAL

-

DAD

D

LDAX

D

DCX

D

INR

E

DCR

E

MVI

E, #

RAR

1

2

-

LXI

H, &

SHLD

*

INX

H

INR

H

DCR

H

MVI

H, #

DAA

-

DAD

H

LHLD

*

DCX

H

INR

L

DCR

L

MVI

L, #

CMA

2

3

-

LXI

SP, &

STA

*

INX

SP

INR

M

DCR

M

MVI

M, #

STC

-

DAD

SP

LDA

*

DCX

SP

INR

A

DCR

A

MVI

A, #

CMC

3

4

MOV

B, B

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

4

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

5

6

MOV

H, 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

6

7

MOV

M, B

MOV

M, C

MOV

M, D

MOV

M, E

MOV

M, H

MOV

M, L

MOV

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

7

8

ADD

B

ADD

C

ADD

D

ADD

E

ADD

H

ADD

L

ADD

M

ADD

A

ADC

B

ADC

C

ADC

D

ADC

E

ADC

H

ADC

L

ADC

M

ADC

A

8

9

SUB

B

SUB

C

SUB

D

SUB

E

SUB

H

SUB

L

SUB

M

SUB

A

SBB

B

SBB

C

SBB

D

SBB

E

SBB

H

SBB

L

SBB

M

SBB

A

9

A

ANA

B

ANA

C

ANA

D

ANA

E

ANA

H

ANA

L

ANA

M

ANA

A

XRA

B

XRA

C

XRA

D

XRA

E

XRA

H

XRA

L

XRA

M

XRA

A

A

B

ORA

B

ORA

C

ORA

D

ORA

E

ORA

H

ORA

L

ORA

M

ORA

A

CMP

B

CMP

C

CMP

D

CMP

E

CMP

H

CMP

L

CMP

M

CMP

A

B

C

RNZ

POP

E

JNZ

*

JMP

*

CNZ

*

PUSH

B

ADI

#

RST

0

RZ

RET

JZ

*

-

CZ

*

CALL

*

ACI

*

RST

1

C

D

RNC

POP

D

JNC

*

OUT

N

CNC

*

PUSH

D

SUI

#

RST

#

RC

-

JC

*

IN

N

CC

*

-

SBI

#

RST

5

D

E

RPO

POP

H

JPO

*

XTHL

CPO

*

PUSH

H

ANI

#

RST

4

RPE

RCHL

JPE

*

XCHB

CPE

*

-

XRI

#

E

F

RP

POP

PSW

JP

*

DI*

CP

*

PUSH

RSW

ORI

#

RST

6

RM

SPHL

JM

*

EI

CM

*

-

CPI

#

RST

7

F

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

Продолжение

Подпрограмма LIGHT

высвечивает на первом индикаторе те сегменты, которые соответствуют 1 в управляющем байте. Управляющий байт считывается

с регистра L.

Никакие задержки данная программа не предусматривает.

0890 3E 10 LIGHT: MVI A, 10H ; выбор 1-го индикатора

0892 D3 F8 OUT PR1 ; для засветки

0894 7D MOV A, L ; высветить на индикаторе ;содержимое регистра L

0895 D3 F9 OUT PR2 ;

0897 C9 RET ;возврат в основную

программу

Подпрограмма PAUSE

вызывает подпрограмму задержки, находящуюся в ПЗУ УМК

начиная с адреса 035BH. Число обращений к подпрограмме считывается из регистра B.

08A0 CD 5B 03 PAUSE: CALL 035BH ; вызов подпрограмм ;мы задержки из ;ПЗУ

08A3 0D DCR C ; декремент счетчика ; циклов задержки

08A4 79 MOV A, C ; если счетчика не ; обнулился, то

08A5 C2 A0 08 JNZ PAUSE ; повторить цикл

08A8 C9 RET ; иначе выход из ; подпрограммы

Продолжение

Подпрограмма L&P

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

Эта подпрограмма автоматически вызывает подпрограмму засветки LIGHT 1-го индикатора (код засветки помещен в регистр L), после

чего помещает в регистр С число 30Н обращений к подпрограмме задержки PAUSE. После 30Н обращений к ней подпрограмма L&P передает управление основной программе, из которой она была вызвана.

08A9 CD 90 08 L&P: CALL LIGHT ;выполнить подпрограмму LIGHT

08AC 0E 30 MVI C, 30H ; вызвать подпрограмму

08AE CD A0 08 CALL PAUSE ; задержки с повтором её ;"задерживающего цикла " 30Н раз

08B1 C9 RET ; выход из подпрограммы

Подпрограмма TIME

задерживает основную программу на 7816 мкс, включая и команду ее вызова (CALL TIME). Продолжительность выполнения команд приведена в описании команд микропроцессора К580ИК80:

CALL TIME - 8,5 мкс.

MVI E, X - 3,5 мкс.

DCR E - 2,5 мкс.

JNZ COUNT - 5 мкс.

RET - 5 мкс.

С учетом этих данных подпрограмма задержки имеет вид (подробнее см. методические указания к данной лабораторной работе):

из основной программы CALL TIME [8.5 мкс]

08A0 1E FF TIME: MVI E, FFH ; загрузка в Е числа повторов ;256 [3.5 мкс]

прошло 13.5 мкс

задержка [ (2.5+5)*256 = 1920 мкс.]

08A2 1D COUNT1:DCR E ; декремент счетчика [2.5 ;мкс]

08A3 C2 A2 08 JNZ COUNT1 ; цикл, если Е<>0 [5 мкс]

; прошло 1937 мкс

08A6 1E FF MVI E, FFH ; загрузка в Е числа повторов ; 256 [3.5 мкс]

задержка [ (2.5+5)*256 = 1920 мкс.]

08A8 1D COUNT2: DCR E ; декремент счетчика [2.5 ;мкс]

08A9 C2 A8 08 JNZ COUNT2 ; цикл, если Е<>0 [5 мкс]

прошло 3860.5 мкс

08AC 1E FF MVI E, FFH ; загрузка в Е числа повторов ;256

[3.5 мкс]

задержка [ (2.5+5)*256 = 1920 мкс.]

08AE 1D COUNT3:DCR E ; декремент счетчика [2.5 ;мкс]

08AF C2 AE 08 JNZ COUNT2 ; цикл, если Е<>0 [5 мкс]

прошло 5784.0 мкс

08B2 1E FF MVI E, FFH ; загрузка в Е числа повторов ;256

[3.5 мкс]

задержка [ (2.5+5)*256 = 1920 мкс.]

08B4 1D COUNT4:DCR E ; декремент счетчика [2.5 ;мкс]

08B5 C2 B4 08 JNZ COUNT4 ; цикл, если Е<>0 [5 мкс]

прошло 7707.5 мкс

08B8 1E 0C MVI E, 0CH ; загрузка в Е числа повторов ;13

[3.5 мкс]

задержка [ (2.5+5)*13 = 97.5 мкс.]

08BA 1D COUNT5: DCR E ; декремент счетчика [2.5 ;мкс]

08BB C2 BA 08 JNZ COUNT4 ; цикл, если Е<>0 [5 мкс]

прошло 7808.5 мкс

добавим 2.5 мкс

08BE 1D DCR E ; операция длится [2.5 мкс]

прошло 7811 мкс

08BF C9 RET ; возврат в подпрограмму [5 ; мкс]

[итого 7816 мкс.]

Продолжение

Список машинных команд упорядоченных по имени табл.28.

Таблица 28

Команда

КОП

Команда

КОП

Команда

КОП

ACI DATA

CE

CMA

2F

DCX B

0B

ADC A

8F

CMC

3F

DCX D

1B

ADC B

88

CMP A

BF

DCX H

2B

ADC C

89

CMP B

B8

DCX SP

3B

ADC D

8A

CMP C

B9

DI

F3

ADC E

8B

CMP B

BA

EI

F8

ADC H

8C

CMP E

BB

HLT

76

ADC L

8D

CMP H

BC

IN PORT

DB

ADC M

8E

CMP L

BD

INR A

3C

ADD A

87

CMP M

BE

INR B

04

ADD B

80

CNC ADDR

D4

INR C

0C

ADD C

81

CNZ ADDR

C4

INR D

14

ADD D

82

CP ADDR

F4

INR E

1C

ADD E

83

CPE ADDR

EC

INR H

24

ADD H

84

CPI ADDR

FE

INR L

2C

ADD L

85

CPO ADDR

E4

INR M

34

ADD M

86

CZ ADDR

CC

INX C

03

ADI DATA

C6

DAA

27

INX D

13

ANA A

A7

DAD B

09

INX H

23

ANA B

A0

DAD D

19

INX SP

33

ANA C

A1

DAD H

29

JC ADDR

DA

ANA D

A2

DAD SP

39

JM ADDR

FA

ANA E

A3

DCR A

3D

JMP ADDR

C3

ANA H

A4

DCR B

05

JNC ADDR

D2

ANA L

A5

DCR C

0D

JNZ ADDR

C2

ANA M

A6

DCR D

15

JP ADDR

F2

ANI DATA

E6

DCR E

1D

JPE ADDR

EA

CALL ADDR

CD

DCR H

25

JPO ADDR

E2

CC ADDR

DC

DCR L

2D

JZ ADDR

CA

CM ADDR

FC

DCR M

35

LDA ADDR

3A

Продолжение таблицы 28

Команда

КОП

Команда

КОП

Команда

КОП

LDAX B

0A

MOV C, M

4E

MOV L, H

6C

LDAX D

1A

MOV D, A

57

MOV L, L

6D

LHLD ADDR

2A

MOV D, B

50

MOV L, M

6E

LXI B, DATA 16

01

MOV D, C

51

MOV M, A

77

LXI D, DATA 16

11

MOV D, D

52

MOV M, B

70

LXI H, DATA 16

21

MOV D, E

53

MOV M, C

71

LXI SP, DATA 16

31

MOV D, H

54

MOV M, D

72

MOV A, A

7F

MOV D, L

55

MOV M, E

73

MOV A, B

78

MOV D, M

56

MOV M, H

74

MOV A, C

79

MOV E, A

5F

MOV M, L

75

MOV A, D

7A

MOV E, B

58

MVI A, DATA

3E

MOV A, E

7B

MOV E, C

59

MVI B, DATA

06

MOV A, H

7C

MOV E, D

5A

MVI C, DATA

0E

MOV A, L

7D

MOV E, E

5B

MVI D, DATA

16

MOV A, M

7E

MOV E, H

5C

MVI E, DATA

1E

MOV B, A

47

MOV E, L

5D

MVI H, DATA

26

MOV B, B

40

MOV E, M

5E

MVI L, DATA

2E

MOV B, C

41

MOV H, A

67

MVI M, DATA

36

MOV B, D

42

MOV H, B

60

NOP

00

MOV B, E

43

MOV H, C

61

ORA A

B7

MOV B, H

44

MOV H, D

62

ORA B

B0

MOV B, L

45

MOV H, E

63

ORA C

B1

MOV B, M

46

MOV H, H

64

ORA D

B2

MOV C, A

4F

MOV H, L

65

ORA E

B3

MOV C, B

48

MOV H, M

66

ORA H

B4

MOV C, C

49

MOV L, A

6F

ORA L

B5

MOV C, D

4A

MOV L, B

68

ORA M

B6

MOV C, E

4B

MOV L, C

69

ORI DATA

F6

MOV C, H

4C

MOV L, D

6A

OUT PORT

D3

MOV C, L

4D

MOV L, E

6B

PCHL

E9

Продолжение таблицы 28

Команда

КОП

Команда

КОП

Команда

КОП

POP B

C1

SBB B

98

XRA L

AD

POPD

D1

SBB C

99

XRA M

AE

POP H

E1

SBB D

9A

XRI DATA

EE

POP PSW

F1

SBB E

9B

XTHL

E3

PUSH B

C5

SBB H

9C

PUSH D

D5

SBB L

9D

PUSH H

E5

SBB M

9E

PUSH PSW

F5

SBI DATA

DE

RAL

17

SHLD ADDR

22

RAR

1F

SPHL

F9

RC

D8

STA ADDR

32

RET

C9

STAX B

2

RLC

7

STAX D

12

RM

F8

STC

37

RNC

D0

SUB A

97

RNZ

CO

SUB B

90

RP

F0

SUB C

91

RPE

E8

SUB D

92

RPO

E0

SUB E

93

RRC

0F

SUB H

94

RST 0

C7

SUB L

95

RST 1

C7

SUB M

96

RST 2

D7

SUI DATA

D6

RST 3

DF

XCHG

EB

RST 4

E7

XRA A

AF

RST 5

EF

XRA B

A8

RST 6

F7

XRA C

A9

RST 7

FF

XRA D

AA

RZ

C8

XRA E

AB

SBB A

9F

XRA H

AC

Продолжение

В зависимости от характера выполняемых операций систему команд микропроцессора КР 580 ИК 80А можно разбить на следующие группы:

  • команды пересылки,

  • арифметические и логические команды,

  • команды управления.

Группа команд пересылки содержит следующие команды:

  • MOV D, S – пересылки между регистрами A, B, C, D, E, H, L или между регистрами и памятью с использованием соответственно регистровой и косвенной адресации через пару H-L;

  • MVI D, D8 – непосредственной загрузки регистров или ячеек памяти байтом данных, содержащимся в втором байте команды;

  • LDA ADR – загрузка аккумулятора из памяти по адресу, указанному в адресной части команды;

  • STA ADR – запоминания содержимого аккумулятора в памяти по адресу, заданному в адресной части;

  • LDAX RR – загрузка аккумулятора из памяти по адресу, указанному в паре B-C или D-E;

  • STAX RR – запоминания содержимого аккумулятора в памяти по адресу, указанному в паре регистров B-C или D-E;

  • LXI R, D16 – непосредственной загрузки регистровых пар и указателя стека 2-х байтовыми словами, содержащимися во втором и третьем байте команды;

  • PUSH RR – занесения в стек двух байт данных из регистров B-C, D-E, H-L, или PSW;

  • POP RR – извлечения из стека двух байт данных из регистров B-C, D-E, H-L, или PSW;

  • IN N – ввода байта данных в аккумулятор;

  • OUT N – вывода байта данных из аккумулятора;

Группа арифметических и логических команд содержит следующие команды:

  • ADD S – сложение содержимого аккумулятора с содержимым РОН или ячейки памяти, адресуемой парой H-L, при этом результат сохраняется в аккумуляторе и устанавливаются признаки;

  • ADI D8 - сложение содержимого аккумулятора непосредственно с байтом данных содержащимся во втором байте команды при этом результат сохраняется в аккумуляторе и устанавливаются признаки;

  • ADC S – сложение содержимого аккумулятора с прибавлением бита переноса с парами РОН или ячейкой памяти, адресуемой парой H-L, позволяют реализовать сложения многобайтных слов;

  • ACI D8 - сложение содержимого аккумулятора с прибавлением бита переноса непосредственно с байтом данных, содержащимся во втором байте команды, позволяют реализовать сложения многобайтных слов;

  • SUB S – вычитания из содержимого аккумулятора байта данных из РОН или ячейки памяти, косвенно адресуемой содержимым пары H-L;

  • SUI D8 – вычитания из содержимого аккумулятора непосредственно второго байта команды;

  • SBB S и SBI D8 – вычитания с заемом с использованием содержимого триггера переноса, что позволяет выполнять вычитание многобайтных слов;

  • ANA S, ORA S, и XRA S – реализующие логические операции И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ над содержимым аккумулятора и одним из РОН или ячейки памяти, косвенно адресуемой содержимым памяти H-L;

  • ANI D8, ORI D8, XRI D8 – реализующие логические операции И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ над содержимым аккумулятора и вторым байтом команды, как и в предыдущей команде, результат остается в аккумуляторе;

  • CMP S – сравнения содержимого аккумулятора и одного из РОН или ячейки памяти, адресуемой парой регистров;

  • CPI D8 – сравнения содержимого аккумулятора с вторым байтом команды, содержимое аккумулятора как и в предыдущем случае не изменяется, а устанавливаются флажки;

  • INR D и INX X – увеличение содержимого однобайтовых регистров A, B, C, D, E, H, L или ячеек памяти адресуемых

парой H-L, и двухбайтовых регистров B-C, D-E, SP на

единицу;

  • DCR D и DCX X– уменьшение содержимого однобайтовых регистров A, B, C, D, E, H, L или ячеек памяти адресуемых

парой H-L, и двухбайтовых регистров B-C, D-E, SP на

единицу;

  • DAD X – сложения содержимого одной из пар регистров B-C, D-E, SP с содержимым пары H-L, результат при этом сохраняется в H-L, устанавливается признак переноса;

  • DAA - десятичной коррекции, с помощью которой результат двоичного сложения двоично-десятичных чисел преобразуется в двоично-десятичный код;

  • RLC, RRC, или RAR, RAL – циклического сдвига содержимого аккумулятора на один разряд влево или вправо с заполнением флажка переноса или с включением флажка переноса в цепь сдвига;

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

  • JMP ADR, CALL ADR, , RET – безусловного перехода по адресу, вызов подпрограммы и возврат из подпрограммы , при выполнении которых осуществляются операции над содержимым программного счетчика;

  • HLT – останова выполнения команд в процессоре;

  • NOP – холостую команду, не вызывающую изменения состояния регистров процессора, кроме добавления единицы в программный счетчик;

  • RST V- перехода на подпрограмму обслуживания прерываний;