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

2. Практическая часть.

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

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

Команды загрузки регистров а и х данными из памяти.

  1. Пример использования команды ADD .

Программа примера производит сложение двух чисел, расположенные в ячейках памяти с адресами 0E0h и 0E1h. Результат помещается в ячейку с адресом 0E2h.

LDA 0E0h ;Загрузить в аккумулятор первое слагаемое из ячейки с адресом 0E0h.

ADD 0E1h ;Прибавить второе слагаемое, находящееся в ячейке с адресом 0E1h.

STA 0E2h ;Поместить результат в ячейку с адресом 0E2h.

Перед выполнением программы занесите слагаемые в ячейки памяти 0E0h и 0E1h. Выполните пример с разными значениями слагаемых, обращая внимание на получившийся в ячейке 0E2h результат и устанавливаемые флаги. Ниже приведен список тестов для этого примера:

Значение в ячейке 0E0h

Значение в ячейке 0E1h

Результат в ячейке 0E2h

Содержимое регистра

признаков

12h

7Ah

8Ch

111.xNxxx.*

3Eh

0Dh7

15h

111HxxxC

0A1h

19h

0BAh

111.xNxxx.

2Fh

0D1h

00h

111Hxx.ZC

*x-значение флага никогда не меняется после выполнения команды.

2. Пример использования команды ADC.

Основное назначение этой команды - корректно обрабатывать перенос бита переполнения из младшего байта в более старший при сложении чисел, занимающих несколько байт. Рассмотрим пример сложения двухбайтовых чисел, в котором первое число располагается в ячейках 0E0h и 0E1h, второе - в ячейках 0E2h и 0E3h. Результат помещается в ячейки 0E4h и 0E5h. Старший байт числа находится по младшему адресу. Программу рекомендуется выполнить в пошаговом режиме, обращая внимание на флаг переноса C

Перед выполнением программы занесите слагаемые в ячейки памяти. Выполните пример с разными значениями слагаемых, обращая внимание на получившийся в ячейках 0E4h и 0E5h результат и устанавливаемые флаги. Вслед программы приведен список тестов для этого примера:

LDA 0E1h ;Загрузить в аккумулятор младший байт первого слагаемого из ячейки 0E1h.

ADD 0E3h ;Прибавить младший байт второго слагаемого, находящийся в ячейке 0E3h.

; Возможное переполнение будет зафиксировано флагом C.

STA 0E5h ;Сохранить младший байт результата в ячейке 0E5h.

LDA 0E0h ;Загрузить в аккумулятор старший байт первого слагаемого из ячейки с

;адресом 0E0h.

ADC 0E2h ;Прибавить старший байт второго слагаемого, находящийся в ячейке 0E2h,

;учитывая возможное переполнение от предыдущего сложения.

STA 0E4h ;Сохранить старший байт результата в ячейке 0E4h.

Список тестов:

Значение в ячейках 0E0hи 0E1h

Значение в ячейках 0E2hи 0E3h

Содержимое регистра признаков после командыADD.

Результат в ячейках 0E4hи 0E5h

Содержимое регистра признаков после команды ADC.

1234h

5FEDh

111HxxxC

7221h

111Hxxxx

32Beh

0ABCDh

111HxNxC

0DE8Bh

111xxNxx

0FE01h

1009h

111xxxxx

0E0Ah

111xxxxC

0BBBBh

4445h

111HxxZC

0000h

111HxxCZ

10Aah

2058h

111HxxxC

3102h

111xxxxx

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