![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Якщо цей аспект не врахувати, то правильними результатами будуть тільки множення додатних чисел.Содержание книги
Поиск на нашем сайте
Ще на що особливо треба звернути увагу, що: 1) нам треба отримати результат додавання трьох байт 2) оскільки AVR-мікроконтролер «вміє» додавати тільки два регістри між собою, то для додавання трьох байт треба використати два рази інструкцію додаванні AVR-мікроконтролера 3) при додаванні двох байт між собою результат може бути 9-ти бітне число. При додаванні трьох байт між собою максимально можливий прогнозований результат може бути 10-ти бітне число. 4) Перенос треба врахувати при формуванні наступного байту результату а не при формуванні результату, для якого виконується дане додавання трьох байт. Тому треба реалізувати алгоритм, який би «запам’ятовував» всі переноси (у нашому випадку максимально можлива кількість 2) і їх враховував при формуванні наступного байту остаточного результату множення. 5) Оскільки інше правило говорить, що при множенні 16-ти бітного числа на 16-ти бітне число, максимально можливий результат може бути
Деякі рекомендації для полегшення написання програми в AVR Assembler У цій роботі є необхідність використовувати велику кількість регістрів, кожен з яких має своє смислове навантаження. Щоб програму зробити більш зручною для читання варто використати директиви AVR Assembler.DEF і.UNDEF. Перша з яких дозволяє поставити у відповідність регістру якусь комбінацію символів (пере назвати регістр), а друга – відмінити це назначення.
Директива.DEF описана у додатковому теоретичному матеріалі для лабораторної роботи № 5 «Вивчення роботи з пам’яттю даних»
Директива UNDEF – «Відміна встановлення символьного значення вибраному регістрові» Ця директива є доступною тільки при використанні AVRASM2 (використовується AVR Studio v.4.18 по замовчуванню) Ця директива використовується для відміни символьного назначення регістру, попередньо використовуваною директивою.DEF. Синтаксис: .UNDEF Символьне ім’я Наприклад: .DEF temp = R16 … .UNDEF temp
Опис деяких мнемонік інструкцій, які використовуються у цій лабораторній роботі і не були описані у описах до попередніх лабораторних робіт MUL – «Множення беззнакових чисел» Ця інструкція здійснює множення 8-и бітного числа з 8-и бітним числом. Результатом буде 16-и бітне беззнакове число.
Множене (регістр Rd) і множник (регістр Rr) – це два регістри у яких зберігаються беззнакові числа. 16-ти бітний беззнаковий добуток поміщається у регістр R1 (старший байт добутку) і R0 (молодший байт добутку). Якщо множене чи множник розміщений у регістрі R0 чи R1, то результат обновить ці значення у цих регістрах після множення.
R1:R0 ← Rd x Rr (беззнакове число ← беззнакове число x беззнакове число)
Вплив на регістри статусу:
Вплив на регістри статусу:
Біт Z: Встановлюється, якщо результатом є число $0000, у іншому випадку – скидається. Біт C: Встановлюється якщо біт 15 результату встановлюється, у іншому разі - скидається.
Наприклад: mul r16,r17;Множення регістрів r16 і r17
MULS – «Множення знакових чисел» Ця інструкція здійснює множення 8-и бітного числа з 8-и бітним числом. Результатом буде 16-и бітне знакове число.
Множене (регістр Rd) і множник (регістр Rr) – це два регістри у яких зберігаються знакові числа. 16-ти бітний знаковий добуток поміщається у регістр R1 (старший байт добутку) і R0 (молодший байт добутку).
R1:R0 ← Rd x Rr (знакове число ← знакове число x знакове число)
Вплив на регістри статусу:
Вплив на регістри статусу:
Біт Z: Встановлюється, якщо результатом є число $0000, у іншому випадку – скидається. Біт C: Встановлюється якщо біт 15 результату встановлюється, у іншому разі - скидається.
Наприклад: muls r16,r17;Множення регістрів r16 і r17
MULSU – «Множення знакового числа з беззнаковим числом» Ця інструкція здійснює множення 8-и бітного числа з 8-и бітним числом. Результатом буде 16-и бітне число, яке є результатом множення знакового числа з беззнаковим числом.
Множене (регістр Rd) і множник (регістр Rr). Множене (регістр Rd) – це є знакове число, множник (регістр Rr) – беззнакове число. 16-ти бітний знаковий добуток поміщається у регістр R1 (старший байт добутку) і R0 (молодший байт добутку).
R1:R0 ← Rd x Rr (знакове число ← знакове число x беззнакове число)
Вплив на регістри статусу:
Вплив на регістри статусу:
Біт Z: Встановлюється, якщо результатом є число $0000, у іншому випадку – скидається. Біт C: Встановлюється якщо біт 15 результату встановлюється, у іншому разі - скидається.
Наприклад: mulsu r16,r17;Множення регістрів r16 і r17
FMUL – «Множення беззнакових дробових чисел» Ця інструкція здійснює множення 8-и бітного числа з 8-и бітним числом. Результатом цієї інструкції буде беззнаковий добуток цих регістрів, який попередньо піддається побітному зсуву на один біт вліво.
Нехай (N.Q) позначає дробове число з N бінарними цифрами зліва від коми, яка відділяє цілу і дробові частини і Q бінарними цифрами справа від коми. Добутком між двома числами у форматах (N1.Q1) і (N2.Q2) буде формат ((N1+N2).(Q1+Q2)). Для програм, які обробляють аналогові сигнали, формат (1.7) широко використовується для вхідних сигналів, (2.14) формат результату. Зміщення вліво потрібне для старшого байту результату для того, щоб зрівняти формат результату з форматом вхідного сигналу. Інструкція FMUL з’єднує операцію зміщення разом із інструкцією MUL. Множене Rd і множник Rr – це два регістри, які містять беззнакові дробові числа, де мається на увазі, що кома між цілою і дробовою частиною знаходиться між 6-им і 7-им бітом. Результатом є 16-и бітне беззнакове зміщене число де мається на увазі, о кома, яка розділяє цілу і дробову частину знаходиться між 14-им і 15-им бітом і записується в R1 (старший байт) і R0 (молодший байт). R1:R0 ← Rd x Rr (беззнакове число (1.15) ← беззнакове число (1.7) x беззнакове число (1.7))
Вплив на регістри статусу:
Вплив на регістри статусу:
Біт Z: Встановлюється, якщо результатом є число $0000, у іншому випадку – скидається. Біт C: Встановлюється якщо біт 15 результату встановлюється перед зміщенням, у іншому разі - скидається.
Наприклад: fmul r16,r17
FMULS – «Множення знакових дробових чисел» Ця інструкція здійснює множення 8-и бітного числа з 8-и бітним числом. Результатом цієї інструкції буде знаковий добуток цих регістрів, який попередньо піддається побітному зсуву на один біт вліво.
Нехай (N.Q) позначає дробове число з N бінарними цифрами зліва від коми, яка відділяє цілу і дробові частини і Q бінарними цифрами справа від коми. Добутком між двома числами у форматах (N1.Q1) і (N2.Q2) буде формат ((N1+N2).(Q1+Q2)). Для програм, які обробляють аналогові сигнали, формат (1.7) широко використовується для вхідних сигналів, (2.14) формат результату. Зміщення вліво потрібне для старшого байту результату для того, щоб зрівняти формат результату з форматом вхідного сигналу. Інструкція FMULS з’єднує операцію зміщення разом із інструкцією MULS. Множене Rd і множник Rr – це два регістри, які містять знакові дробові числа, де мається на увазі, що кома між цілою і дробовою частиною знаходиться між 6-им і 7-им бітом. Результатом є 16-и бітне знакове зміщене число де мається на увазі, що кома, яка розділяє цілу і дробову частину знаходиться між 14-им і 15-им бітом і записується в R1 (старший байт) і R0 (молодший байт). Зверніть увагу, що множення $80 (-1) з $80 (-1) – результатом операції зсуву буде $8000 (-1). Таким цином операція зсуву дає переповнення у додатковому коді. Це треба враховувати при написанні програмного забезпечення для AVR-мікроконтролера. R1:R0 ← Rd x Rr (знакове число (1.15) ← знакове число (1.7) x знакове число (1.7))
Вплив на регістри статусу:
Вплив на регістри статусу:
Біт Z: Встановлюється, якщо результатом є число $0000, у іншому випадку – скидається. Біт C: Встановлюється якщо біт 15 результату встановлюється перед зміщенням, у іншому разі - скидається.
Наприклад: fmuls r16,r17
FMULSU – «Множення знакового дробового числа із беззнаковим дробовим числом» Ця інструкція здійснює множення 8-и бітного числа з 8-и бітним числом. Результатом цієї інструкції буде беззнаковий добуток цих регістрів, який попередньо піддається побітному зсуву на один біт вліво.
Нехай (N.Q) позначає дробове число з N бінарними цифрами зліва від коми, яка відділяє цілу і дробові частини і Q бінарними цифрами справа від коми. Добутком між двома числами у форматах (N1.Q1) і (N2.Q2) буде формат ((N1+N2).(Q1+Q2)). Для програм, які обробляють аналогові сигнали, формат (1.7) широко використовується для вхідних сигналів, (2.14) формат результату. Зміщення вліво потрібне для старшого байту результату для того, щоб зрівняти формат результату з форматом вхідного сигналу. Інструкція FMULSU з’єднує операцію зміщення разом із інструкцією MULSU. Множене Rd і множник Rr – це два регістри, які містять беззнакові дробові числа, де мається на увазі, що кома між цілою і дробовою частиною знаходиться між 6-им і 7-им бітом. Результатом є 16-и бітне беззнакове зміщене число де мається на увазі, о кома, яка розділяє цілу і дробову частину знаходиться між 14-им і 15-им бітом і записується в R1 (старший байт) і R0 (молодший байт). R1:R0 ← Rd x Rr (знакове число (1.15) ← знакове число (1.7) x беззнакове число (1.7))
Вплив на регістри статусу:
Вплив на регістри статусу:
Біт Z: Встановлюється, якщо результатом є число $0000, у іншому випадку – скидається. Біт C: Встановлюється якщо біт 15 результату встановлюється перед зміщенням, у іншому разі - скидається.
Наприклад: fmulsu r16,r17
Завдання: 1. Об’явити дві двобайтні знакові константи: 2. У сегменті пам’яті даних об’явити змінну у яку буде записуватися результат множення 3. Розмістити вхідні величини у регістри мікроконтролера 4. Здійснити побайтне множення (з врахуванням того, які інструкції треба використати MUL, MULS, MULSU) і результати цих множень перемістити у резервні регістри для подальшого опрацювання. 5. Визначити значення третього байту множення 6. Записати перший (молодший) байт результату множення двох двобайтних знакових чисел у ОЗУ мікроконтролера (визначену попередньо змінну в п.2) 7.Сформувати другий байт результату множення двох двобайтних знакових чисел 7.1 Додати відповідні регістри 7.2 При додаванні здійснювати акумулювання всіх переносів у старші розряди 7.3 Записати другий байт множення двобайтним знакових чисел у ОЗУ двох двобайтних знакових чисел у ОЗУ мікроконтролера (визначену попередньо змінну в п.2) 8.Сформувати третій байт результату множення двох двобайтних знакових чисел 8.1 Додати відповідні регістри і переносів при формуванні другого байту результату 8.2 При додаванні здійснювати акумулювання всіх переносів у старші розряди 8.3 Записати третій байт множення двобайтним знакових чисел у ОЗУ двох двобайтних знакових чисел у ОЗУ мікроконтролера (визначену попередньо змінну в п.2) 9.Сформувати четвертий байт результату множення двох двобайтних знакових чисел 9.1 Додати відповідні регістри і переносів при формуванні третього байту результату 9.2 Записати четвертий байт множення двобайтним знакових чисел у ОЗУ двох двобайтних знакових чисел у ОЗУ мікроконтролера (визначену попередньо змінну в п.2) 9. Перевірити виконання програми на двох двобайтних додатних числах, двох від’ємних двобайтних числах, додатного двобайтного числа і від’ємного двобайтного числа.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-04-18; просмотров: 340; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.97.14.86 (0.01 с.) |