Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Якщо цей аспект не врахувати, то правильними результатами будуть тільки множення додатних чисел.Содержание книги
Поиск на нашем сайте
Ще на що особливо треба звернути увагу, що: 1) нам треба отримати результат додавання трьох байт 2) оскільки AVR-мікроконтролер «вміє» додавати тільки два регістри між собою, то для додавання трьох байт треба використати два рази інструкцію додаванні AVR-мікроконтролера 3) при додаванні двох байт між собою результат може бути 9-ти бітне число. При додаванні трьох байт між собою максимально можливий прогнозований результат може бути 10-ти бітне число. 4) Перенос треба врахувати при формуванні наступного байту результату а не при формуванні результату, для якого виконується дане додавання трьох байт. Тому треба реалізувати алгоритм, який би «запам’ятовував» всі переноси (у нашому випадку максимально можлива кількість 2) і їх враховував при формуванні наступного байту остаточного результату множення. 5) Оскільки інше правило говорить, що при множенні 16-ти бітного числа на 16-ти бітне число, максимально можливий результат може бути -ти бітне число – тобто 4 байти, то при формуванні останнього байту не обов’язково слідкувати за переносом у п’ятий байт, бо, якщо він і буде, то це буде біт, який повторює останній біт 4-ри бітного числа (біт знаку).
Деякі рекомендації для полегшення написання програми в 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; просмотров: 329; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.147.78.242 (0.011 с.) |