МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"
Кафедра САПР
ЗВІТ
ДО ЛАБОРАТОРНОЇ РОБОТИ № 6
На тему: «Вивчити алгоритми виконання операцій додавання та віднімання двійково-кодованих десяткових чисел для однокристального МП КР580»
З дисципліни : «Архітектура комп’ютерів»
ЛЬВІВ – 2007
Тема роботи: Вивчити алгоритми виконання операцій додавання та віднімання двійково-кодованих десяткових чисел для однокристального МП КР580.
Мета роботи: Вивчити алгоритми виконання операцій додавання та віднімання двійково-кодованих десяткових чисел для однокристального МП КР580, набути практичних навиків складання та налагоджування програм з використанням цих алгоритмів.
ТЕОРЕТИЧНІ ВІДОМОСТІ
________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
ЛАБОРАТОРНЕ ЗАВДАННЯ:
Виконати арифметичні операції над двійково-десятковими числами 98 – 65 – 12 + 5. Дані ввести через регістр А. Результат записати в регістр Н.
ХІД РОБОТИ:
1) 98 – 65 = 98 + (-65) = 33
Yдоп = ( ( 10k – 1 ) – x ) + 1
(-65)доп = ( ( 100 – 1 ) – 65 ) + 1 = 35
98 0000 0000 1001 1000
+ 35(-65) 1001 1001 0011 0101
1001 1001 1100 1101
0110
1001 1001 1101 0011
0110
1001 1010 0011 0011
0110
1010 0000 0011 0011
0110
33 0000 0000 0011 0011
2) 33 – 12 = 33 + (-12) = 21
Yдоп = ( ( 10k – 1 ) – x ) + 1
(-12)доп = ( ( 100 – 1 ) – 12 ) + 1 = 88
33 0000 0000 0011 0011
+ 88(-12) 1001 1001 1000 1000
1001 1001 1011 1011
0110
1001 1001 1100 0001
0110
1001 1010 0010 0001
0110
1010 0000 0010 0001
0110
21 0000 0000 0010 0001
3) 21 + 5 = 26
21 0000 0000 0010 0001
+ 5 0000 0000 0000 0101
26 0000 0000 0010 0110
Для реалізації поставленого завдання була розроблена наступна програма, яка складається з двох частин – LAB6A.ASM (введення даних в пам'ять та переведення в доповняльні коди і BCD формат) та LAB6B.ASM (виконання арифметичних операцій):
LAB6A.ASM:
LAB6B.ASM:
ORG 100H
MVI A,98
STA 180h
MVI A,65
STA 181h
MVI A,12
STA 182h
MVI A,5
STA 183h
LDA 180h
CALL PEREVID
SHLD 184h
LDA 181h
CALL DOPOV
STA 186h
CALL PEREVID
MVI D,99h
DAD D
SHLD 187h
LDA 182h
CALL DOPOV
STA 189h
CALL PEREVID
MVI D,99h
DAD D
SHLD 18Ah
LDA 183h
CALL PEREVID
SHLD 18Ch
JMP EXIT
DOPOV: MOV B,A
MVI A,100
SUB B
RET
PEREVID: MVI H,-1
L100: INR H
SUI 100
JNC L100
ADI 100
MVI L,-1
L10: INR L
SUI 10
JNC L10
ADI 10
MOV C,A
MOV A,L
RRC
RRC
RRC
RRC
ORA C
MOV L,A
RET
EXIT: HLT
ORG 100H
LXI H,4162h
SHLD 180h
LXI H,050Ch
SHLD 182h
LXI H,0098h
SHLD 184h
LXI H,3523h
SHLD 186h
LXI H,5899h
SHLD 188h
LXI H,9988h
SHLD 18Ah
LXI H,0005h
SHLD 18Ch
LHLD 184h
XCHG
LHLD 187h
DAD D
SHLD 190h
CALL DOPOV
SHLD 1A0h
XCHG
LHLD 18Ah
DAD D
SHLD 192h
CALL DOPOV
SHLD 1A2h
XCHG
LHLD 18Ch
DAD D
SHLD 194h
CALL DOPOV
SHLD 1A4h
JMP EXIT
DOPOV: ORI 0
MOV A,L
DAA
MOV L,A
MOV A,H
JNC COR
INR A
COR: ORI 0
DAA
MOV H,A
RET
EXIT: HLT
LAB6A.ASM:
Після компілювання і лінкування програми завантажуємо її у відлагоджувач і перевіряємо чи знаходиться наша програма в пам'яті:
F:[cpm] d lab6a.com
DDT VERS 1.0
NEXT PC
0180 0100
-d100
0100 3E 62 32 80 01 3E 41 32 81 01 3E 0C 32 82 01 3E >b2..>A2..>.2..>
0110 05 32 83 01 3A 80 01 CD 52 01 22 84 01 3A 81 01 .2..:...R."..:..
0120 CD 4D 01 32 86 01 CD 52 01 16 99 19 22 87 01 3A .M.2...R...."..:
0130 82 01 CD 4D 01 32 89 01 CD 52 01 16 99 19 22 8A ...M.2...R....".
0140 01 3A 83 01 CD 52 01 22 8C 01 C3 6F 01 47 3E 64 .:...R."...o.G>d
0150 90 C9 26 FF 24 D6 64 D2 54 01 C6 64 2E FF 2C D6 ..&.$.d.T..d..,.
0160 0A D2 5E 01 C6 0A 4F 7D 0F 0F 0F 0F B1 6F C9 76 ..^...O}.....o.v
0170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0180 1A 84 12 13 C3 69 01 D1 2E 00 E9 0E 10 CD 05 00 .....i..........
0190 32 5F 1E C9 21 66 1E 70 2B 71 2A 65 1E EB 0E 11 2_..!f.p+q*e....
01A0 CD 05 00 32 5F 1E C9 11 00 00 0E 12 CD 05 00 32 ...2_..........2
01B0 5F 1E C9 21 68 1E 70 2B 71 2A 67 1E EB 0E 13 CD _..!h.p+q*g.....
Для виконання програми і виведення результатів її роботи виконуємо покрокове трасування програми:
-tad
C0Z0M0E0I0 A=00 B=0000 D=0000 H=0000 S=0100 P=0100 MVI A,62
C0Z0M0E0I0 A=62 B=0000 D=0000 H=0000 S=0100 P=0102 STA 0180
C0Z0M0E0I0 A=62 B=0000 D=0000 H=0000 S=0100 P=0105 MVI A,41
C0Z0M0E0I0 A=41 B=0000 D=0000 H=0000 S=0100 P=0107 STA 0181
C0Z0M0E0I0 A=41 B=0000 D=0000 H=0000 S=0100 P=010A MVI A,0C
C0Z0M0E0I0 A=0C B=0000 D=0000 H=0000 S=0100 P=010C STA 0182
C0Z0M0E0I0 A=0C B=0000 D=0000 H=0000 S=0100 P=010F MVI A,05
C0Z0M0E0I0 A=05 B=0000 D=0000 H=0000 S=0100 P=0111 STA 0183
C0Z0M0E0I0 A=05 B=0000 D=0000 H=0000 S=0100 P=0114 LDA 0180
C0Z0M0E0I0 A=62 B=0000 D=0000 H=0000 S=0100 P=0117 CALL 0152
C0Z0M0E0I0 A=62 B=0000 D=0000 H=0000 S=00FE P=0152 MVI H,FF
C0Z0M0E0I0 A=62 B=0000 D=0000 H=FF00 S=00FE P=0154 INR H
C0Z1M0E1I1 A=62 B=0000 D=0000 H=0000 S=00FE P=0155 SUI 64
C1Z0M1E0I1 A=FE B=0000 D=0000 H=0000 S=00FE P=0157 JNC 0154
C1Z0M1E0I1 A=FE B=0000 D=0000 H=0000 S=00FE P=015A ADI 64
C1Z0M0E0I1 A=62 B=0000 D=0000 H=0000 S=00FE P=015C MVI L,FF
C1Z0M0E0I1 A=62 B=0000 D=0000 H=00FF S=00FE P=015E INR L
C1Z1M0E1I1 A=62 B=0000 D=0000 H=0000 S=00FE P=015F SUI 0A
C0Z0M0E0I1 A=58 B=0000 D=0000 H=0000 S=00FE P=0161 JNC 015E
C0Z0M0E0I1 A=58 B=0000 D=0000 H=0000 S=00FE P=015E INR L
C0Z0M0E0I0 A=58 B=0000 D=0000 H=0001 S=00FE P=015F SUI 0A
C0Z0M0E1I1 A=4E B=0000 D=0000 H=0001 S=00FE P=0161 JNC 015E
C0Z0M0E1I1 A=4E B=0000 D=0000 H=0001 S=00FE P=015E INR L
C0Z0M0E0I0 A=4E B=0000 D=0000 H=0002 S=00FE P=015F SUI 0A
C0Z0M0E1I0 A=44 B=0000 D=0000 H=0002 S=00FE P=0161 JNC 015E
C0Z0M0E1I0 A=44 B=0000 D=0000 H=0002 S=00FE P=015E INR L
C0Z0M0E1I0 A=44 B=0000 D=0000 H=0003 S=00FE P=015F SUI 0A
C0Z0M0E1I1 A=3A B=0000 D=0000 H=0003 S=00FE P=0161 JNC 015E
C0Z0M0E1I1 A=3A B=0000 D=0000 H=0003 S=00FE P=015E INR L
C0Z0M0E0I0 A=3A B=0000 D=0000 H=0004 S=00FE P=015F SUI 0A
C0Z0M0E1I0 A=30 B=0000 D=0000 H=0004 S=00FE P=0161 JNC 015E
C0Z0M0E1I0 A=30 B=0000 D=0000 H=0004 S=00FE P=015E INR L
C0Z0M0E1I0 A=30 B=0000 D=0000 H=0005 S=00FE P=015F SUI 0A
C0Z0M0E0I1 A=26 B=0000 D=0000 H=0005 S=00FE P=0161 JNC 015E
C0Z0M0E0I1 A=26 B=0000 D=0000 H=0005 S=00FE P=015E INR L
C0Z0M0E1I0 A=26 B=0000 D=0000 H=0006 S=00FE P=015F SUI 0A
C0Z0M0E0I1 A=1C B=0000 D=0000 H=0006 S=00FE P=0161 JNC 015E
C0Z0M0E0I1 A=1C B=0000 D=0000 H=0006 S=00FE P=015E INR L
C0Z0M0E0I0 A=1C B=0000 D=0000 H=0007 S=00FE P=015F SUI 0A
C0Z0M0E1I0 A=12 B=0000 D=0000 H=0007 S=00FE P=0161 JNC 015E
C0Z0M0E1I0 A=12 B=0000 D=0000 H=0007 S=00FE P=015E INR L
C0Z0M0E0I0 A=12 B=0000 D=0000 H=0008 S=00FE P=015F SUI 0A
C0Z0M0E0I1 A=08 B=0000 D=0000 H=0008 S=00FE P=0161 JNC 015E
C0Z0M0E0I1 A=08 B=0000 D=0000 H=0008 S=00FE P=015E INR L
C0Z0M0E1I0 A=08 B=0000 D=0000 H=0009 S=00FE P=015F SUI 0A
C1Z0M1E0I1 A=FE B=0000 D=0000 H=0009 S=00FE P=0161 JNC 015E
C1Z0M1E0I1 A=FE B=0000 D=0000 H=0009 S=00FE P=0164 ADI 0A
C1Z0M0E0I1 A=08 B=0000 D=0000 H=0009 S=00FE P=0166 MOV C,A
C1Z0M0E0I1 A=08 B=0008 D=0000 H=0009 S=00FE P=0167 MOV A,L
C1Z0M0E0I1 A=09 B=0008 D=0000 H=0009 S=00FE P=0168 RRC
C1Z0M0E0I1 A=84 B=0008 D=0000 H=0009 S=00FE P=0169 RRC
C0Z0M0E0I1 A=42 B=0008 D=0000 H=0009 S=00FE P=016A RRC
C0Z0M0E0I1 A=21 B=0008 D=0000 H=0009 S=00FE P=016B RRC
C1Z0M0E0I1 A=90 B=0008 D=0000 H=0009 S=00FE P=016C ORA C
C0Z0M1E0I0 A=98 B=0008 D=0000 H=0009 S=00FE P=016D MOV L,A
C0Z0M1E0I0 A=98 B=0008 D=0000 H=0098 S=00FE P=016E RET
C0Z0M1E0I0 A=98 B=0008 D=0000 H=0098 S=0100 P=011A SHLD 0184
C0Z0M1E0I0 A=98 B=0008 D=0000 H=0098 S=0100 P=011D LDA 0181
C0Z0M1E0I0 A=41 B=0008 D=0000 H=0098 S=0100 P=0120 CALL 014D
C0Z0M1E0I0 A=41 B=0008 D=0000 H=0098 S=00FE P=014D MOV B,A
C0Z0M1E0I0 A=41 B=4108 D=0000 H=0098 S=00FE P=014E MVI A,64
C0Z0M1E0I0 A=64 B=4108 D=0000 H=0098 S=00FE P=0150 SUB B
C0Z0M0E0I0 A=23 B=4108 D=0000 H=0098 S=00FE P=0151 RET
C0Z0M0E0I0 A=23 B=4108 D=0000 H=0098 S=0100 P=0123 STA 0186
C0Z0M0E0I0 A=23 B=4108 D=0000 H=0098 S=0100 P=0126 CALL 0152
C0Z0M0E0I0 A=23 B=4108 D=0000 H=0098 S=00FE P=0152 MVI H,FF
C0Z0M0E0I0 A=23 B=4108 D=0000 H=FF98 S=00FE P=0154 INR H
C0Z1M0E1I1 A=23 B=4108 D=0000 H=0098 S=00FE P=0155 SUI 64
C1Z0M1E0I1 A=BF B=4108 D=0000 H=0098 S=00FE P=0157 JNC 0154
C1Z0M1E0I1 A=BF B=4108 D=0000 H=0098 S=00FE P=015A ADI 64
C1Z0M0E0I1 A=23 B=4108 D=0000 H=0098 S=00FE P=015C MVI L,FF
C1Z0M0E0I1 A=23 B=4108 D=0000 H=00FF S=00FE P=015E INR L
C1Z1M0E1I1 A=23 B=4108 D=0000 H=0000 S=00FE P=015F SUI 0A
C0Z0M0E0I1 A=19 B=4108 D=0000 H=0000 S=00FE P=0161 JNC 015E
C0Z0M0E0I1 A=19 B=4108 D=0000 H=0000 S=00FE P=015E INR L
C0Z0M0E0I0 A=19 B=4108 D=0000 H=0001 S=00FE P=015F SUI 0A
C0Z0M0E1I1 A=0F B=4108 D=0000 H=0001 S=00FE P=0161 JNC 015E
C0Z0M0E1I1 A=0F B=4108 D=0000 H=0001 S=00FE P=015E INR L
C0Z0M0E0I0 A=0F B=4108 D=0000 H=0002 S=00FE P=015F SUI 0A
C0Z0M0E1I0 A=05 B=4108 D=0000 H=0002 S=00FE P=0161 JNC 015E
C0Z0M0E1I0 A=05 B=4108 D=0000 H=0002 S=00FE P=015E INR L
C0Z0M0E1I0 A=05 B=4108 D=0000 H=0003 S=00FE P=015F SUI 0A
C1Z0M1E0I1 A=FB B=4108 D=0000 H=0003 S=00FE P=0161 JNC 015E
C1Z0M1E0I1 A=FB B=4108 D=0000 H=0003 S=00FE P=0164 ADI 0A
C1Z0M0E1I1 A=05 B=4108 D=0000 H=0003 S=00FE P=0166 MOV C,A
C1Z0M0E1I1 A=05 B=4105 D=0000 H=0003 S=00FE P=0167 MOV A,L
C1Z0M0E1I1 A=03 B=4105 D=0000 H=0003 S=00FE P=0168 RRC
C1Z0M0E1I1 A=81 B=4105 D=0000 H=0003 S=00FE P=0169 RRC
C1Z0M0E1I1 A=C0 B=4105 D=0000 H=0003 S=00FE P=016A RRC
C0Z0M0E1I1 A=60 B=4105 D=0000 H=0003 S=00FE P=016B RRC
C0Z0M0E1I1 A=30 B=4105 D=0000 H=0003 S=00FE P=016C ORA C
C0Z0M0E1I0 A=35 B=4105 D=0000 H=0003 S=00FE P=016D MOV L,A
C0Z0M0E1I0 A=35 B=4105 D=0000 H=0035 S=00FE P=016E RET
C0Z0M0E1I0 A=35 B=4105 D=0000 H=0035 S=0100 P=0129 MVI D,99
C0Z0M0E1I0 A=35 B=4105 D=9900 H=0035 S=0100 P=012B DAD D
C0Z0M0E1I0 A=35 B=4105 D=9900 H=9935 S=0100 P=012C SHLD 0187
C0Z0M0E1I0 A=35 B=4105 D=9900 H=9935 S=0100 P=012F LDA 0182
C0Z0M0E1I0 A=0C B=4105 D=9900 H=9935 S=0100 P=0132 CALL 014D
C0Z0M0E1I0 A=0C B=4105 D=9900 H=9935 S=00FE P=014D MOV B,A
C0Z0M0E1I0 A=0C B=0C05 D=9900 H=9935 S=00FE P=014E MVI A,64
C0Z0M0E1I0 A=64 B=0C05 D=9900 H=9935 S=00FE P=0150 SUB B
C0Z0M0E0I1 A=58 B=0C05 D=9900 H=9935 S=00FE P=0151 RET
C0Z0M0E0I1 A=58 B=0C05 D=9900 H=9935 S=0100 P=0135 STA 0189
C0Z0M0E0I1 A=58 B=0C05 D=9900 H=9935 S=0100 P=0138 CALL 0152
C0Z0M0E0I1 A=58 B=0C05 D=9900 H=9935 S=00FE P=0152 MVI H,FF
C0Z0M0E0I1 A=58 B=0C05 D=9900 H=FF35 S=00FE P=0154 INR H
C0Z1M0E1I1 A=58 B=0C05 D=9900 H=0035 S=00FE P=0155 SUI 64
C1Z0M1E0I0 A=F4 B=0C05 D=9900 H=0035 S=00FE P=0157 JNC 0154
C1Z0M1E0I0 A=F4 B=0C05 D=9900 H=0035 S=00FE P=015A ADI 64
C1Z0M0E0I0 A=58 B=0C05 D=9900 H=0035 S=00FE P=015C MVI L,FF
C1Z0M0E0I0 A=58 B=0C05 D=9900 H=00FF S=00FE P=015E INR L
C1Z1M0E1I1 A=58 B=0C05 D=9900 H=0000 S=00FE P=015F SUI 0A
C0Z0M0E1I1 A=4E B=0C05 D=9900 H=0000 S=00FE P=0161 JNC 015E
C0Z0M0E1I1 A=4E B=0C05 D=9900 H=0000 S=00FE P=015E INR L
C0Z0M0E0I0 A=4E B=0C05 D=9900 H=0001 S=00FE P=015F SUI 0A
C0Z0M0E1I0 A=44 B=0C05 D=9900 H=0001 S=00FE P=0161 JNC 015E
C0Z0M0E1I0 A=44 B=0C05 D=9900 H=0001 S=00FE P=015E INR L
C0Z0M0E0I0 A=44 B=0C05 D=9900 H=0002 S=00FE P=015F SUI 0A
C0Z0M0E1I1 A=3A B=0C05 D=9900 H=0002 S=00FE P=0161 JNC 015E
C0Z0M0E1I1 A=3A B=0C05 D=9900 H=0002 S=00FE P=015E INR L
C0Z0M0E1I0 A=3A B=0C05 D=9900 H=0003 S=00FE P=015F SUI 0A
C0Z0M0E1I0 A=30 B=0C05 D=9900 H=0003 S=00FE P=0161 JNC 015E
C0Z0M0E1I0 A=30 B=0C05 D=9900 H=0003 S=00FE P=015E INR L
C0Z0M0E0I0 A=30 B=0C05 D=9900 H=0004 S=00FE P=015F SUI 0A
C0Z0M0E0I1 A=26 B=0C05 D=9900 H=0004 S=00FE P=0161 JNC 015E
C0Z0M0E0I1 A=26 B=0C05 D=9900 H=0004 S=00FE P=015E INR L
C0Z0M0E1I0 A=26 B=0C05 D=9900 H=0005 S=00FE P=015F SUI 0A
C0Z0M0E0I1 A=1C B=0C05 D=9900 H=0005 S=00FE P=0161 JNC 015E
C0Z0M0E0I1 A=1C B=0C05 D=9900 H=0005 S=00FE P=015E INR L
C0Z0M0E1I0 A=1C B=0C05 D=9900 H=0006 S=00FE P=015F SUI 0A
C0Z0M0E1I0 A=12 B=0C05 D=9900 H=0006 S=00FE P=0161 JNC 015E
C0Z0M0E1I0 A=12 B=0C05 D=9900 H=0006 S=00FE P=015E INR L
C0Z0M0E0I0 A=12 B=0C05 D=9900 H=0007 S=00FE P=015F SUI 0A
C0Z0M0E0I1 A=08 B=0C05 D=9900 H=0007 S=00FE P=0161 JNC 015E
C0Z0M0E0I1 A=08 B=0C05 D=9900 H=0007 S=00FE P=015E INR L
C0Z0M0E0I0 A=08 B=0C05 D=9900 H=0008 S=00FE P=015F SUI 0A
C1Z0M1E0I1 A=FE B=0C05 D=9900 H=0008 S=00FE P=0161 JNC 015E
C1Z0M1E0I1 A=FE B=0C05 D=9900 H=0008 S=00FE P=0164 ADI 0A
C1Z0M0E0I1 A=08 B=0C05 D=9900 H=0008 S=00FE P=0166 MOV C,A
C1Z0M0E0I1 A=08 B=0C08 D=9900 H=0008 S=00FE P=0167 MOV A,L
C1Z0M0E0I1 A=08 B=0C08 D=9900 H=0008 S=00FE P=0168 RRC
C0Z0M0E0I1 A=04 B=0C08 D=9900 H=0008 S=00FE P=0169 RRC
C0Z0M0E0I1 A=02 B=0C08 D=9900 H=0008 S=00FE P=016A RRC
C0Z0M0E0I1 A=01 B=0C08 D=9900 H=0008 S=00FE P=016B RRC
C1Z0M0E0I1 A=80 B=0C08 D=9900 H=0008 S=00FE P=016C ORA C
C0Z0M1E1I0 A=88 B=0C08 D=9900 H=0008 S=00FE P=016D MOV L,A
C0Z0M1E1I0 A=88 B=0C08 D=9900 H=0088 S=00FE P=016E RET
C0Z0M1E1I0 A=88 B=0C08 D=9900 H=0088 S=0100 P=013B MVI D,99
C0Z0M1E1I0 A=88 B=0C08 D=9900 H=0088 S=0100 P=013D DAD D
C0Z0M1E1I0 A=88 B=0C08 D=9900 H=9988 S=0100 P=013E SHLD 018A
C0Z0M1E1I0 A=88 B=0C08 D=9900 H=9988 S=0100 P=0141 LDA 0183
C0Z0M1E1I0 A=05 B=0C08 D=9900 H=9988 S=0100 P=0144 CALL 0152
C0Z0M1E1I0 A=05 B=0C08 D=9900 H=9988 S=00FE P=0152 MVI H,FF
C0Z0M1E1I0 A=05 B=0C08 D=9900 H=FF88 S=00FE P=0154 INR H
C0Z1M0E1I1 A=05 B=0C08 D=9900 H=0088 S=00FE P=0155 SUI 64
C1Z0M1E0I0 A=A1 B=0C08 D=9900 H=0088 S=00FE P=0157 JNC 0154
C1Z0M1E0I0 A=A1 B=0C08 D=9900 H=0088 S=00FE P=015A ADI 64
C1Z0M0E1I0 A=05 B=0C08 D=9900 H=0088 S=00FE P=015C MVI L,FF
C1Z0M0E1I0 A=05 B=0C08 D=9900 H=00FF S=00FE P=015E INR L
C1Z1M0E1I1 A=05 B=0C08 D=9900 H=0000 S=00FE P=015F SUI 0A
C1Z0M1E0I1 A=FB B=0C08 D=9900 H=0000 S=00FE P=0161 JNC 015E
C1Z0M1E0I1 A=FB B=0C08 D=9900 H=0000 S=00FE P=0164 ADI 0A
C1Z0M0E1I1 A=05 B=0C08 D=9900 H=0000 S=00FE P=0166 MOV C,A
C1Z0M0E1I1 A=05 B=0C05 D=9900 H=0000 S=00FE P=0167 MOV A,L
C1Z0M0E1I1 A=00 B=0C05 D=9900 H=0000 S=00FE P=0168 RRC
C0Z0M0E1I1 A=00 B=0C05 D=9900 H=0000 S=00FE P=0169 RRC
C0Z0M0E1I1 A=00 B=0C05 D=9900 H=0000 S=00FE P=016A RRC
C0Z0M0E1I1 A=00 B=0C05 D=9900 H=0000 S=00FE P=016B RRC
C0Z0M0E1I1 A=00 B=0C05 D=9900 H=0000 S=00FE P=016C ORA C
C0Z0M0E1I0 A=05 B=0C05 D=9900 H=0000 S=00FE P=016D MOV L,A
C0Z0M0E1I0 A=05 B=0C05 D=9900 H=0005 S=00FE P=016E RET
C0Z0M0E1I0 A=05 B=0C05 D=9900 H=0005 S=0100 P=0147 SHLD 018C
C0Z0M0E1I0 A=05 B=0C05 D=9900 H=0005 S=0100 P=014A JMP 016F*016F
Виводимо вміст комірок пам'яті в які ми зберігали дані:
-x
C0Z0M0E1I0 A=05 B=0C05 D=9900 H=0005 S=0100 P=016F HLT
-d180,18f
0180 62 41 0C 05 98 00 23 35 99 58 88 99 05 00 00 00 bA....#5.X......
LAB6B.ASM:
Після компілювання і лінкування програми завантажуємо її у відлагоджувач і перевіряємо чи знаходиться наша програма в пам'яті:
F:[cpm] d lab6b.com
DDT VERS 1.0
NEXT PC
0180 0100
-d100
0100 21 62 41 22 80 01 21 0C 05 22 82 01 21 98 00 22 !bA"..!.."..!.."
0110 84 01 21 23 35 22 86 01 21 99 58 22 88 01 21 88 ..!#5"..!.X"..!.
0120 99 22 8A 01 21 05 00 22 8C 01 2A 84 01 EB 2A 87 ."..!.."..*...*.
0130 01 19 22 90 01 CD 5A 01 22 A0 01 EB 2A 8A 01 19 .."...Z."...*...
0140 22 92 01 CD 5A 01 22 A2 01 EB 2A 8C 01 19 22 94 "...Z."...*...".
0150 01 CD 5A 01 22 A4 01 C3 69 01 F6 00 7D 27 6F 7C ..Z."...i...}'o|
0160 D2 64 01 3C F6 00 27 67 C9 76 00 00 00 00 00 00 .d.<..'g.v......
0170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0180 1A 84 12 13 C3 69 01 D1 2E 00 E9 0E 10 CD 05 00 .....i..........
0190 32 5F 1E C9 21 66 1E 70 2B 71 2A 65 1E EB 0E 11 2_..!f.p+q*e....
01A0 CD 05 00 32 5F 1E C9 11 00 00 0E 12 CD 05 00 32 ...2_..........2
01B0 5F 1E C9 21 68 1E 70 2B 71 2A 67 1E EB 0E 13 CD _..!h.p+q*g.....
Для виконання програми і виведення результатів її роботи виконуємо покрокове трасування програми:
-t42
C0Z0M0E0I0 A=00 B=0000 D=0000 H=0000 S=0100 P=0100 LXI H,4162
C0Z0M0E0I0 A=00 B=0000 D=0000 H=4162 S=0100 P=0103 SHLD 0180
C0Z0M0E0I0 A=00 B=0000 D=0000 H=4162 S=0100 P=0106 LXI H,050C
C0Z0M0E0I0 A=00 B=0000 D=0000 H=050C S=0100 P=0109 SHLD 0182
C0Z0M0E0I0 A=00 B=0000 D=0000 H=050C S=0100 P=010C LXI H,0098
C0Z0M0E0I0 A=00 B=0000 D=0000 H=0098 S=0100 P=010F SHLD 0184
C0Z0M0E0I0 A=00 B=0000 D=0000 H=0098 S=0100 P=0112 LXI H,3523
C0Z0M0E0I0 A=00 B=0000 D=0000 H=3523 S=0100 P=0115 SHLD 0186
C0Z0M0E0I0 A=00 B=0000 D=0000 H=3523 S=0100 P=0118 LXI H,5899
C0Z0M0E0I0 A=00 B=0000 D=0000 H=5899 S=0100 P=011B SHLD 0188
C0Z0M0E0I0 A=00 B=0000 D=0000 H=5899 S=0100 P=011E LXI H,9988
C0Z0M0E0I0 A=00 B=0000 D=0000 H=9988 S=0100 P=0121 SHLD 018A
C0Z0M0E0I0 A=00 B=0000 D=0000 H=9988 S=0100 P=0124 LXI H,0005
C0Z0M0E0I0 A=00 B=0000 D=0000 H=0005 S=0100 P=0127 SHLD 018C
C0Z0M0E0I0 A=00 B=0000 D=0000 H=0005 S=0100 P=012A LHLD 0184
C0Z0M0E0I0 A=00 B=0000 D=0000 H=0098 S=0100 P=012D XCHG
C0Z0M0E0I0 A=00 B=0000 D=0098 H=0000 S=0100 P=012E LHLD 0187
C0Z0M0E0I0 A=00 B=0000 D=0098 H=9935 S=0100 P=0131 DAD D
C0Z0M0E0I0 A=00 B=0000 D=0098 H=99CD S=0100 P=0132 SHLD 0190
C0Z0M0E0I0 A=00 B=0000 D=0098 H=99CD S=0100 P=0135 CALL 015A
C0Z0M0E0I0 A=00 B=0000 D=0098 H=99CD S=00FE P=015A ORI 00
C0Z1M0E1I0 A=00 B=0000 D=0098 H=99CD S=00FE P=015C MOV A,L
C0Z1M0E1I0 A=CD B=0000 D=0098 H=99CD S=00FE P=015D DAA
C1Z0M0E1I1 A=33 B=0000 D=0098 H=99CD S=00FE P=015E MOV L,A
C1Z0M0E1I1 A=33 B=0000 D=0098 H=9933 S=00FE P=015F MOV A,H
C1Z0M0E1I1 A=99 B=0000 D=0098 H=9933 S=00FE P=0160 JNC 0164
C1Z0M0E1I1 A=99 B=0000 D=0098 H=9933 S=00FE P=0163 INR A
C1Z0M1E1I0 A=9A B=0000 D=0098 H=9933 S=00FE P=0164 ORI 00
C0Z0M1E1I0 A=9A B=0000 D=0098 H=9933 S=00FE P=0166 DAA
C1Z1M0E1I1 A=00 B=0000 D=0098 H=9933 S=00FE P=0167 MOV H,A
C1Z1M0E1I1 A=00 B=0000 D=0098 H=0033 S=00FE P=0168 RET
C1Z1M0E1I1 A=00 B=0000 D=0098 H=0033 S=0100 P=0138 SHLD 01A0
C1Z1M0E1I1 A=00 B=0000 D=0098 H=0033 S=0100 P=013B XCHG
C1Z1M0E1I1 A=00 B=0000 D=0033 H=0098 S=0100 P=013C LHLD 018A
C1Z1M0E1I1 A=00 B=0000 D=0033 H=9988 S=0100 P=013F DAD D
C0Z1M0E1I1 A=00 B=0000 D=0033 H=99BB S=0100 P=0140 SHLD 0192
C0Z1M0E1I1 A=00 B=0000 D=0033 H=99BB S=0100 P=0143 CALL 015A
C0Z1M0E1I1 A=00 B=0000 D=0033 H=99BB S=00FE P=015A ORI 00
C0Z1M0E1I0 A=00 B=0000 D=0033 H=99BB S=00FE P=015C MOV A,L
C0Z1M0E1I0 A=BB B=0000 D=0033 H=99BB S=00FE P=015D DAA
C1Z0M0E1I1 A=21 B=0000 D=0033 H=99BB S=00FE P=015E MOV L,A
C1Z0M0E1I1 A=21 B=0000 D=0033 H=9921 S=00FE P=015F MOV A,H
C1Z0M0E1I1 A=99 B=0000 D=0033 H=9921 S=00FE P=0160 JNC 0164
C1Z0M0E1I1 A=99 B=0000 D=0033 H=9921 S=00FE P=0163 INR A
C1Z0M1E1I0 A=9A B=0000 D=0033 H=9921 S=00FE P=0164 ORI 00
C0Z0M1E1I0 A=9A B=0000 D=0033 H=9921 S=00FE P=0166 DAA
C1Z1M0E1I1 A=00 B=0000 D=0033 H=9921 S=00FE P=0167 MOV H,A
C1Z1M0E1I1 A=00 B=0000 D=0033 H=0021 S=00FE P=0168 RET
C1Z1M0E1I1 A=00 B=0000 D=0033 H=0021 S=0100 P=0146 SHLD 01A2
C1Z1M0E1I1 A=00 B=0000 D=0033 H=0021 S=0100 P=0149 XCHG
C1Z1M0E1I1 A=00 B=0000 D=0021 H=0033 S=0100 P=014A LHLD 018C
C1Z1M0E1I1 A=00 B=0000 D=0021 H=0005 S=0100 P=014D DAD D
C0Z1M0E1I1 A=00 B=0000 D=0021 H=0026 S=0100 P=014E SHLD 0194
C0Z1M0E1I1 A=00 B=0000 D=0021 H=0026 S=0100 P=0151 CALL 015A
C0Z1M0E1I1 A=00 B=0000 D=0021 H=0026 S=00FE P=015A ORI 00
C0Z1M0E1I0 A=00 B=0000 D=0021 H=0026 S=00FE P=015C MOV A,L
C0Z1M0E1I0 A=26 B=0000 D=0021 H=0026 S=00FE P=015D DAA
C0Z0M0E0I0 A=26 B=0000 D=0021 H=0026 S=00FE P=015E MOV L,A
C0Z0M0E0I0 A=26 B=0000 D=0021 H=0026 S=00FE P=015F MOV A,H
C0Z0M0E0I0 A=00 B=0000 D=0021 H=0026 S=00FE P=0160 JNC 0164
C0Z0M0E0I0 A=00 B=0000 D=0021 H=0026 S=00FE P=0164 ORI 00
C0Z1M0E1I0 A=00 B=0000 D=0021 H=0026 S=00FE P=0166 DAA
C0Z1M0E1I0 A=00 B=0000 D=0021 H=0026 S=00FE P=0167 MOV H,A
C0Z1M0E1I0 A=00 B=0000 D=0021 H=0026 S=00FE P=0168 RET
C0Z1M0E1I0 A=00 B=0000 D=0021 H=0026 S=0100 P=0154 SHLD 01A4
C0Z1M0E1I0 A=00 B=0000 D=0021 H=0026 S=0100 P=0157 JMP 0169*0169
Виводимо результат роботи програми та вміст комірок пам'яті в які ми зберігали дані:
-x
C0Z1M0E1I0 A=00 B=0000 D=0021 H=0026 S=0100 P=0169 HLT
-d180,18d
0180 62 41 0C 05 98 00 23 35 99 58 88 99 05 00 bA....#5.X....
-d190,195
0190 CD 99 BB 99 26 00 ....&.
-d1a0,1a5
01A0 33 00 21 00 26 00 3.!.&.
КАРТА ПАМЯТІ
Адреса
Дані
Коментар
H
D
B
H
D
B
180
384
1 1000 0000
62
98
0110 0010
Дане 1 = 98
181
385
1 1000 0001
41
65
0100 0001
Дане 2 = 65
182
386
1 1000 0010
0C
12
0000 1100
Дане 3 = 12
183
387
1 1000 0011
05
5
0000 0101
Дане 4 = 5
184
388
1 1000 0100
98
152
1001 1000
Дане 1 (BCD) = 0098h
185
389
1 1000 0101
00
0
0000 0000
186
390
1 1000 0110
23
35
0010 0011
Дане 2 (доп.) = 23h
187
391
1 1000 0111
35
53
0011 0101
Дане 2 (BCD)доп = 9935h
188
392
1 1000 1000
99
153
1001 1001
189
393
1 1000 1001
58
88
0101 1000
Дане 3 (доп.) = 58h
18A
394
1 1000 1010
88
136
1000 1000
Дане 3 (BCD)доп = 9988h
18B
395
1 1000 1011
99
153
1001 1001
18C
396
1 1000 1100
05
5
0000 0101
Дане 4 (BCD) = 0005h
18D
397
1 1000 1101
00
0
0000 0000
190
400
1 1001 0000
CD
205
1100 1101
Результат 1
0098h + 9935h = 99CDh
191
401
1 1001 0001
99
153
1001 1001
192
402
1 1001 0010
BB
187
1011 1011
Результат 2
99CDh + 9988h = 99BBh
193
403
1 1001 0011
99
153
1001 1001
194
404
1 1001 0100
26
38
0010 0110
Результат 3
99BBh + 0005h = 0026h
195
405
1 1001 0101
00
0
0000 0000
1A0
416
1 1010 0000
33
51
0011 0011
DAA 99CDh = 0033h
1A1
417
1 1010 0001
00
0
0000 0000
1A2
418
1 1010 0010
21
33
0010 0001
DAA 99BBh = 0021h
1A3
419
1 1010 0011
00
0
0000 0000
1A4
420
1 1010 0100
26
38
0010 0110
DAA 0026h = 0026h
1A5
421
1 1010 0101
00
0
0000 0000
PRN ФАЙЛИ
LAB6A.ASM:
0100 ORG 100H ; початок програми
; заносимо дані в пам’ять
0100 3E62 MVI A,98 ;A:=98
0102 328001 STA 180H ;заносимо А в пам’ять A->(180h)
0105 3E41 MVI A,65 ;A:=65
0107 328101 STA 181H ;A->(181h)
010A 3E0C MVI A,12 ;A:=12
010C 328201 STA 182H ;A->(182h)
010F 3E05 MVI A,5 ;A:=05
0111 328301 STA 183H ;A->(183h)
; переводимо 98 в BCD-формат
0114 3A8001 LDA 180H ;завантажуєм А з пам'яті A<-(180h)
0117 CD5201 CALL PEREVID ; виклик підпрограми преведення
011A 228401 SHLD 184H ;зберігаємо HL в пам'яті HL->(184h)
; переводимо -65 в доповняльний код та BCD-формат
011D 3A8101 LDA 181H ;завантажуєм А з пам'яті A<-(181h)
0120 CD4D01 CALL DOPOV ; виклик підпрограми
0123 328601 STA 186H ;зберігаємо А в пам'яті А->(186h)
0126 CD5201 CALL PEREVID ; виклик підпрограми преведення
0129 1699 MVI D,99H ; D<-99h
012B 19 DAD D ; HL<- HL + DE
012C 228701 SHLD 187H ;зберігаємо HL в пам'яті HL->(187h)
; переводимо -12 в доповняльний код та BCD-формат
012F 3A8201 LDA 182H ;завантажуєм А з пам'яті A<-(182h)
0132 CD4D01 CALL DOPOV ; виклик підпрограми
0135 328901 STA 189H ;зберігаємо А в пам'яті А->(189h)
0138 CD5201 CALL PEREVID ; виклик підпрограми преведення
013B 1699 MVI D,99H ; D<-99h
013D 19 DAD D ; HL<- HL + DE
013E 228A01 SHLD 18AH ;зберігаємо HL в пам'яті HL->(18Аh)
; переводимо 5 в BCD-формат
0141 3A8301 LDA 183H ;завантажуєм А з пам'яті A<-(183h)
0144 CD5201 CALL PEREVID ; виклик підпрограми преведення
0147 228C01 SHLD 18CH ;зберігаємо HL в пам'яті HL->(18Сh)
; вихід з програми
014A C36F01 JMP EXIT ; прехід на мітку виходу
; підпрограма переведення числа в доповняльний код
014D 47 DOPOV: MOV B,A ; В<-A
014E 3E64 MVI A,100 ; А<100
0150 90 SUB B ; А<-A – В
0151 C9 RET ; повернення з підпрограми
; підпрограма переведення числа в BCD-формат
0152 26FF PEREVID: MVI H,-1 ; H ← -1
0154 24 L100: INR H ; H ← H + 1
0155 D664 SUI 100 ; А<-A – 100
0157 D25401 JNC L100 ; перехід
015A C664 ADI 100 ; А<-A + 100
015C 2EFF MVI L,-1 ; L ← -1
015E 2C L10: INR L ; L ← L + 1
015F D60A SUI 10; А<-A – 10
0161 D25E01 JNC L10 ; перехід
0164 C60A ADI 10 ; А<-A + 10
0166 4F MOV C,A ; С<-A
0167 7D MOV A,L ; А<-L
0168 0F RRC ; зсув вправо
0169 0F RRC ; зсув вправо
016A 0F RRC ; зсув вправо
016B 0F RRC ; зсув вправо
016C B1 ORA C ; А<-А v C
016D 6F MOV L,A ; L<-А
016E C9 RET ; повернення з підпрограми
; кінець програми
016F 76 EXIT: HLT ; вихід з програми
LAB6B.ASM:
0100 ORG 100H ; початок програми
; заносимо дані в пам’ять
0100 216241 LXI H,4162H ; HL<-4162h
0103 228001 SHLD 180H ;заносимо HL в пам’ять HL->(180h)
0106 210C05 LXI H,050CH ; HL<-050Ch
0109 228201 SHLD 182H ;заносимо HL в пам’ять HL->(182h)
010C 219800 LXI H,0098H ; HL<-0098h
010F 228401 SHLD 184H ;заносимо HL в пам’ять HL->(184h)
0112 212335 LXI H,3523H ; HL<-3523h
0115 228601 SHLD 186H ;заносимо HL в пам’ять HL->(186h)
0118 219958 LXI H,5899H ; HL<-5899h
011B 228801 SHLD 188H ;заносимо HL в пам’ять HL->(188h)
011E 218899 LXI H,9988H ; HL<-9988h
0121 228A01 SHLD 18AH ;заносимо HL в пам’ять HL->(18Ah)
0124 210500 LXI H,0005H ; HL<-0005h
0127 228C01 SHLD 18CH ;заносимо HL в пам’ять HL->(18Ch)
; виконуємо додавання
012A 2A8401 LHLD 184H ;завантажуєм HL з пам'яті HL<-(184h)
012D EB XCHG ;HL<->DE
012E 2A8701 LHLD 187H ;завантажуєм HL з пам'яті HL<-(187h)
0131 19 DAD D ; HL<- HL + DE
0132 229001 SHLD 190H ;заносимо HL в пам’ять HL->(190h)
0135 CD5A01 CALL DOPOV ; виклик підпрограми
0138 22A001 SHLD 1A0H ;заносимо HL в пам’ять HL->(1A0h)
; виконуємо додавання
013B EB XCHG ;HL<->DE
013C 2A8A01 LHLD 18AH ;завантажуєм HL з пам'яті HL<-(18Ah)
013F 19 DAD D ; HL<- HL + DE
0140 229201 SHLD 192H ;заносимо HL в пам’ять HL->(192h)
0143 CD5A01 CALL DOPOV ; виклик підпрограми
0146 22A201 SHLD 1A2H ;заносимо HL в пам’ять HL->(1A2h)
; виконуємо додавання
0149 EB XCHG ;HL<->DE
014A 2A8C01 LHLD 18CH ;завантажуєм HL з пам'яті HL<-(18Ch)
014D 19 DAD D ; HL<- HL + DE
014E 229401 SHLD 194H ;заносимо HL в пам’ять HL->(194h)
0151 CD5A01 CALL DOPOV ; виклик підпрограми
0154 22A401 SHLD 1A4H ;заносимо HL в пам’ять HL->(1A4h)
; вихід з програми
0157 C36901 JMP EXIT ; прехід на мітку виходу
; підпрограма десяткового доповнення результату
015A F600 DOPOV: ORI 0 ; A<-A v 0
015C 7D MOV A,L ; A<-L
015D 27 DAA ; десяткове доповнення А
015E 6F MOV L,A ; L<-A
015F 7C MOV A,H ; A<-H
0160 D26401 JNC COR ; перехід
0163 3C INR A ; A<-A + 1
0164 F600 COR: ORI 0 ; A<-A v 0
0166 27 DAA ; десяткове доповнення А
0167 67 MOV H,A ; H<-A
0168 C9 RET ; повернення з підпрограми
; кінець програми
016F 76 EXIT: HLT ; вихід з програми
ВИСНОВОК:
Під час виконання лабораторної роботи я вивчив алгоритми виконання операцій додавання та віднімання двійково-кодованих десяткових чисел для однокристального МП КР580, набув практичних навиків складання та налагоджування програм з використанням цих алгоритмів. Мною була написана програма, яка виконує перетворення чисел в упаковане десяткове число, а також здійснює арифметичні операції над даними числами.