Практические задания на экзамен по дисциплине "Цифровые и микропроцессорные устройства", страница 4

                              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;                                  восстанавливаем счетчик из стека, инкрементируем его,