Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LH05-2N.DOC
Скачиваний:
21
Добавлен:
11.03.2015
Размер:
100.35 Кб
Скачать

2.2. Примеры использования команд передачи данных.

Ниже Вам предложены типовые фрагменты программ на языке ассемблера микроконтроллера MC68HC705K1. Они позволят Вам приобрести начальные навыки по использованию команд передачи данных. Исследуйте выполнение этих фрагментов, используя программу полноэкранного симулятора ICS05K. Для этого установите значение PC=200h и в режиме ASM введите последовательность команд фрагмента. Затем, если это необходимо, запишите данные в ячейки памяти (команда MM симулятора). Далее выполните программу в пошаговом режиме (команда STEP симулятора).

Пример 6.

;Программа производит запись двух констант 44h и 31h в ячейки ОЗУ с адресами 0F0h и 0E0h ;соответственно

LDA #44h ;Занести в А 44h

STA 0F0h ;Переслать содержимое А в ОЗУ по адресу 0F0h

LDA #31h ;Занести в А 31h

STA 0E0h ;Переслать содержимое А в ОЗУ по адресу 0Е0h

Пример 7.

;Программа производит действия, аналогичные примеру 6 , демонстрирует использование

;косвенной адресации.

LDX #0F0h ;Занести в X 0F0h

LDA #44h ; Занести в А 44h

STA ,X ;Переслать содержимое А в ОЗУ по адресу, хранящемуся в X

Incx ;Увеличить на 1 содержимое X

LDA #31h ; Занести в А 44h

STA ,X ; Переслать содержимое А в ОЗУ по адресу, хранящемуся в X

Пример 8.

;Программа производит выбор из таблицы констант в ПЗУ (начальный адрес таблицы 300)

;элемента с порядковым номером k (k содержится в ячейке ОЗУ с адресом 0E0h).

LDX 0E1h

LDA 300h,X

Заполните область ПЗУ, начиная с адреса 300h, произвольными числами. Запишите в ячейку ОЗУ с адресом 0E1h произвольный порядковый номер в пределах числа элементов введенной таблицы. Выполните программу и убедитесь, что происходит считывание указанного элемента.

Пример 9.

;Программа пересылает данные из трех ячеек памяти с адресами 305h,306h,307h в ОЗУ по

; адресам 0E0h, 0E1h, 0E2h

LDX #0E0h ;Загрузить в X число 0E0h

LDA 225h,X ;Загрузить в А данные из ячейки памяти с адресом

; 225h+0E0h=305h

STA ,X ;Записать данные по адресу 0E0h

LDX #0E1h ;

LDA 225h,X ;

STA ,X ;

LDX #0E2h ;

LDA 225h,X ;

STA ,X ;

Пример 10.

;Программа производит те же действия, что и в примере 9, но с использованием косвенной ;адресации.

LDX #0E0h ; Загрузить в X число 0E0h

LDA 225h,X ; Загрузить в А данные из ячейки памяти с адресом

; 225h+0E0h=305h

STA ,X ;

Incx ; Увеличить содержимое X на 1

LDA 225h,X ;

STA ,X ;

INCX ;

LDA 225h,X ;

STA ,X ;

В примере 11 впервые использована команда условного перехода и впервые организована конструкция цикла. Индексный регистр Xв каждом цикле уменьшается на 1 и формирует признак отрицательного результатаN. КомандаBPL (перейти, если число положительное или равно 0) анализирует признакN и производит переход по меткеLOOP, если признак равен 0.

При вводе текста программы в режиме ASMне вводите метку (LOOP:), а в командеBPLвместо символьного обозначения метки вычислите численное значение смещения.

Пример 11.

;Программа производит те же действия, что и в примере 9 и 10, но с использованием

;конструкции цикла.

LDX #02h ; Загрузить в X число 02h

LOOP: LDA 305h,X ; Загрузить в А данные из ячейки памяти с адресом

; 305h+02h=307h

STA 0E0h,X ;Записать в ОЗУ по адресу 0E0h+2=0E2h

DECX ;Уменьшить X на 1

BPL LOOP ;Перейти по метке, если X не отрицательный.

Ниже в примере 12 приведена программа, которая должна выполнять те же действия, что и в примере 11. Эта программа использует другую команду условного перехода. Объясните сразу или исследуйте, в чем допущена ошибка.

Пример 12.

;Программа производит те же действия, что и в примере 11, но в тексте

;допущена ошибка.

LDX #02h ; Загрузить в X число 02h

LOOP: LDA 305h,X ; Загрузить в А данные из ячейки памяти с адресом

; 305h+02h=307h

STA 0E0h,X ;Записать в ОЗУ по адресу 0E0h+2=0E2h

DECX ;Уменьшить X на 1

BNE LOOP ;Перейти по метке, если X не отрицательный.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]