Хостинг портала RFpro.ru: Московский хостер Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64 РАССЫЛКИ ПОРТАЛА RFPRO.RU Лучшие эксперты данной рассылки Номер выпуска: | 1432 | Дата выхода: | 31.03.2011, 16:00 | Администратор рассылки: | Лысков Игорь Витальевич (Старший модератор) | Подписчиков / экспертов: | 216 / 67 | Вопросов / ответов: | 1 / 1 | Вопрос № 182623: Здравствуйте! Прошу помощи в следующем вопросе: Помогите с программой на ассемблере под ОС Windows XP на TASM. Условие задачи: Даны 4 числа, найти их сумму и разделить ее на 2^a. Числа задаются в программе и не какого ввода с клавиат... Вопрос № 182623: Здравствуйте! Прошу помощи в следующем вопросе: Помогите с программой на ассемблере под ОС Windows XP на TASM. Условие задачи: Даны 4 числа, найти их сумму и разделить ее на 2^a. Числа задаются в программе и не какого ввода с клавиатуры не производится.
Заранее Большое Спасибо!!!!!!!!! Отправлен: 25.03.2011, 18:19 Вопрос задал: Magma (Посетитель) Всего ответов: 1 Страница вопроса » Отвечает Лысков Игорь Витальевич (Старший модератор) : Здравствуйте, Magma! Два момента: 1) У Вас c, d, e байты, и Вы их складываете со словом AX (байт a Вы преобразовали в слово). Тогда уже делайте так:
Код: mov al, a cbw mov bx, ax mov al, b cbw add bx, ax ;... 2)делить на 2^a надо сдвигом на a бит вправо
3)Вот Вам примерная программа. Учтено, что байты b, c, d, e могут быть знаковыми числами В результате получим частное в bx, остаток в ax
Код: .model small .stack 100h .data
a db 2 b db 3 c db 5 d db 7 e db 4
.code
begin: mov AX, @data mov DS, AX
mov al, b cbw ;ax = b mov bx, ax ;bx = b mov al, c cbw ;ax = c add bx, ax ;bx = b + c mov al, d cbw ;ax = d add bx, ax ;bx = b + c + d mov al, e cbw ;ax = e add bx, ax ;bx = b + c + d + e
;разделим с остатком на 2^a ;найдем маску для остатка mov cl, a ;cl = a mov ax, 1 ;ax = 00000001b shl ax, cl ;ax = 00000100b (для а = 2) dec ax ;ax = 00000011b and ax, bx ;остаток деления на 2^а = 4 будет число, "равное а последним битам&q uot; sar bx, cl ;частное, как арифметический сдвиг вправо на а бит
mov ax, 4c00h int 21h
end
----- Люби своего ближнего, как самого себя Ответ отправил: Лысков Игорь Витальевич (Старший модератор) Ответ отправлен: 25.03.2011, 18:31 Номер ответа: 266400 Украина, Кировоград Тел.: +380957525051 ICQ # 234137952 Mail.ru-агент: igorlyskov@mail.ru Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"? | Отправить SMS #thank 266400 на номер 1151 (Россия) | Еще номера » | Оценить выпуск » Нам очень важно Ваше мнение об этом выпуске рассылки! Скажите "спасибо" эксперту, который помог Вам! Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА на короткий номер 1151 (Россия) Номер ответа и конкретный текст СМС указан внизу каждого ответа. Полный список номеров » * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов) ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются. *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании. |
Комментариев нет:
Отправить комментарий