Нахождение максимума и минимума
Классическая задача нахождения максимума (или минимума) предполагает осуществление цикла по всем элементам массива. Сначала до входа в цикл максимальным (минимальным) объявляется самый первый элемент. Затем в цикле происходит сравнение с каждым текущим элементом массива. Если он больше (меньше) объявленного, то происходит обновление максимума (минимума) новым значением. Если нет, то цикл продолжается дальше без обновления. По окончании цикла в указанной ячейке находится максимальный (минимальный) элемент массива. При необходимости в операторе сравнения можно осуществлять сохранение в двух ячейках адреса максимума (минимума).
Найти максимальный элемент в таблице, содержащей байтовые числа. Таблица содержится в памяти программ, начиная с адреса TABL. Количество элементов в ней указано в R6. Максимальный элемент разместить в R7, а адрес этого элемента - в R4, R5.
Распределение ресурсов: Так как числа находятся в памяти программ, то необходимо использовать команду MOVC для пересылки числа в А.
NAME MAXX
Beg: mov dptr, #TABL ;записать в указатель адреса первого числа в ПК
mov a, #0 ;обнуление АСС, чтобы "не мешал" при вычисления адреса
movc a, @a+dptr ;пересылка числа из ПК в АСС
mov r7,a ;запись в регистр первого числа как временно наибольшего
mov r4, dph ;запись в R4 и R5 временно адреса первого числа
mov r5, dpl ;
inc dptr ;установка указателя на второе число
|
|
dec r6 ;уменьшение счетчика чисел на 1
m1: mov a, #0 ;начало цикла.обнуление АСС, чтобы "не мешал" при вычисления адреса
movc a, @a+dptr ;пересылка числа из ПК в АСС
subb a, r7 ;выичитание текущего числа из временно максимального
jc m2 ;переход, если есть перенос, т.е. число меньше, чем в R7
mov r7,a ;сохранение числа, как нового максимального
mov r4,dph ;сохранение его адреса в регистрах
mov r5, dpl ;
m2: inc dptr ;увеличение адреса числа на 1
djnz r6, m1 ;проверка на 0 счетчика чисел и зацикливание
END
Найти минимальный элемент в таблице, содержащей байтовые числа. Таблица содержится в памяти данных, начиная с адреса TABL. Количество элементов в ней указано в R6. Минимальный элемент разместить в R6, а адрес этого элемента - в R2, R3.
Распределение ресурсов: Задача почти аналогична задаче 2.12.1.. Только числа находятся в памяти данных, поэтому необходимо использовать команду MOVХ для пересылки числа в А. И необходимо найти минимальный элемент.
NAME MINX
Beg: mov dptr, #TABL ;записать в указатель адреса первого числа в ПК
movx a, @dptr ;пересылка числа из ПД в АСС
|
|
mov r6,a ;запись в регистр первого числа как временно наибольшего
mov r2, dph ;запись в R2 и R3 временно адреса первого числа
mov r3, dpl ;
inc dptr ;установка указателя на второе число
dec r5 ;уменьшение счетчика чисел на 1
m1: movx a, @dptr ;пересылка числа из ПД в АСС
subb a, r6 ;вычитание текущего числа из временно максимального
jnc m2 ;переход, если нет переноса, т.е. число больше, чем в R6
mov r6,a ;сохранение числа, как нового максимального
mov r2,dph ;сохранение его адреса в регистрах
mov r3, dpl ;
m2: inc dptr ;увеличение адреса числа на 1
djnz r5, m1 ;проверка на 0 счетчика чисел и зацикливание
END
Дата добавления: 2020-04-25; просмотров: 108; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!