Добавил:
kostikboritski@gmail.com Выполнение курсовых, РГР технических предметов Механического факультета. Так же чертежи по инженерной графике для МФ, УПП. Писать на почту. Дипломы по кафедре Вагоны Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ПЦУ / 2 семестр / ПЦУ / Лабораторная работа / Лабораторная работа №5

.docx
Скачиваний:
108
Добавлен:
19.08.2017
Размер:
1.3 Mб
Скачать

Лабораторная работа №5

Команды перехода и вызова подпрограмм

Цель работы: Изучить команды перехода и вызова подпрограмм и получить практические навыки работы с ними.

Краткие сведения из теории 

Команды перехода, называемые также командами ветвления, позволяют организовать в программах циклы и разветвления. Команды вызова подпрограмм дают возможность сократить объем разрабатываемых программ за счет повторного использования подпрограмм. Наличие в микропроцессоре стека с указателем стека делает возможным возврат в главную программу после выполнения подпрограммы с помощью команд возврата.

Команды перехода и вызова подпрограмм можно разделить на следующие группы:

  •         команды переходов (JMP, JC, JNC, JZ, JNZ, JP, JM, JPO, JPE);

  •         команды вызова подпрограмм (CALL, CC, CNC, CZ, CNZ, CP, CM, CPO, CPE);

  •         команды возврата (RET, RC, RNC, RZ, RNZ, RP, RM, RPO, RPE);

  •         команды рестартов (RST0, RST1, RST2, RST3, RST4, RST5, RST6, RST7);

  •         команда записи содержимого H-пары в программный счетчик (PCHL).

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

Задание 1 представлено на рисунке 1:

задания

Варианты

1

2

3

4

5

6

7

8

9

10

11

12

2.1

Безусловный переход JMP adr16

первый байт (код) команды поместить в адрес 0000 H,

в адрес 0001 H занести младший байт адреса,

в адрес 0002 H - старший байт адреса

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

001A

001B

Рисунок 1

Выполнение задания 2.1 указано на рисунке 2

Рисунок 2

Задание 2 представлено на рисунке 3:

2.2

Переход, если перенос. JC adr16

(Перед выполнением команды установить флаг CY=1, используя команду STC.)

первый байт (код) команды поместить в адрес 0004 H,

в адрес 0005 H занести младший байт адреса,

в адрес 0006 H - старший байт адреса

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

001A

001B

Рисунок 3

Выполнение задания 2.2 указано на рисунке 4

Рисунок 4

Задание 3 представлено на рисунке 5:

2.3

Переход, не если перенос. JNC adr16

(Перед выполнением команды установить флаг CY=0, используя команду CMC.)

первый байт (код) команды поместить в адрес 0007 H,

в адрес 0008 H занести младший байт адреса,

в адрес 0009 H - старший байт адреса

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

001A

001B

Рисунок 5

Выполнение задания 2.3 указано на рисунке 6

Рисунок 6

Задание 4 представлено на рисунке 7:

2.4

Переход, если нуль. JZ adr16

(Перед выполнением команды установить флаг Z=1, используя команду ANI 00.)

первый байт (код) команды поместить в адрес 000C H,

в адрес 000D H занести младший байт адреса,

в адрес 000E H - старший байт адреса

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

001A

001B

Рисунок 7

Выполнение задания 2.4 указано на рисунке 8

Рисунок 8

Задание 5 представлено на рисунке 9:

2.5

Переход, если не нуль. JNZ adr16

(Перед выполнением команды установить флаг Z=0, используя команду ORI FF.)

первый байт (код) команды поместить в адрес 0011 H,

в адрес 0012 H занести младший байт адреса,

в адрес 0013 H – старший байт адреса

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

001A

001B

Рисунок 9

Выполнение задания 2.5 указано на рисунке 10

Рисунок 10

Задание 6 представлено на рисунке 11:

2.6

Переход, если плюс. JP adr16

(Перед выполнением команды установить флаг S=0, используя команду ANI 00.)

первый байт (код) команды поместить в адрес 0016 H,

в адрес 0017 H занести младший байт адреса,

в адрес 0018 H - старший байт адреса

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

001A

001B

Рисунок 11

Выполнение задания 2.6 указано на рисунке 12

Рисунок 12

Задание 7 представлено на рисунке 13:

2.7

Переход, если минус. JM adr16

(Перед выполнением команды установить флаг S=1, используя команду ORI FF.)

первый байт (код) команды поместить в адрес 001B H,

в адрес 001C H занести младший байт адреса,

в адрес 001D H - старший байт адреса

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

001A

001B

Рисунок 13

Выполнение задания 2.7 указано на рисунке 14

Рисунок 14

Задание 8 представлено на рисунке 15:

2.8

Переход, если четно. JPE adr16

(Перед выполнением команды установить флаг P=1, используя команду ANI 00.)

первый байт (код) команды поместить в адрес 0020 H,

в адрес 0021 H занести младший байт адреса,

в адрес 0022 H - старший байт адреса

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

001A

001B

Рисунок 15

Выполнение задания 2.8 указано на рисунке 16

Рисунок 16

Задание 9 представлено на рисунке 17:

2.9

Переход, если нечетно. JPO adr16

(Перед выполнением команды установить флаг P=0, используя команды ANI 00, ORI 01.)

первый байт (код) команды поместить в адрес 0027 H,

в адрес 0028 H занести младший байт адреса,

в адрес 0029 H - старший байт адреса

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

001A

001B

Рисунок 17

Выполнение задания 2.9 указано на рисунке 18

Рисунок 18

Задание 10 представлено на рисунке 19:

2.10

Безусловный вызов подпрограммы. CALL adr16

первый байт (код) команды поместить в адрес 002A H,

в адрес 002B H занести младший байт адреса,

в адрес 002C H - старший байт адреса

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

001A

001B

Рисунок 19

Выполнение задания 2.10 указано на рисунке 20

Рисунок 20

Задание 11 представлено на рисунке 21:

2.11

Вызов подпрограммы, если перенос. CC adr16

(Перед выполнением команды установить флаг CY=1, используя команду STC.)

первый байт (код) команды поместить в адрес 002E H,

в адрес 002F H занести младший байт адреса,

в адрес 0030 H - старший байт адреса

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

001A

001B

Рисунок 21

Выполнение задания 2.11 указано на рисунке 22

Рисунок 22

Задание 12 представлено на рисунке 23:

2.12

Вызов подпрограммы, если не перенос. CNC adr16

(Перед выполнением команды установить флаг CY=0, используя команду CMC.)

первый байт (код) команды поместить в адрес 0032 H,

в адрес 0033 H занести младший байт адреса,

в адрес 0034 H - старший байт адреса

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

001A

001B

Рисунок 23

Выполнение задания 2.12 указано на рисунке 24

Рисунок 24

Задание 13 представлено на рисунке 25:

2.13

Вызов подпрограммы, если нуль. CZ adr16

(Перед выполнением команды установить флаг Z=1, используя команду ANI 00.)

первый байт (код) команды поместить в адрес 0037 H,

в адрес 0038 H занести младший байт адреса,

в адрес 0039 H - старший байт адреса

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

001A

001B

Рисунок 25

Выполнение задания 2.13 указано на рисунке 26

Рисунок 26

Задание 14 представлено на рисунке 27:

2.14

Вызов подпрограммы, если не нуль. CNZ adr16

(Перед выполнением команды установить флаг Z=0, используя команду ORI FF.)

первый байт (код) команды поместить в адрес 003C H,

в адрес 003D H занести младший байт адреса,

в адрес 003E H - старший байт адреса

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

001A

001B

Рисунок 27

Выполнение задания 2.14 указано на рисунке 28

Рисунок 28

Задание 15 представлено на рисунке 29:

2.15

Вызов подпрограммы, если плюс. CP adr16

(Перед выполнением команды установить флаг S=0, используя команду ANI 00.)

первый байт (код) команды поместить в адрес 0040 H,

в адрес 0041 H занести младший байт адреса,

в адрес 0042 H - старший байт адреса

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

001A

001B

Рисунок 29

Выполнение задания 2.15 указано на рисунке 30

Рисунок 30

Задание 16 представлено на рисунке 31:

2.16

Вызов подпрограммы, если минус. CM adr16

(Перед выполнением команды установить флаг S=1, используя команду ORI FF.)

первый байт (код) команды поместить в адрес 0045 H,

в адрес 0046 H занести младший байт адреса,

в адрес 0047 H - старший байт адреса

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

001A

001B

Рисунок 31

Выполнение задания 2.16 указано на рисунке 32

Рисунок 32

Задание 17 представлено на рисунке 33:

2.17

Вызов подпрограммы, если четно. CPE adr16

(Перед выполнением команды установить флаг P=1, используя команду ANI 00.)

первый байт (код) команды поместить в адрес 004A H,

в адрес 004B H занести младший байт адреса,

в адрес 004C H - старший байт адреса

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

001A

001B

Рисунок 33

Выполнение задания 2.17 указано на рисунке 34

Рисунок 34

Задание 18 представлено на рисунке 35:

2.18

Вызов подпрограммы, если нечетно. CPO adr16

(Перед выполнением команды установить флаг P=0, используя команды ANI 00, ORI 01.)

первый байт (код) команды поместить в адрес 0051 H,

в адрес 0052 H занести младший байт адреса,

в адрес 0053 H - старший байт адреса

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

001A

001B

Рисунок 35

Выполнение задания 2.18 указано на рисунке 36

Рисунок 36

Задание 19 представлено на рисунке 37:

2.19

Безусловный возврат. RET

код команды поместить в адрес 0054 H

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

001A

001B