Хостинг портала RFpro.ru: Московский хостер Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64 РАССЫЛКИ ПОРТАЛА RFPRO.RU Чемпионы рейтинга экспертов в этой рассылке Номер выпуска: | 1366 | Дата выхода: | 25.06.2010, 15:30 | Администратор рассылки: | Лысков Игорь Витальевич, Старший модератор | Подписчиков / экспертов: | 234 / 63 | Вопросов / ответов: | 1 / 1 | IRC-канал по теме: | #assembler | Вопрос № 179157: Здравствуйте уважаемые эксперты! Помогите пожалуйста решить задачу на ассемблере: Дана последовательность байтов (положительные числа). Просуммировать их в цикле. Вывести 16-ричное представление суммы. Для организации вывода применить операции... Вопрос № 179157: Здравствуйте уважаемые эксперты! Помогите пожалуйста решить задачу на ассемблере:
Дана последовательность байтов (положительные числа). Просуммировать их в цикле. Вывести 16-ричное представление суммы. Для организации вывода применить операции сдвига битов. Примечание: сумма может не помещаться в один байт.
В ассемблере я не очень, так что прошу с подробными комментариями. Программа Tasm 5.0. Заранее спасибо! Отправлен: 20.06.2010, 15:00 Вопрос задал: Петров Юрий Иванович, Посетитель Всего ответов: 1 Страница вопроса » Отвечает Airyashov, Студент : Здравствуйте, Петров Юрий Иванович. например так
Код: ; сегмента стека s_s segment stack "stack" dw 100h dup(?) s_s ends
; сегмента данных d_s segment n=10 ; количество элементов массива A db 1,2,3,4,5,6,7,8,9,10 ; определить массив HexStr db '0123456789ABCDEF' ; для перевода в 16 СС d_s ends
; сегмента кода c_s segment assume ss:s_s,ds:d_s,cs:c_s; main PROC ; точка входа .286 ; разрешить команды 80286 mov ax,d_s ; копируем адрес mov ds,ax ; сегмента данных
mov cx,n ; определим количество итераций xor si,si ; индекс первого элемента xor dx,dx ; dx=0 тут получим сумму массива next: add dl,A[si] ; dl=элемент массив А adc dh,0 ; учтем возможный перенос inc si ; перейти к следующему элементу loop next ; продолжить цикл
; выведем значение на экран rol dx,4 ; переместим старшие 4 разряда в младшие mov cx,4 ; количество итераций цикла, так как в 16 разрядном регистре 4 тетрады next_ch: mov bx,dx ; bx=dx and bx,0fh ; выделим слажшую тетраду mov al,HexStr[bx] ; получить из строки соответствующий цифре символ для вывода int 29h ; вывести al на экран rol dx,4 ; перейти к следующей тетраде loop next_ch ; продолжить цикл
mov ax,0c07h ; ожидаем нажатие клавиши int 21h ; вызов DOS
mov ax,4C00h ; выход из программы int 21h ; вызов DOS main ENDP c_s ends END main ; определить точку входа в программу Ответ отправил: Airyashov, Студент Ответ отправлен: 20.06.2010, 16:34 Номер ответа: 262192 Оценка ответа: 5 Комментарий к оценке: Спасибо! Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"? | Отправить SMS #thank 262192 на номер 1151 (Россия) | Еще номера » | Оценить выпуск » Нам очень важно Ваше мнение об этом выпуске рассылки! Скажите "спасибо" эксперту, который помог Вам! Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА на короткий номер 1151 (Россия) Номер ответа и конкретный текст СМС указан внизу каждого ответа. Полный список номеров » * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов) ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются. *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании. |
Комментариев нет:
Отправить комментарий