
- •1. Теоретическая часть.
- •1.1.Группа команд арифметических операций
- •Группа команд логических операций.
- •2. Практическая часть.
- •2.1. Примеры использования арифметических команд.
- •Команды загрузки регистров а и х данными из памяти.
- •Команды вычитания.
- •Команды инкремента и декремента.
- •0050 80 7E 7c 7a 78 76 74 72 70 6e 6c 6a 68 66 64 62
- •0060 60 5E 5c 5a 58 56 54 52 50 4e 4c 4a 48 46 44 42 ' Команды умножения и арифметического дополнения.
- •2.2.Примеры использования команд байтовой логики.
- •2.3.Примеры использования команд сдвига.
- •Команды логического (или последовательного) сдвига.
- •Команды арифметического сдвига.
- •Команды циклического сдвига.
- •2.4. Примеры использования команд сравнения и тестирования. Команды сравнения.
- •0050 00 01 02 03 04 05 06 07 08 09 0A 0b 0c 0d 0e 0f ................
- •0060 00 01 02 03 04 05 06 07 08 09 0A 0b 0c 0d 0e 0f ................
- •0050 00 Ff fe fd fc fb fa f9 f8 f7 f6 f5 f4 f3 f2 f1 ................
- •0060 Ff fe fd fc fb fa f9 f8 f7 f6 f5 f4 f3 f2 f1 f0 ................
- •Команды тестирования.
- •0050 00 01 02 03 04 05 06 00 00 00 00 00 00 00 00 00 ................
- •0050 06 01 02 03 04 05 06 00 00 00 00 00 00 00 00 00 ................
- •Контрольные вопросы.
- •Задания.
2. Практическая часть.
2.1. Примеры использования арифметических команд.
Ниже Вам предложены типовые фрагменты программ на языке ассемблера микроконтроллера MC68HC705K1. Они позволят Вам приобрести начальные навыки использованию арифметических и логических команд. Исследуйте выполнение этих фрагментов, используя программу полноэкранного симулятора ICS05K. Для этого установите значение PC=200h и в режиме ASM введите последовательность команд фрагмента. Затем, если это необходимо, запишите данные в ячейки памяти (команда MM симулятора). Далее выполните программу в пошаговом режиме (команда STEP симулятора).
Команды загрузки регистров а и х данными из памяти.
Пример использования команды 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