Особенности функционирования микропроцессора при выполнении команд передачи управления, организации условных и безусловных переходов в программах, страница 2

Составить программу поиска в массиве чисел, расположенном в области памяти 0800-0809, контрольного числа, находящегося в аккумуляторе с последующей выдачей его на дисплей.

Блок схема:

Листинг программы:

адрес

код

мнемоника

Комментарий

0810

26

MVI H, 0B

Определение стека

0811

0B

0812

2E

MVI L, CO

0813

C0

0814

F9

SPHL

0815

06

MVI B, 0

Обнуление счетчика

0816

00

0817

F5

PUSH PSW

Загрузка стека

0818

F1

POP PSW

Извлечение из стека

0819

26

MVI H, 08

В Н загружаем адрес

081A

08

081B

68

MOV L, B

В L загружаем смещение

081C

4E

MOV C, M

081D

F5

PUSH PSW

Загрузка стека

081E

B9

CMP C

Вычитание А –С

081F

CA

JZ 0829

Переход на адрес

0820

29

0821

08

0822

04

INR B

Увеличение счетчика

0823

3E

MVI A, 0A

Загрузка аккумулятора

0824

0A

0825

B8

CMP B

Вычитание А-В

0826

C2

JNZ 0819

Переход на адрес

0827

19

0828

08

0829

76

HLT

Останов

082A

26

MVI H, 09

В Н  семисегментный код

082B

09

082C

69

MOV L, C

082D

7E

MOV A, M

082E

D3

OUT F9

Зажигание индикатора

082F

F9

0830

3E

MVI A, 01

0831

01

0832

D3

OUT F8

0833

F8

Задача:

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

Блок схема:

Листинг программы:

адрес

код

мнемоника

Комментарий

0800

26

MVI H, 0B

Определение стека

0801

0B

0802

2E

MVI L, CO

0803

C0

0804

F9

SPHL

0805

3E

MVI A <=80

В порт F9 записать 80h

0806

80

0807

D3

OUT

0808

F9

0809

3E

MVI A <=75

В порт F8 записать 75h

080A

75

080B

D3

OUT

080C

F8

080D

CD

CALL

Переход на подпрограмму задержки

080E

00

080F

0A

0810

3E

MVI <=BA

В порт F8 записать Bah

0811

BA

0812

D3

OUT

0813

F8

0814

CD

CALL

Переход на подпрограмму задержки

0815

00

0816

0A

0817

C3

JMP

Возврат в начало программы

0818

05

0819

08

0A00

0E

MVI C, 32h

Подпрограмма задержки

0A01

32

0A02

79

MOV A,C

0A03

A1

ANA C

0A04

CA

JZ

Выход из подпрограммы

0A05

0E

0A06

0A

0A07

CD

CALL

Переход на подпрограмму задержки

0A08

A0

0A09

0A

0A0A

0D

DCR C

0A0B

C3

JMP

0A0C

02

0A0D

0A

0A0E

C9

RET

Возврат

0AA0

06

MVI B, FF

Подпрограмма задержки

0AA1

FF

0AA2

78

MOV A,B

0AA3

A0

ANA B

0AA4

CA

JZ

0AA5

AD

0AA6

0A

0AA7

05

DCR B

0AA8

00

NOP

0AA9

00

NOP

0AAA

C3

JMP

0AAB

0A

0AAC

A2

0AAD

C9

RET

Возврат

Задание: Составить программу выдачи на дисплей название своей группы.

Блок схема:

Листинг:

адрес  

код

мнемоника

комментарий

0800

7F

7F

Семисегментный код “B”

0801

78

78

Семисегментный код “t”

0802

40

40

Семисегментный код “-“

0803

66

66

Семисегментный код “4”

0804

3F

3F

Семисегментный код “0”

0805

07

07

Семисегментный код “7”

0810

01

01

Номер разряда дисплея

0811

02

02

Номер разряда дисплея

0812

04

04

Номер разряда дисплея

0813

08

08

Номер разряда дисплея

0814

10

10

Номер разряда дисплея

0815

20

20

Номер разряда дисплея

0820

01

LXI B, data8

BC←0800

0821

00

00

0822

08

08

0823

11

LXI D, data16

DE←0810

0824

10

10

0825

08

08

0826

26

MVI H, data8

H←06

0827

06

06

0828

0A

LDAX B

A←M(BC)

0829

D3

OUT port

F9←A

082A

F9

F9

082B

1A

LDAX D

A←M(DE)

082C

D3

OUT port

F8←A

082D

F8

F8

082E

13

INX D

DE=DE+1

082F

03

INX B

BC=BC+1

0830

25

DCR H

H=H-1

0831

3E

MVI A, data8

A←00

0832

00

00

0833

D3

OUT port

F8←A

0834

F8

F8

0835

C2

JNZ addr

Перейти в 0828

0836

28

28

0837

08

08

0838

C3

JMP addr

Перейти в 0820

0839

20

20

083A

08

08

083B

76

HLT

Остановка


Вывод: В процессе выполнения лабораторной работы Я изучил особенности функционирования микропроцессора при выполнении команд передачи управления, организации условных и безусловных переходов в программах; приобрел навыки модульного программирования.