Хостинг портала RFpro.ru: Московский хостер Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64 РАССЫЛКИ ПОРТАЛА RFPRO.RU Чемпионы рейтинга экспертов в этой рассылке Номер выпуска: | 1323 | Дата выхода: | 22.04.2010, 21:00 | Администратор рассылки: | Лысков Игорь Витальевич, Модератор | Подписчиков / экспертов: | 337 / 62 | Вопросов / ответов: | 1 / 1 | IRC-канал по теме: | #assembler | Вопрос № 177903: Уважаемые эксперты! Помогите, пожалуйста, решить задачу. Точнее, подправить уже имеющийся код под немного другое условие. Итак, есть пример задачи: Сложение N (N<16) двухбайтных чисел. Числа должны располагаться во внутренней или внешней пам... Вопрос № 177903: Уважаемые эксперты! Помогите, пожалуйста, решить задачу. Точнее, подправить уже имеющийся код под немного другое условие. Итак, есть пример задачи: Сложение N (N<16) двухбайтных чисел. Числа должны располагаться во внутренней или внешней памяти, начиная с определенного адреса. результат должен фиксироваться в регистрах R0 - R7 или ячейках внутренней памяти. Решение задачи: NAME LABORATORNAJA 1
DSEG AT 30h ; задаем начало сегмента внутренней памяти данных с адреса 30h. CSEG AT 0h ; задаем начало сегмента памяти программ с адреса 0h.
mov r0, #30h mov r1, #40h ; задаем начальные адреса ячеек внутренней памяти для хранения младших и старших байтов (соответственно) складываемых чисел.
mov 30h, 0FFh ; сохраняем в ячейке с адресом #30h младший байт 1-го слагаемого. mov 31h, 0F2h ; -//- младший байт 2-го слагаемого.< br>mov 32h, 01Fh ; -//- младший байт 3-го слагаемого. mov 33h, 0ABh ; -//- младший байт 4-го слагаемого.
mov 40h, 0F3h ; сохраняем в ячейке с адресом #40h старший байт 1-го слагаемого. mov 41h, 0FFh ; -//- старший байт 2-го слагаемого. mov 42h, 053h ; -//- старший байт 3-го слагаемого. mov 43h, 0BFh ; -//- старший байт 4-го слагаемого.
clr a mov r4, a mov r3, a mov r2, a ; очищаем аккумулятор и рабочие регистры. mov r7, #4 ; задаем счетчик цикла, равный числу слагаемых.
sum: ; цикл подсчета суммы. результат получаем в виде r2r3r4.
clr c ; очищаем байт переноса. mov a, @r0 ; считываем младший байт очередного элемента. add a, r4 ; складываем младшие байты суммы и очередного элемента. mov r4, a ; сохраняем результат младшего байта в регистре r4. inc r0 ; подготавливаем младший байт следующего слагаемого.
mov a, @r1 ; считываем старший байт очередного элемента. addc a, r3 ; складываем старшие байты суммы и очередного элемента, с учетом переноса от младшего разряда. mov r3, a ; сохраняем результат старшего байта в регистре r4. inc r1 ; подготавливаем старший байт следующего слагаемого.
clr a ; очищаем аккумулятор. addc a, r2 ; добавляем к результату перенос от сложения старших байтов. mov r2, a ; сохраняем старший разряд результата.
djnz r7, sum ; цикл продолжается, пока есть элем енты.
NOP END
Просьба помочь изменить вышенаписанный код под такое условие задачи: Составить программу сложения двух N-байтных чисел (2<N<8). Операнды должны располагаться во внутренней или внешней памяти, начиная с определенных адресов. Результат должен фиксироваться в регистрах R0-R7 или ячейках внутренней памяти. Спасибо. (На всякий случай, ОЭВМ серии MCS51, среда uVision2) Отправлен: 17.04.2010, 20:46 Вопрос задал: Потапов Дмитрий Михайлович, Посетитель Всего ответов: 1 Страница вопроса » Отвечает Лысков Игорь Витальевич, Модератор : Здравствуйте, Потапов Дмитрий Михайлович. Программа в приложении. Учтите, что сумма будет на 1 байт длиннее Не отлаживал, так что обязательно проверьте Приложение: ----- Удачи! Ответ отправил: Лысков Игорь Витальевич, Модератор Ответ отправлен: 19.04.2010, 10:42 Номер ответа: 260910 Украина, Кировоград Тел.: +380957525051 ICQ # 234137952 Mail.ru-агент: igorlyskov@mail.ru Абонент Skype: igorlyskov Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"? | Отправить SMS #thank 260910 на номер 1151 (Россия) | Еще номера » | Оценить выпуск » Нам очень важно Ваше мнение об этом выпуске рассылки! Скажите "спасибо" эксперту, который помог Вам! Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА на короткий номер 1151 (Россия) Номер ответа и конкретный текст СМС указан внизу каждого ответа. Полный список номеров » * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов) ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются. *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании. |
Комментариев нет:
Отправить комментарий