Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №1 / Laboratornaya_rabota_1B (3).docx
Скачиваний:
6
Добавлен:
21.06.2022
Размер:
48.95 Кб
Скачать

Ход работы

Выполнение общего задания:

org $8000 ; Указываем адрес с которого начнет работу программа

; Стандартно стоит $8000

; можно поменять начальный адрес в ячейках $FFFF-FFFE

Main: ; Главная функция.

mov #$7c,$30 ; Записать по адресу $30 код $7C

mov #$d4,$40 ; Записать по адресу $40 код $D4

mov #$3e,$41 ; Записать по адресу $41 код $3E

lda $30 ; Загрузить в А содержимое ячейки по адресу 0x30

ldhx $40 ; Загрузить в H:X два значения начиная

; с адреса 0x40 (D4->H и 3E->X)

nsa ; Переставляем тетрады в А

; (биты с 7-4) <-> (биты с 3-0) -> (С7)

psha ; Запись А в стек (С7)

pshx ; Запись Х в стек (3E)

pula ; Загрузить А из стека (3E)

pulx ; Загрузить Х из стека (С7)

sta $31 ; Запись содержимое А в память по адресу 0x31 (3E)

mov $31,$40 ; Записать значение из ячейки с адресом 0x31

; в ячейку с адресом 0x40 (3E)

sthx $50 ; Запись двух значений из H:X в ячейки памяти

; начиная с адреса 0x50 (D4->$50 и C7->$51)

; Регистр CCR: (признак знака) N=1, (признак нуля) Z=0

Main_Loop: ; Бесконечный цикл, обязателен в микроконтроллере

nop

bra Main_Loop ; Перейти на метку Main_loop

Вопрос:

Какой код в результате окажется по адресу $51 и что будет во флагах N и Z?

Ответ:

В результате выполнения программы по адресу $51 хранится значение $C7. При этом в регистре CCR значение признака знака установлено в «1», а значение признака нуля – «0». Что можем наблюдать на рис. 2.

Рис. 2 Состояние регистров и памяти в режиме симуляции после выполнения задания

Задание на бригаду:

Написать программу, которая меняет местами байты в двух соседних ячейках стека после их загрузки.

Выполнение задания бригады:

org $8000

ldhx #$d390 ; Загружаем значение в HX (D3->H 90->X)

pshh ; Загружаем в стек значение регистра H

pshx ; Загружаем в стек значение регистра X

ldhx #$0000 ; Обнуляем регистр HX (Не обязательно)

pulh ; Выгружаем из стека в H 1 байт

pulx ; Выгружаем из стека в X 1 байт

pshh ; Загружаем значение из H в стек

pshx ; Загружаем значение из X в стек

Main_Loop: ; Бесконечный цикл, обязателен в микроконтроллере

nop

bra Main_Loop ; Перейти на метку Main_loop

Рис. 3 Состояние регистров и памяти в режиме симуляции после обнуления HX

Рис. 4 Состояние регистров и памяти в режиме симуляции после выполнения задания