Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
progi_dlya_ekzamena.doc
Скачиваний:
3
Добавлен:
25.09.2019
Размер:
120.83 Кб
Скачать

2.12. Нахождение максимума и минимума

Классическая задача нахождения максимума (или минимума) предполагает осуществление цикла по всем элементам массива. Сначала до входа в цикл максимальным (минимальным) объявляется самый первый элемент. Затем в цикле происходит сравнение с каждым текущим элементом массива. Если он больше (меньше) объявленного, то происходит обновление максимума (минимума) новым значением. Если нет, то цикл продолжается дальше без обновления. По окончании цикла в указанной ячейке находится максимальный (минимальный) элемент массива. При необходимости в операторе сравнения можно осуществлять сохранение в двух ячейках адреса максимума (минимума).

2.12.1. Найти максимальный элемент в таблице, содержащей байтовые числа. Таблица содержится в памяти программ, начиная с адреса 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

2.12.2. Найти минимальный элемент в таблице, содержащей байтовые числа. Таблица содержится в памяти данных, начиная с адреса 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]