
ПЦУ / 2 семестр / ПЦУ / Лабораторная работа / Лабораторная работа №5
.docxЛабораторная работа №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 |