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

                              rrc;                                      делаем сдвиг в сторону младших разрядов

                              rrc;                                      проделываем этот шаг 4 раза, В результате

                              rrc;                                      в результате старшая Н цифра оказывается

                              rrc;                                      на месте младшей

                              ani 00001111b;  обнуляем старшие биты              

                              add D;                                 складываем с текущей суммой

                              mov D,A;                           и оставляем сумму в D

                              inx H;                                 смещаем указатель чтения

                              dcr B;                                  уменьшаем счетчик

                              jnz loop;                             пока не 0 повторяем цикл

               (в результате в регистре D окажется сумма всех Н цифр нашего буфера)

5.  Из массива, расположенного между адресами ADR1 и ADR2 (ADR1<ADR2), выделить минимальное и максимальное числа(байты) превышающие POROG, находящийся по адресу LIMIT, и просчитать их количество. Результат записать в массив COUNT.

               (В задаче предполагаем, что  ADR2-ADR1<=256)

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

                              push PSW;                         и сохраняем обратно в стек

skip:

                              inx H;                                 смещаем указатель чтения

                              dcr B;                                  уменьшаем счетчик цикла

                              jnz loop;                             повторяем пока он не обнулится             

                              pop PSW;                           восстанавливаем счетчик наших чисел

                              sta COUNT;                       сохраняем его в COUNT