Хостинг портала RFpro.ru: Московский хостер Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64 РАССЫЛКИ ПОРТАЛА RFPRO.RU Лучшие эксперты данной рассылки Номер выпуска: | 1415 | Дата выхода: | 13.01.2011, 15:00 | Администратор рассылки: | Лысков Игорь Витальевич (Старший модератор) | Подписчиков / экспертов: | 217 / 67 | Вопросов / ответов: | 1 / 1 | Вопрос № 181786: Здравствуйте, уважаемые эксперты! Прошу Вас помочь с задачей: В массиве А(12) (элемент - символ) найти минимальный в каждой тройке чисел, из низ выбрать максимальный. Среда, ассемблер 16 битный под DOS , tasm и tlink , использовать модель памяти smal... Вопрос № 181786: Здравствуйте, уважаемые эксперты! Прошу Вас помочь с задачей: В массиве А(12) (элемент - символ) найти минимальный в каждой тройке чисел, из низ выбрать максимальный. Среда, ассемблер 16 битный под DOS , tasm и tlink , использовать модель памяти small. Просьба написать к каждой строке пояснительный комментарий. Отправлен: 08.01.2011, 14:22 Вопрос задал: Федоров Иван (Посетитель) Всего ответов: 1 Страница вопроса » Отвечает Лысков Игорь Витальевич (Старший модератор) : Здравствуйте, Федоров Иван ! Вот и программа.
Код: ;В массиве А(12) (элемент - символ) найти минимальный в каждой тройке чисел, ;из низ выбрать максимальный
lenA equ 12 ;длина массива А
.model small ;модель памяти
.stack 512 ;стек 512 слов
.data ;сегмент данных strA db 'Array A: $' strMax db 0dh,0ah,'Max = $' strAny db 0dh,0ah,'Press any key$' A db lenA dup (?)
.code ;сегмент кода start: mov ax, @data ;настроим сегменты данных mov ds, ax mov es, ax
lea dx, strA mov ah, 9 int 21h ;строка приглаш ения для ввода А
;Введем масив А посимвольно, проверяя на цифру lea di, A ;адрес массива А mov cx, lenA ;длина массива А c1: mov ah, 8 ;функция ввода кода без отображения c2: int 21h cmp al, '0' ;проверка на цифру jb c2 ;нецифру игнорируем cmp al, '9' ja c2 mov dl, al ;сохраним для вывода stosb ;сохраним mov ah, 2 ;функция вывода символа из dl int 21h loop c1 ;вводим ровно 12 цифр
;Ищем максимальный из минимальных lea si, A ;адрес массива А mov cx, lenA/3 ;число троек 12/3=4 mov bh, 0 ;нусть минимальный=0 (самое маленькое значение)
c3: push cx ;сохраним число троек mov cx, 3 ;число элементов в тройке mov bl, 0ffh ;пусть минимальный=256 (самое большое значение) ;ищем минимальный в тройке c4: lodsb ;очередное значение cmp al, bl ;сравниваем с минимальным jae c5 ;>= - обходим mov bl, al ;сохраним новое c5: loop c4 ;по всем 3 ;ищем максимальный из минимальных cmp bl, bh ;сравним с максимальным jbe c6 ;<= - обходим mov bh, bl ;сохраним новое
c6: pop cx ;востановим счетчик групп loop c3 ;по всем тройкам
lea dx, strMax ;адрес строки mov ah, 9 ;функция вывода int 21h ;выводим строку Max=
mov dl, bh ;найденный max mov ah, 2 ;функция вывода символа int 21h ;выведем
lea dx, strAny mov ah, 9 int 21h ;press any key
mov ah, 8 int 21h ;ждем нажатия на клавишу
mov ax, 4c00h int 21h ;выход в ДОС
end start
----- Люби своего ближнего, как самого себя Ответ отправил: Лысков Игорь Витальевич (Старший модератор) Ответ отправлен: 08.01.2011, 14:54 Номер ответа: 265288 Украина, Кировоград Тел.: +380957525051 ICQ # 234137952 Mail.ru-агент: igorlyskov@mail.ru Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"? | Отправить SMS #thank 265288 на номер 1151 (Россия) | Еще номера » | Оценить выпуск » Нам очень важно Ваше мнение об этом выпуске рассылки! Скажите "спасибо" эксперту, который помог Вам! Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА на короткий номер 1151 (Россия) Номер ответа и конкретный текст СМС указан внизу каждого ответа. Полный список номеров » * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов) ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются. *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании. |
Комментариев нет:
Отправить комментарий