Главная » Просмотр файлов » Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих (2007)

Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих (2007) (1264222), страница 15

Файл №1264222 Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих (2007) (Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих (2007)) 15 страницаХартов В.Я. Микроконтроллеры AVR. Практикум для начинающих (2007) (1264222) страница 152021-07-29СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 15)

Если один из операндов равен О, вычитание не проводится, а результат принимается равным другому операнду, при необходимости корректируется знак результата. Если оба операнда не равны О, в Т сохраняется знак уменьшаемого и восстанавливают оба числа. При этом восстановлению числа В предшествует регистровый обмен Ас-+ В. Затем выполняют сравнение порядков.

Если порядки равны, сравнивают мантиссы,при их равенстве результат операции считается равным О. Выявляется большее число без учета знака, которое помещается в регистры В, Если при этом выполняется обмен регистров, то хранимый в Т знак меняется на противоположный. Дальнейшие действия связаны с выравниванием порядков и сдвигом вправо мантиссы меньшего числа, которое находится в регистрах А. После выравнивания порядков выполняется вычитание мантисс и формирование результата в регистрах А.

При вычитании мантисс с одинаковым знаком может возникнуть нарушение нормализации вправо, т. е. появление одного или нескольких нулей в старших разрядах мантиссы разности. Устранение нарушения нормализации выполняется путем сдвига мантиссы разности влево и уменьшения порядка результата рА на единицу при каждом сдвиге. Если при уменьшении порядка возникнет антипереполнение (при изменении порядка от минимально допустимого значения ОхОО к максимальному значению Охи), выполняется выход из процедуры с установленным флагом С = 1 и возврат в головной модуль программы с неопределенным результатом.

После устранения нарушения нормализации выполняется форматирование результата в регистрах А и выход из процедуры вычитания в основную программу. Программа модуля вычитания, согласно описанному алгоритму, представлена в листинге программы 3.5.

В ней, как и в предыдушем случае, использованы стандартные библиотечные процедуры для сдвига мантиссы, обмена операндов, преобразования форматов. Следует отметить, что использование команд с условным переходом, выполняемых по механизму относительной адресации, привело к необходимости выполнения длинных переходов за два шага: сначала на близко расположенную локальную метку ДиЮ„а затем с помощью команды безусловного перехода грир на метку выхода Ди)А ;Программа 3.5 модуля вычитания чисел с плавающей точкой ;с одинаковым знаком выполняет вычитание из 1-го числа А, 3. 2. Операции над числами с клавающеи точкои ;размещенного в регистрах (рл,пА), 2-го числа, размещенного ьв регистрах (рВ,МВ). ;исходные операнды представлены в базовом формате.

;Результат операции возвращается в регистры 1-го числа ,"(рА,пА) в базовом формате. ;Программный модуль размещается в файле Е1зць.авп и ;подключается к основной программе с помощью директивы .Тпс1цбе "Г1эць.авп" ;сохранение знака в Т ;восстановление числа А ;теперь в рА порядок 2-го числа ;восстановление числа В 94 гзпр вз в2: вес гбпр БцЬЯ4 вз: ЯцЬГ4: поп асс,рВ вцЬ асс,рА Ьгеп ЯцЬГ7 срт асс,24 Ьгпх БцЬГб гса11 внарАВ ;снова вычитание порядков ;передача большего числа в (рд,пА) перед форматированием результата гзпр ЯцЬГ9 вычитание с заемом Умножение БцЬГ8: вЬгс пАН,7 гбпр БцЬГ9 бес рА срт рА,Охгг вес Ьгеп Оп1ГЯ 1в1 пА1 го1 шАМ го1 пАН с1с гзпр БцЬРБ ЯцЬй9: гса11 рася гзпр Оц1Г и сбрасываем флаг ;повторяем проверку ;форматируем результат ;выход из процедуры вычитания 3.

Арифметическая обработка данных ;переход при одинаковых порядках ЯцЬГб: гса11 вЬ1ГГ ;сдвиг мантиссы меньшего числа оес асс в пА, пока Ьгпе ЯцЬГб 1 разность порядков не равна О ;Вычитание мантисс и сохранение разности в пА ЯцЬГ7: вцЬ пВЬ,шАЬ нот пА1.,пВ1, вьс пВМ,ПАМ ;вычитание с заемом поч пАМ, пВМ вЬс пВН, пАН шоч пАН пвн поч рА,рВ ;передача порядка'результата в рА ;проверка нарушения нормализации ;переход, если нарушения нет, иначе, не сдвигая мантиссу, проверяем антипереполнение, заранее установив Флаг в 1, ;при антипереполнении выходим с флагом 1, иначе сдвигаем мантиссу пА влево Следует заметить, что описанные здесь алгоритмы и программы сложения и вычитания не являются полностью оптимальными. Например, восстановленные операнды можно с учетом заданной операции н операндов представить в дополнительных кодах со знаковым разрядом; в дальнейшем проводить операции сложения мантисс в дополнительных кодах, исключив тем самым необходимость перестановки операндов (табл.

3.5). 3.7. Операции над числами с плавающей лючкой 95 Таблица 3.5. Операции в дополнительных кодах В рамках практикума не предполагалось получение оптимального кода по времени исполнения и по размеру, а требовалось лишь достижение результативности алгоритмов. Тем не менее предложенные программные решения могут оказаться достаточно эффективными в целом ряде приложений. Алгоритм умножения чисел с плавающей точкой С = А х В включает следующие действия: ° сложение знаков сомножителей по модулю 2 для определения знака произведения; ° сложение порядков сомножителей; ° перемножение мантисс как чисел с фиксированной точкой; ° нормализация и коррекция порядка произведения при получении ненормализованной мантиссы произведения.

В процессе сложения порядков может возникнуть как переполнение, так и антипереполнение. При перемножении нормализованных мантисс не может быть нарушения нормализации влево, а нарушение нормализации вправо — только на один бит. При сложении смещенных порядков может возникнуть перенос, что необходимо учитывать при определении порядка произведения. На рис. 3.12 приведена схема алгоритма умножения А на множитель В, начиная с младших разрядов множителя В со сдвигом вправо суммы частичных произведений и множителя. Умножение Программа З.б .ьпс1цое в8515оес.1пс" ;.1пс1цде "щ8515дес.1пс" .пег Сещр = г16 .оег асс = г17 .оег Спс = г18 .оеГ рх = г20 4 — 1998 3. Арифметическая обработка данных Рнс.

З.И. Схема алгоритма умножения с плавающей точкой 3.7. Операции над числами с плавакнней точкой 97 начинается с проверки сомножителей на О. Если один из сомножителей равен нулю, результат приравнивают 0 и операция прекращается. Определяется знак произведения, сохраняемый на флаге Т. Далее восстанавливают мантиссы сомножителей. Затем выполняется сложение смещенных порядков. Если при сложении порядков перенос не возник, из полученной суммы вычитается 127, так как в сумме это значение участвовало дважды.

При отсутствии заема (флаг С = 0) выполняется переход к умножению мантисс. Наличие заема при вычитании 127 свидетельствует о возникновении антипереполнения. Происходит выход из про; цедуры умножения с флагом С = 1. Если при сложении порядков возник перенос, эквивалентный потере 256, к сумме добавляют корректирующее значение 129 ( — 256 + 129 = — 127). Отсутствие переноса в этом случае сопровождается перемножением мантисс, наличие переноса свидетельствует о переполнении и прекращении операции. Умножение мантисс выполняется с помощью циклической процедуры из 24 итераций (по числу разряда множителя), включающей сдвиг мантиссы множителя вправо на один разряд, анализ на флаге С очередного бита множителя, прибавление множимого к сумме частичных произведений (если С = 1) или пропуск сложения (если С = 0), сдвиг мантиссы произведения вправо.

При умножении мантисс разряды произведения, покидающие при сдвиге вправо разрядную сетку, утрачиваются. После завершения цикла умножения, контролируемого с помощью счетчика, проверяется значение старшего бита мантиссы произведения. При значении шСН.7 = 1 нарушения нормализации нет и выполняется преобразование результата в базовый формат. Прн шСН.7 = 0 произошло нарушение нормализации вправо.

Мантисса сдвигается влево на одни разряд, порядок уменьшается на 1 и выполняется проверка на переполнение. Алгоритм умножения представлен листингом программы 3.6. ;Программа Э.б умножения чисел с плавающей точкой *** ** ****** * ************ **** ************ ** файл определений для Лт9088515 файл определений для лтщеда8515 временный регистр аккумуляторный регистр счетчик циклов определение множимого 3.

Арифметическая обработка данных 98 3.7. Операнди над числами с плавающей точкой 99 определение произведения проверка В на 0 ;умножение мантисс (пс=пАхпВ) Мц1Г2: 1бт Спт, 24 )инициализируем счйтчик циклов Мц1Г3: гог пВН ;сдвиг множителя Рог пВИ для анализа младшего бита .с)ег пАН = г21 .НЕГ пАИ = хгг .с)ех пАЬ = г23 .с)ег рВ = х24 ;определение множителя .с)ет пвН = г25 .с)ех пВМ = г26 .с)ех пВ1 = г27 .бег рС = г28 .бег пСН = х29 .с)ег пСМ = г30 .с)ег пСЬ = т31 .ог9 8000 1бт гепр, 1он)НАИВНО) ; инициализация указателя стека оцх зр1, Хепр 101 тепр, ЬЬОЬ)НАИВНО) оцт зрп, Хепр стт рС ;очищаем регистры результата с1г пС1 с 1т пСМ с1г пСН гса11 ср А 0 ;проверка А на 0 Ьгес) Сцй гса11 ср в 0 Ьгец Яц1Г поч асс,рА ;получение знака произведения еог асс,рВ Ьзт асс,7 4сохранение знака в Т гса11 тес ;восстановление рА и пАН гса11 внарАВ гса11 тес ;восстановление рв и пвН ;сложение смещенных порядков поч рС,рВ ас)б рС,РА Ьгсз Мц1Г1 зцЬ1 рС,127 ;вычитание лишнего смещения Ьгсс Мц1Г2 хзпр Сцвг иц1Г1: 1да тепр,129 ,"если был перенос при сложении ас)д рс,гепр у -256+129=-127 Ьтсз Сц1т тот пВ1, Ьгсс Иц1Г4 абб пСЬ, пАЬ асс пСИ,пАМ ас)с пСН,пАН Иц1Г4: бес Спг Ьгпе Мц1Г5 гзпр Мц1Гб Мц1Г5: тох пСН хот пСМ гог пСЬ тзпр Мц1Г3 ;проверка нормализации Иц1Гб: Ьгхс Мц1Г7 хог пСН тот пСИ хог п1С1.

1пс рС зес Ьхец Сц1Х Иц1Г7: поч рА,РС поч пАЬ,пСЬ поч пАМ,пСИ поч пли,пСН гса11 расК Сц1Х: хзпр Сцтг . Ьпс1цс)е 5 В111Ь. азп" если бит множителя равен 1, прибавляем множимое)Ь-байт) затем И-байт и Н-байт уменьшаем счетчик циклов если не конец, повторяем сдвигаем вправо сумму частичных произведений результат нормализован увеличиваем порядок С=1 выход с флагом переполнения подготовка результата для форматирования преобразование формата операция завершена Приведем ряд примеров на умножение. В правом столбце сомножителя и результат умножения представлены в базовом формате: )б х 3!2=А ( 64) х ( 512)=32768 -256 х 2 =-5!2 ЗГ000000 х ЗРСООООО = ЗР400000 С2800000 х С4000000 = 47000000 С3800000 х 40000000 = С4000000 Деление При делении чисел с плавающей точкой С = А/В знаки операндов складывают по модулю 2 для определения знака частного, из порядка рА вычитают порядок рВ, мантиссы делят как числа с фиксированной точкой.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6374
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее