
- •Микроконтроллер mc68hc908gp32 регистровая структура, способы адресации, команды пересылки
- •Структура микроконтроллераMc68hc908gp32
- •1.1. Общая структура микроконтроллера 68hc908gp32.
- •1.2. Организация и адресация памяти
- •1.3 Регистровая модель
- •1.4 Типы данных
- •2. Способы адресации
- •2.1 Команды пересылки
- •3. Создание программы в среде проектированияWinIdEи её ассемблирование
- •3.1. Интегрированная средаWinIde
- •3.2. Структура ассемблерной строки и ассемблерной программы
- •Упражнения
- •Варианты заданий: Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Пример составления программы:
- •Список литературы:
Вариант 7
Используя непосредственныйспособ адресации, заслать число 73 в ячейку памятиB9 и в ячейку памяти 47. Число из ячейки 47 загрузить в аккумулятор, используяпрямойспособ адресации. Из аккумулятора число переслать в ячейку памяти 10D, используяиндексныйспособ адресации. Обменять содержимое регистров АСС и Х. Завершить программу командойSTOP.
Используя непосредственныйспособ адресации, заслать десятичное число 80 в ячейки памяти B3 иD7, а в регистр Х – число B2. Используяиндексный способ адресации с пост - инкрементом, переслать число из ячейки памятиD7 в ячейку B2. Число из ячейки B3 переслать в регистр АСС, используяиндексныйспособ адресации. Переслать содержимое регистра Х в регистр АСС. Завершить программу командойSTOP.
Очистить регистры АСС и Х. Используя непосредственный способ символьной адресации, заслать число 8A в аккумулятор и переслать его, используяпрямое задание символьного адреса в ячейку памяти 10D. Загрузить в аккумулятор, используянепосредственныйспособcимвольной адресации, числоE4. Из аккумулятора число переслать в ячейку памяти 10D, используяиндексный способ адресации с двухбайтовым смещением. В регистре АСС поменять местами тетрады числа. Завершить программу командойSTOP.
Используя непосредственныйспособ адресации, заслать число 2B в ячейку памяти D2, и в ячейку памяти 70, используяиндексныйспособ адресации. Число из ячейки 70 загрузить в аккумулятор, используяпрямойспособ адресации. Из аккумулятора число переслать в ячейку памяти 207, используяиндексный способ адресации с однобайтовым смещением. Однобайтовое смещение вычисляется с учётом уже имеющегося значения индексного регистра. Переслать содержимое индексного регистра Н:Х, уменьшенное на 1, в регистрSP. Записать в стек содержимое регистра АСС. Завершить программу командойSTOP.
Используя непосредственныйспособ адресации, заслать числоDBв ячейку памяти C4. Переслать содержимое ячейки памяти C4 в регистр АСС. Сформировать в регистреSPзначение 22C. Записать содержимое АСС в стек. Загрузить в регистр Н содержимое вершины стека. Завершить программу командойSTOP.
Пример составления программы:
Используя непосредственный способ символьной адресации, заслать число 05 в аккумулятор и переслать его, используяпрямое задание символьного адреса в ячейку памяти 15A. Загрузить в аккумулятор, используянепосредственныйспособcимвольной адресации, число 0Е. Из аккумулятора число переслать в ячейку памяти 15А, используяиндексный способ адресации с двухбайтовым смещением. Обменять содержимое регистров АСС и Х. Завершить программу командойSTOP.
Текст программы:
RAMStartEQU$0040
RomStart EQU $8000
VectorStart EQU $FFDC
org RamStart
kjh equ $15A
uy db $0E
tr db 8
org RomStart
Main_Init:
rsp
clra
clrx
mov #5,$45
lda tr
sta kjh
lda uy
mov $45,$50
ldhx #50
lda $10A,X
stop
dummy_isr:
rti ; return
org VectorStart
dw dummy_isr ; Time Base Vector
dw dummy_isr ; ADC Conversion Complete
dw dummy_isr ; Keyboard Vector
dw dummy_isr ; SCI Transmit Vector
dw dummy_isr ; SCI Receive Vector
dw dummy_isr ; SCI Error Vector
dw dummy_isr ; SPI Transmit Vector
dw dummy_isr ; SPI Receive Vector
dw dummy_isr ; TIM2 Overflow Vector
dw dummy_isr ; TIM2 Channel 1 Vector
dw dummy_isr ; TIM2 Channel 0 Vector
dw dummy_isr ; TIM1 Overflow Vector
dw dummy_isr ; TIM1 Channel 1 Vector
dw dummy_isr ; TIM1 Channel 0 Vector
dw dummy_isr ; ICG/CGM Vector
dw dummy_isr ; ~IRQ1 Vector
dw dummy_isr ; SWI Vector
dw Main_Init ; Reset Vector
II.Для заданий, указанных преподавателемввести код программы в память микроконтроллера с помощью приложенияProgrammer(программатор). Войти в режим отладки путем нажатия клавишиIn-Circuit Debuger(схемный отладчик), выписать и объяснить машинные коды всех ассемблерных команд одного из заданий вашего варианта, указанного преподавателем.
Пример выполнения задания получения машинных кодов ассемблерных команд: