
Программа №6
Умножение целых двоичных чисел
адрес |
машинный код |
метка |
мнемокод |
t |
примечание |
загрузка сомножителей |
|||||
0800 |
0E XX |
|
MVI C,XX |
7 |
(C)XX |
0802 |
1E YY |
|
MVI E,YY |
7 |
(E)YY |
0804 |
CD5008 |
|
CALL Y8N |
17 |
вызов программы умножения |
0807 |
FF |
|
RST 7 |
11 |
переход на связь с пультом |
обнуление регистров произведения |
|||||
0850 |
AF |
Y8N |
XRA A |
4 |
(A) (A) (A); (CY)0 |
0851 |
67 |
|
MOV H,A |
5 |
(H)(A) |
0852 |
6F |
|
MOV L,A |
5 |
(L)(A) |
0853 |
57 |
|
MOV D,A |
5 |
(D)(A) |
проверка сомножителей на 0 |
|||||
0854 |
83 |
|
ADD E |
4 |
(A)(A)+(E) |
0855 |
C8 |
|
RZ |
11 |
возврат если Z =1 |
0856 |
AF |
|
XRA A |
4 |
(A) (A) (A); (CY)0 |
0857 |
81 |
|
ADD C |
4 |
(A)(A)+(C) |
0858 |
C8 |
|
RZ |
11 |
возврат если Z=1 |
накопление произведения |
|||||
0859 |
19 |
M1 |
DAD D |
5 |
(H,L)(H,L)+(D,E) |
085A |
3D |
|
DCR A |
5 |
(A)(A)-1 |
085B |
C25908 |
|
JNZ 0859 |
10 |
переход если Z=0 |
085E |
C9 |
|
RET |
11 |
возврат из подпрограммы безусловный |
Время выполнения программы:
t=7+7+17+4+5+5+5+4+11+4+4+11+(5+5+10)*ХХ+11+11
1T=0,1мксt= ? мкс
Программа №7
Умножение целых двоичных чисел со сдвигом влево
адрес |
машинный код |
метка |
мнемокод |
примечание |
t |
загрузка сомножителей |
|||||
0800 |
0E XX |
|
MVI C,XX |
(C) ←XX |
7 |
0802 |
1E YY |
|
MVI E,YY |
(E) ←YY |
7 |
0804 |
CD5008 |
|
CALL Y8N |
вызов программы умножения |
17 |
0807 |
FF |
|
RST 7 |
переход на связь с пультом |
11 |
обнуление регистров произведения |
|||||
0850 |
AF |
Y8N |
XRA A |
обнуление (A); (CY) ←0 |
4 |
0851 |
67 |
|
MOV H,A |
(H) ← (A) |
5 |
0852 |
6F |
|
MOV L,A |
(L) ← (A) |
5 |
0853 |
57 |
|
MOV D,A |
(D) ← (A) |
5 |
проверка сомножителей на 0 |
|||||
0854 |
83 |
|
ADD E |
(A) ← (A)+(E) |
4 |
0855 |
C8 |
|
RZ |
возврат если Z =0 |
11 |
0856 |
AF |
|
XRA A |
обнуление (A); (CY) ←0 |
4 |
0857 |
81 |
|
ADD C |
(A) ← (A)+(C) |
4 |
0858 |
C8 |
|
RZ |
возврат если Z=0 |
11 |
0859 |
61 |
|
MOV H,C |
(H) ← (C) |
5 |
085A |
0608 |
|
MVI B,8 |
(B) ← (8) |
7 |
сдвиг множителя и суммы частичных произведений влево |
|||||
085C |
29 |
M1 |
DAD H |
(H,L) ← (H,L)+(H,L) |
5 |
085D |
D26108 |
|
JNZ 0861 |
переход если Z=0 |
10 |
сложение множимого с текущей суммой частичных произведений |
|||||
0860 |
19 |
|
DAD D |
(H,L) ← (H,L)+(D,E) |
5 |
проверка конца цикла |
|||||
0861 |
05 |
M2 |
DCR B |
(B) ← (B)-1 |
5 |
0862 |
C25C08 |
|
JNZ 085C |
переход если Z=0 |
10 |
0865 |
C9 |
|
RET |
возврат из подпрограммы безусловный |
11 |