лабораторные работы / Работа с массивами
.docСаратовский государственный технический университет
Балаковский институт техники, технологии и управления
Лабораторная работа №4
по
Микропроцессорным устройствам систем управления
«Работа с массивами»
Выполнил: ст. гр. УИТ-52
Проверил: преподаватель
Коптенко В.И.
Балаково 2000
Цель работы: научиться работать с массивами, обрабатывать и сортировать массивы чисел.
Задание.
Дан массив ИЗ 20 ТОЧЕК+_2 . Составить программу, которая выбирает две точки с минимальным расстоянием.
Адрес |
Машин-ный код |
Метка |
Мнемокод |
Комментарий |
|
Основная часть программы |
|||||
0800 |
16 63 |
|
MVI b,63 |
в регистре b количество елементов массива=100 |
|
0802 |
15 |
|
DCR D |
|
|
0803 0805 |
0E 62 0d |
|
MVI c,62 Dcr c |
Внутренний цикл будет до (b-1) |
|
0806 |
21ff ff |
|
LXI H FFFF |
ОЧИСТКА РЕЗУЛЬТАТА |
|
0809 |
22 00 b2 |
|
SHLD B200 |
||
080c |
22 02 b2 |
|
SHLD B202 |
||
080f |
22 04 b2 |
|
SHLD B204 |
|
|
0812 |
21 00 0B |
|
LXI D B000 |
в пару DE – адрес первого элемента массива |
|
0815 |
21 02 b0 |
|
LxI H B002 |
в пару HL – адрес ВТОРОГО элемента массива |
|
0818 0819 082a 082b 082c 082d 082e 0831 |
D5 62 6c 23 23 c5 01 00 00 1a |
M2:
Lop1:
|
Push d Mov h, d Mov l, e Inx h inx h PUSH BC LXI B 0000 ldax d |
|
|
0832 |
9e |
|
Sbb m |
|
|
0833 |
D4 38 08 |
|
Jnc no_per |
|
|
0836 |
2a |
|
Cma |
Модуль |
|
0837 |
3c |
|
inr a |
|
|
0838
|
Cd 76 08 |
No_per |
Call kwadra |
|
|
083b |
D5 |
|
Push d |
|
|
083c |
23 |
|
Inx h |
|
|
083d |
13 |
|
Inx d |
|
|
083e |
1a |
|
Ldax d |
|
|
083f |
9e |
|
Sbb m |
|
|
0840 |
D4 45 08 |
|
Jnc no_per |
|
|
0843 |
2a |
|
Cma |
|
|
0844 |
3c |
|
Dcr a |
|
|
0845 |
Cd 76 08 |
No_per |
Call kwadra |
|
|
0848 |
3e 01 b2 |
|
Mvi a, b201 |
Если полученный результат меньше предшествующего, то он заносится в ячейку памяти |
|
084b |
91 |
|
Sub c |
||
084c |
3e 00 b2 |
|
Mvi a, b200 |
||
084f |
98 |
|
Sbb b |
||
0850 |
D467 08 |
|
Jnc no_p |
||
0853 |
2b |
|
Dcx h |
||
0854 |
22 02 b2 |
|
Shld b202 |
||
0857 |
1b |
|
Dcx d |
||
0858 |
Eb |
|
Xchg |
||
0859 |
22 04 b2 |
|
Shld b204 |
||
5c |
Eb |
|
xchg |
||
085b |
11 |
|
Inx d |
||
085d |
21 |
|
Inx h |
||
085e 085f 0860 0861 0864 0865 0866 |
E5 C5 E3 22 00 b2 e3 d1 e1 |
|
Push h Push d Xthl Shld b200 Xthl Pop d Pop h |
||
0867 |
23 |
No_p |
Inx h |
|
|
0868 |
C1 |
|
Pop b |
|
|
0869 |
05 |
|
Dcr b |
|
|
086a |
C2 2d 08 |
|
Jnz lop1 |
|
|
086d |
D1 |
|
Pop d |
|
|
086e |
13 |
|
Inx d |
|
|
086f |
13 |
|
Inx d |
|
|
0870 |
0d |
|
Dcr c |
|
|
0801 |
C8 |
|
Rz |
|
|
0872 |
59 |
|
Mov d, c |
|
|
0873 |
C3 18 08 |
|
Jmp m2 |
|
|
Процедура возведение в квадрат |
|||||
|
|
|
PROC KWADR |
заголовок процедуры |
|
0876 |
E5 |
|
PUSH H |
сохраним в В значение правого элемента массива |
|
0877 0878 |
67 6h |
|
MOV H,A MOV L, A |
|
|
0879 |
7d |
CIK |
MOV A, L |
|
|
087a |
81 |
|
ADD C |
|
|
087b 087c 087d 087e 087f |
4f 3e 0 88 46 25 |
|
MOV C, A MVI A, 0 ADC B MOV B,A DCR H |
|
|
0880 0883 0884 |
C4 79 08 E1 C9 |
|
JNZ CIK POP H RET |
|
В результате выполнения программы по адресу и b202 и b204 адреса координат точек , расстояния между которыми минимальное. Квадрат расстояния в b200