- •Цифровые устройства и микропроцессоры Микроконтроллеры фирмы “Freescale”
- •117454, Москва, просп. Вернадского, 78 предисловие
- •1.1. Основные характеристики микроконтроллера.
- •1.2 Способы адресации
- •Карта памяти микроконтроллера.
- •1.4. Принципы написания программы.
- •Метка, операция, операнд(ы); комментарий
- •2. Исследование команд пересылки данных
- •3. Арифметические команды.
- •5. Команды работы с битовыми полями.
- •7. Содержание отчета
- •8. Контрольные вопросы и задания.
- •Методические указания по выполнению лабораторной работы №2 Изучение команд сдвигов, команд передачи управления и специальных команд.
- •1. Команды сдвигов.
- •Команды передачи управления.
- •2.1. Команды безусловного перехода.
- •2.2. Команды условного перехода.
- •Команды работы с подпрограммами.
- •Команды работы с прерываниями.
- •3. Специальные команды.
- •4. Содержание отчета
- •Контрольные вопросы и задания
- •Методические указания по выполнению лабораторной работы №4. Программирование ацп и фильтрации сигналов.
- •Библиографический список.
5. Команды работы с битовыми полями.
Список команд работы с битовыми полями представлен в таблице 7.
Таблица 7.
SEC |
SEI |
SEV |
BSET |
CLC |
CLI |
CLV |
BCLR |
Пример 10. Установить бит переноса регистра признаков в логическую единицу и сбросить бит переполнения в логический ноль.
7. Содержание отчета
Отчет должен содержать:
Название и цель работы.
Лабораторные задания.
Составленные и отлаженные программы.
Результаты работы программ.
8. Контрольные вопросы и задания.
1. Какие команды сложения Вы знаете?
2. Какие команды вычитания Вы знаете?
3. Где располагаются результаты команды FDIV и что они собой представляют?
4. Где располагаются сомножители и произведение при выполнении команды MUL?
5. Чем отличаются команды FDIV и IDIV?
6. Какие методы адресации используют команды ABA, ADDA, ABY?
7. Каким образом используется бит переноса в операции вычитания?
8. Над какими операндами могут выполняться команды INC, DEC?
9. Объясните отличие в выполнении команд ADD и ADC.
10. Что может служить операндом команды ADCA?
11. Какой флаг устанавливается, если результат операции сложения превышает $FF?
12. Объясните, по какому принципу устанавливаются флаги переноса, нуля и переполнения в регистре статуса CCR при выполнении арифметических команд сложения и вычитания.
13. Напишите программу вычитания содержимого регистров X и Y из регистра D.
14. Просуммируйте содержимое двух ячеек памяти.
15.Вычислите произведение двух ячеек памяти.
16. Вычислите разность содержимого регистров X и Y.
17. Напишите программу сравнения ячеек памяти $0 и $1.
18. Произвести обмен содержимого аккумулятора B с содержимым старшего байта регистра Y.
19. Заполнить десять ячеек памяти, начиная с адреса $2000, десятью значениями ячеек стека.
20. Напишите программу, инвертирующую те биты ячейки памяти $2000, которые сброшены в ноль в аккумуляторе B.
21. Напишите программу, которая записывает в ячейку памяти $2100 только четыре старших бита аккумулятора A.
Методические указания по выполнению лабораторной работы №2 Изучение команд сдвигов, команд передачи управления и специальных команд.
1. Команды сдвигов.
Перечень команд сдвигов представлен в таблице 2.1.
Различают три типа команд сдвига: арифметические сдвиги, логические сдвиги и циклические сдвиги. Операции сдвига могут выполняться над содержимым аккумуляторов А и В, или над содержимым ячейки памяти.
Таблица 2.1
ASLA/LSLA |
ASRA |
LSRA |
ROLA |
RORA |
ASLB/LSLB |
ASRB |
LSRB |
ROLB |
RORB |
ASLD/LSLD |
ASR |
LSRD |
ROL |
ROR |
ASL/LSL |
|
LSR |
|
|
При выполнении команд арифметического сдвига вправо значение старшего бита заполняется знаком первоначального операнда (команды ASRA, ASRB, ASR).
Команды арифметического и логического сдвига влево практически совпадают (команды ASLA/LSLA, ASLB/LSLB, ASLD/LSLD, ASL/LSL). Освободившийся бит заполняется нулём.
При выполнении команд циклического сдвига освободившийся бит аккумулятора или ячейки памяти заполняется значением флага переноса С (carry) регистра признаков.
Пример 2.1. Умножить целое положительное число, находящееся в памяти по адресу $2000 на 16 не используя операцию умножения. Результат записать в ячейки [$2040,$2041].