Хостинг портала RFpro.ru: Московский хостер Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64 РАССЫЛКИ ПОРТАЛА RFPRO.RU Лучшие эксперты данной рассылки Номер выпуска: | 1425 | Дата выхода: | 11.03.2011, 16:30 | Администратор рассылки: | Лысков Игорь Витальевич (Старший модератор) | Подписчиков / экспертов: | 217 / 66 | Вопросов / ответов: | 1 / 1 | Вопрос № 182399: Здравствуйте! Прошу помощи в следующем вопросе: В массиве, состоящим из N 16-разрядных кодов, определить минимальный элемент и зафиксировать его адрес. Массив находится во внешнем ОЗУ. Процессор Intel 8051.... Вопрос № 182399: Здравствуйте! Прошу помощи в следующем вопросе: В массиве, состоящим из N 16-разрядных кодов, определить минимальный элемент и зафиксировать его адрес. Массив находится во внешнем ОЗУ. Процессор Intel 8051. Отправлен: 06.03.2011, 15:50 Вопрос задал: katbka (Посетитель) Всего ответов: 1 Страница вопроса » Отвечает Лысков Игорь Витальевич (Старший модератор) : Здравствуйте, katbka! Можно сделать примерно так, как в предлагаемой программе Предполагаем, что элементы хранятся в порядке "младший байт первым" С вопросами обращайтесь в мини-форум
Код: array equ 0000h ;адрес массива 16-разрядных чисел во внешней памяти N equ 100 ;размерность массива
arr_adr_lo equ 30h ;мл байт адреса массива arr_adr_hi equ 31h ;ст байт адреса массива arr_count equ 32h ;длина массива min_adr_lo equ 33h ;мл байт адреса минимального элемента min_adr_hi equ 34h ;ст байт адреса минимального элемента work_adr_lo equ 35h ;мл байт адреса текущего э лемента work_adr_hi equ 36h ;ст байт адреса текущего элемента min_lo equ 37h ;мл байт минимального элемента min_hi equ 38h ;ст байт минимального элемента
org 0 ;начало
;Зададим адрес массива и число элементов ;результат в min_adr_lo и min_adr_hi mov arr_adr_lo, #low array ;мл байт адреса массива mov arr_adr_hi, #high array ;ст байт адреса массива mov arr_count, #N ;количество call min ;ищем адрес минимального элемента
jmp $ ;зацикливаемся
min: ;поиск адреса минимального элемента push dpl ;сохраним dptr push dph mov dpl, arr_adr_lo ;dptr = адресу массива mov dph, arr_adr_hi mov min_lo, #0ffh ;min = заведомо самому большому числу (0ffffh) mov min_hi, #0ffh mov r2, arr_count ;число элементов
loop: ;цикл по всем элементам mov work_adr_lo, dpl ;сохраним адрес текущего элемента mov work_adr_hi, dph movx a, @dptr ;мл байт текущего элемента mov r0, a ;сохраним inc dptr ;на адрес ст байта movx a, @dptr ;ст байт текущего элемента mov r1, a ;сохраним inc dptr ;на следующий элемент cjne a, min_hi, cmphi ;сравним ст байт текущего элемента со ст байтом минимального jmp cmplow ;если равны, то на сравнение мл байтов cmphi: ;не равны jnc next ;если текущий больше, то на следующий элемент jmp newmin ;если меньше, то сохраняем новый минимальный
cmplow: ;сравниваем мл байты mov a, r0 ;мл байт текущего элемента cjne a, min_lo, cmplo ;сравним мл байт текущего элемента со мл байтом минимального jmp next ;если равны, то на следующий cmplo: ;не равны jnc next ;если больше, то на следующий
newmin: ;нашли новый минимальный mov min_adr_lo, work_adr_lo ;сохраним адрес минимального mov min_adr_hi, work_adr_hi mov min_lo, r0 ;и его значение mov min_hi, r1 next: ;переходим на анализ следующего элемента djnz r2, loop ;циклим, пока r2 не ноль pop dph pop dpl ;восстановим dptr ret
end
----- Люби своего ближнего, как самого себя Ответ отправил: Лысков Игорь Витальевич (Старший модератор) Ответ отправлен: 07.03.2011, 11:36 Номер ответа: 266127 Украина, Кировоград Тел.: +380957525051 ICQ # 234137952 Mail.ru-агент: igorlyskov@mail.ru
Оценка ответа: 5 Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"? | Отправить SMS #thank 266127 на номер 1151 (Россия) | Еще номера » | Оценить выпуск » Нам очень важно Ваше мнение об этом выпуске рассылки! Скажите "спасибо" эксперту, который помог Вам! Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА на короткий номер 1151 (Россия) Номер ответа и конкретный текст СМС указан внизу каждого ответа. Полный список номеров » * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов) ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются. *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании. |
Комментариев нет:
Отправить комментарий