лабораторные работы / Выполнение арифметических операций
.DOCСаратовский Государственный Технический Университет
Балаковский Институт Техники Технологии и Управления
Кафедра УИТ
Лабораторная работа
“Выполнение арифметических операций”
Выполнил: ст. гр. УИТ - 52
Шилин А.А.
Дорофеев А.Г.
Верес А.В.
Храмов Д.Г.
Проверил: Грицюк С.Н.
Балаково 1998
Цель работы:
изучение способов организации и исследование программы выполнения арифметических операций.
1. Все программы арифметических действий, написанные для КР580ВМ80 базируются на основных арифметических командах этого процессора. Их можно условно разделить на следующие группы:
-
команды сложения:
ADI 0XXh, ACI 0XXh, ADD B, ADD C, ADD D, ADD E, ADD H, ADD L, ADD M, ADD A, ADC B, ADC C, ADC D, ADC E, ADC H, ADC L, ADC M, ADC A
-
команды вычитания:
SUI 0XXh, SBI 0XXh, SUB B, SUB C, SUB D, SUB E, SUB H, SUB L, SUB M, SUB A, SBB B, SBB C, SBB D, SBB E, SBB H, SBB L, SBB M, SBB A
-
команды инкрементирования и декрементирования:
INX B, INR B, DCR B, DCX B, INR C, DCR C, INX D, INR D, DCR D, DCX D, INR E, DCR E, INX H, INR H, DCR H, DCX H, INR L, DCR L, INX SP, INR M, DCR M, DCX SP, INR A, DCR A, DAD B, DAD D, DAD H, DAD SP
-
команды десятичной коррекции
DAA
Все эти команды заносят результат вычислений в аккумулятор.
2. Программа сложения массива однобайтных чисел
На входе: в HL адрес массива, в B размер массива
На выходе: в А младший байт, в С старший байт суммы
Адрес
|
Машинный код |
Метка |
Мнемокод |
Комментарий |
0800 |
21 00 0B |
main |
lxi h,0b00 |
|
0803 |
06 05 |
|
mvi b,05 |
|
0805 |
cd 09 08 |
|
call addval |
|
0808 |
cf |
|
rst 1 |
|
|
|
|
|
|
0809 |
af |
addval |
xra a |
|
080a |
4f |
|
mov c,a |
|
080b |
86 |
more |
add m |
|
080c |
d2 10 08 |
|
jnc small |
|
080f |
0c |
|
inr c |
|
0810 |
23 |
small |
inx h |
|
0811 |
05 |
|
dcr b |
|
0812 |
c2 09 08 |
|
jnc addval |
|
0815 |
c9 |
|
ret |
|
3. Программа нахождения разности двух многобайтовых чисел
На входе: в DE адрес уменьшаемого, в HL адрес вычитаемого, в C число байтов.
На выходе: в HL адрес старшего байта результата
Адрес
|
Машинный код |
Метка |
Мнемокод |
Комментарий |
0820 |
11 00 0b |
main |
lxi d,0b00 |
|
0823 |
21 05 0b |
|
lxi h,0b05 |
|
0826 |
0e 05 |
|
mvi c,05 |
|
0828 |
cd 2c 08 |
|
call sub_val |
|
082b |
cf |
|
rst 1 |
|
|
|
|
|
|
082c |
af |
sub_val |
xra a |
|
082d |
1a |
s_loop |
ldax d |
|
082e |
9e |
|
sbb m |
|
082f |
77 |
|
mov m,a |
|
0830 |
23 |
|
inx h |
|
0831 |
13 |
|
inx d |
|
0832 |
0d |
|
dcr c |
|
0833 |
c2 2d 08 |
|
jnz s_loop |
|
0836 |
c9 |
|
ret |
|
4. Программа умножения двух однобайтных чисел
На входе: в D множимое, в E множитель
На выходе: в BC байты результата
Адрес
|
Машинный код |
Метка |
Мнемокод |
Комментарий |
0840 |
11 03 03 |
main |
lxi d,0303 |
|
0843 |
cd 47 08 |
|
call multip |
|
0846 |
cf |
|
rst 1 |
|
|
|
|
|
|
0847 |
01 00 00 |
multip |
lxi b,0 |
|
084a |
3f 01 |
|
mvi a,01 |
|
084c |
a7 |
|
ana a |
|
084d |
f5 |
m_loop |
push psw |
|
084e |
a3 |
|
ana e |
|
084f |
78 |
|
mov a,b |
|
0850 |
ca 54 08 |
|
jz skip |
|
0853 |
82 |
|
add d |
|
0854 |
1f |
skip |
rar |
|
0855 |
47 |
|
mov b,a |
|
0856 |
79 |
|
mov a,c |
|
0857 |
1f |
|
rar |
|
0858 |
4f |
|
mov c,a |
|
0859 |
f1 |
|
pop psw |
|
085a |
17 |
|
ral |
|
085b |
d2 xx xx |
|
jnc m_loop |
|
085e |
c9 |
|
ret |
|