Вы находитесь на странице: 1из 11

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ 

РОССИЙСКОЙ ФЕДЕРАЦИИ 
Федеральное государственное автономное  
образовательное учреждение высшего образования  
«Крымский федеральный университет имени В.И. Вернадского» 
Таврический колледж 
(структурное подразделение) 

ПРАКТИЧЕСКАЯ РАБОТА №4
ПО ДИСЦИПЛИНЕ «МИКРОПРОЦЕССОРНЫЕ СИСТЕМЫ»
НА ТЕМУ:

«СОСТАВЛЕНИЕ ПРОГРАММ НА БАЗЕ ЭМУЛЯТОРА


МИКРОПРОЦЕССОРНОЙ СИСТЕМЫ КР580ВМ80»

Выполнил:
Студент 3 курса
Группы 3КСК15
Рамазанов Эмир Ильясович
Преподаватель:
Руденко Андрей Владимирович

г. Симферополь, 2020 г.
ПРАКТИЧЕСКАЯ РАБОТА №4
«СОСТАВЛЕНИЕ ПРОГРАММ НА БАЗЕ ЭМУЛЯТОРА
МИКРОПРОЦЕССОРНОЙ СИСТЕМЫ КР580ВМ80»
Целью занятия является совершенствование навыков работы с эмулятором
ассемблера для процессора КР580ВМ80, составления линейных программ и
программ с использованием условных переходов, выполнения
ассемблирования программы.
ЗАДАНИЯ
Составить программы на языке ассемблера для КР580, выполняющие
решения следующих задач.
1. Определить периметр треугольника, если заданы длины трех его
сторон. Подпрограмма 1 [0000h - 0009h]
0000 3E MVI A, d8
0001 04 INR B
0002 06 MVI B, d8
0003 06 MVI B, d8
0004 0E MVI C, d8
0005 09 DAD B
0006 80 ADD B
0007 81 ADD C
0008 57 MOV D, A
0009 76 HLT
Содержимое регистров:
A = 13h
B = 06h C = 09h
D = 13h
2. Определить сумму трех чисел. Подпрограмма 2 [0000h - 0014h]
0000 21 LXI H, d16
0001 10 -
0002 00 NOP
0003 7E MOV A, M
0004 23 INX H
0005 46 MOV B, M
0006 80 ADD B
0007 23 INX H
0008 4E MOV C, M
0009 81 ADD C
000A 23 INX H
000B 77 MOV M, A
000C 76 HLT
000D 00 NOP
000E 00 NOP
000F 00 NOP
0010 04 INR B
0011 06 MVI B, d8
0012 09 DAD B
0013 13 INX D
0014 00 NOP
Содержимое регистров:
A = 13h
B = 06h C = 09h
L = 13h
3. Даны два числа, определить их сумму и разность. Подпрограмма 3
[0000h - 0010h]
0000 06 MVI B, d8
0001 04 INR B
0002 16 MVI D, d8
0003 06 MVI B, d8
0004 78 MOV A, B
0005 82 ADD D
0006 4F MOV C, A
0007 78 MOV A, B
0008 92 SUB D
0009 D2 JNC adr
000A 0C INR C
000B 00 NOP
000C 7A MOV A, D
000D 90 SUB B
000E 5F MOV E, A
000F 76 HLT
0010 00 NOP
Содержимое регистров:
A = 02h
B = 04h C = 0Ah
D = 06h E = 02h
4. Даны два числа увеличить каждое на 5510.
Подпрограмма 4 [0000h - 000Dh]
0000 06 MVI B, d8
0001 04 INR B
0002 0E MVI C, d8
0003 06 MVI B, d8
0004 1E MVI E, d8
0005 37 STC
0006 78 MOV A, B
0007 83 ADD E
0008 57 MOV D, A
0009 79 MOV A, C
000A 83 ADD E
000B 67 MOV H, A
000C 76 HLT
000D 00 NOP
Содержимое регистров:
A = 3Dh
B = 04h C = 06h
D = 3Bh E = 37h
H = 3Dh
5. Даны три числа, уменьшить каждое на 4210.
Подпрограмма 5 [0000h - 0026h]
0000 21 LXI H, d16
0001 20 -
0002 00 NOP
0003 06 MVI B, d8
0004 2A LHLD adr
0005 7E MOV A, M
0006 90 SUB B
0007 23 INX H
0008 23 INX H
0009 23 INX H
000A 77 MOV M, A
000B 2B DCX H
000C 2B DCX H
000D 7E MOV A, M
000E 90 SUB B
000F 23 INX H
0010 23 INX H
0011 23 INX H
0012 77 MOV M, A
0013 2B DCX H
0014 2B DCX H
0015 7E MOV A, M
0016 90 SUB B
0017 23 INX H
0018 23 INX H
0019 23 INX H
001A 77 MOV M, A
001B 76 HLT
001C 00 NOP
001D 00 NOP
001E 00 NOP
001F 00 NOP
0020 04 INR B
0021 06 MVI B, d8
0022 09 DAD B
0023 DA JC adr
0024 DC CC adr
0025 DF RST 3
0026 00 NOP
Содержимое регистров:
A = DFh
B = 2Ah
6. Дан периметр треугольника и длины двух его сторон, определить
длину третьей стороны.
Подпрограмма 6 [0000h - 000Dh]
0000 06 MVI B, d8
0001 04 INR B
0002 0E MVI C, d8
0003 06 MVI B, d8
0004 16 MVI D, d8
0005 13 INX D
0006 78 MOV A, B
0007 81 ADD C
0008 5F MOV E, A
0009 7A MOV A, D
000A 93 SUB E
000B 67 MOV H, A
000C 76 HLT
000D 00 NOP
Содержимое регистров:
A = 09h
B = 04h C = 06h
D = 13h E = 0Ah
H = 09h
7. Определить максимальное из двух чисел.
Подпрограмма 7 [0000h - 000Ch]
0000 06 MVI B, d8
0001 04 INR B
0002 0E MVI C, d8
0003 06 MVI B, d8
0004 78 MOV A, B
0005 B9 CMP C
0006 DA JC adr
0007 0A LDAX B
0008 00 NOP
0009 79 MOV A, C
000A 5F MOV E, A
000B 76 HLT
000C 00 NOP
Содержимое регистров:
A = 06h
B = 04h C = 06h
E = 07h
8. Определить минимальное из трех чисел.
Подпрограмма 8 [0000h - 0015h]
0000 06 MVI B, d8
0001 04 INR B
0002 0E MVI C, d8
0003 06 MVI B, d8
0004 16 MVI D, d8
0005 09 DAD B
0006 78 MOV A, B
0007 B9 CMP C
0008 DA JC adr
0009 20 -
000A 00 NOP
000B BA CMP D
000C DA JC adr
000D 12 STAX D
000E 00 NOP
000F 5F MOV E, A
0010 76 HLT
0011 00 NOP
0012 5A MOV E, D
0013 00 NOP
0014 76 HLT
0015 00 NOP
Содержимое регистров:
A = 04h
B = 04h C = 06h
D = 09h E = 04h
9. Даны два числа (регистры В и С). Из одного числа вычесть другое,
результат заменить нулем, если он отрицательный, увеличить на единицу в
противном случае.
Подпрограмма 9 [0000h - 0018h]
0000 06 MVI B, d8
0001 04 INR B
0002 0E MVI C, d8
0003 06 MVI B, d8
0004 78 MOV A, B
0005 B9 CMP C
0006 DA JC adr
0007 11 LXI D, d16
0008 00 NOP
0009 91 SUB C
000A 21 LXI H, d16
000B 20 -
000C 00 NOP
000D 7E MOV A, M
000E 5E MOV E, M
000F 76 HLT
0010 00 NOP
0011 91 SUB C
0012 21 LXI H, d16
0013 21 LXI H, d16
0014 00 NOP
0015 86 ADD M
0016 5F MOV E, A
0017 76 HLT
0018 00 NOP
Содержимое регистров:
B = 04h C = 06h L = 20h
10. Даны два числа, большее уменьшить на 5, меньшее увеличить на 10.
Подпрограмма 10 [0000h - 0022h]
0000 06 MVI B, d8
0001 04 INR B
0002 0E MVI C, d8
0003 09 DAD B
0004 78 MOV A, B
0005 B9 CMP C
0006 DA JC adr
0007 14 INR D
0008 00 NOP
0009 21 LXI H, d16
000A 21 LXI H, d16
000B 00 NOP
000C 86 ADD M
000D 57 MOV D, A
000E 2B DCX H
000F 79 MOV A, C
0010 96 SUB M
0011 5F MOV E, A
0012 76 HLT
0013 00 NOP
0014 21 LXI H, d16
0015 20 -
0016 00 NOP
0017 96 SUB M
0018 57 MOV D, A
0019 23 INX H
001A 79 MOV A, C
001B 86 ADD M
001C 5F MOV E, A
001D 76 HLT
001E 00 NOP
001F 00 NOP
0020 05 DCR B
0021 0A LDAX B
0022 00 NOP
Содержимое регистров:
A = 04h
B = 04h C = 09h
D = 0Dh E = 04h
L = 20h