mov A,D; далее сохраняем максимальное и минимальные числа
sta COUNT+1;
mov A,E;
sta COUNT+2;
6. Результаты эксперимена загружены в ячейки памяти от ADR9 до ADR9+178.
Вычислить среднее значение результата эксперимента и записать в ячейку REZULT. Для деления использовать готовую подпрограмму DIV со следующим описанием входных данных: HL-делимое, D - делитель; результатов деления: H - частное. L - остаток, искажаемых регистров: Н, L
lxi D,ADR9; загружаем указатель чтения в DE
lxi H,0; обнуляем счетчик суммы элементов массива
mvi B,178; загружаем счетчик повторения цикла
loop:
ldax D; читаем текущий элемент
add L; складываем его с младшим словом регистра HL
mov L,A; и копируем сумму в L
jnc skip; если был перенос
inr H; увеличиваем старшее слово на единицу
skip:
inx D; смещаем указатель чтения
dcr B; уменьшаем счетчик цикла
jnz loop; повторяем пока счетчик не обнулится
mov D,178; загружаем делитель в D
call DIV; вызываем подпрограмму деления
7.
lxi H, ADR1; загружаем указатель чтения в HL
mvi B, ADR2-ADR1; загружаем счетчик цикла
lda LIMIT; читаем пороговое значение из LIMIT в А
mov C,A; копируем его в С
mov D,A; текущий максимум ставим равным этому пороговому
mvi E,255; текущий минимум раным 255 (заранее невозможная
mvi A,0; ситуация), обнуляем счетчик чисел(которые>POROG)
push PSW; сохраняем счетчик в стеке
loop:
mov A,M; читаем текущий элемент из памяти
cmp C; сравниваем с POROG
jz skip; если <=POROG, не считаем
jc skip;
cmp D; если >POROG, сравниваем с текущим максимумом
jz check_min; если <=то идем проверять с тек. минимумом
jc check_min;
mov D,A если >его, то ставим данный байт текущим максимумом
check_min:
cmp E; сравниваем с тек. мин,
jz count; если >=, то идем дальше
jnc count;
mov E,A; если < , то это новый тек. мин
count:
pop PSW; нужно посчитать текущий байт. т/к он >POROG
inr A; восстанавливаем счетчик из стека, инкрементируем его,
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.