Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы / Lab_moto / 3.doc
Скачиваний:
16
Добавлен:
16.04.2013
Размер:
196.1 Кб
Скачать

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

В данной лабораторной работе изучаются следующие группы команд:

1. Арифметические команды:

ADC, ADD, SBC, SUB, MUL, NEG, INC, DEC.

2. Команды байтовой логики:

AND, ORA, EOR, COM.

3. Команды сдвига :

ASL, ASR, LSL, LSR, ROL, ROR.

4. Команды для работы с битами:

BCLR, BSET.

5. Команды сравнения и тестирования:

CMP, CPX, TST, BIT.

1. Арифметические команды. Команды сложения.

Команда ADD (ADDition) складывает содержимое аккумулятора и значение из памяти, либо непосредственно заданный операнд. Результат помещается в аккумулятор. При выполнении командыADC (ADdition with Carry) в сложении также принимает участие флагC регистраCC.

Пример использования команды ADD. В примере складываются два числа, расположенные в ячейках памяти с адресами $50 и $51. Результат помещается в ячейку с адресом $52.

0100 B6 50 LDA $50 Загрузить в аккумулятор первое слагаемое из ячейки с адресом $50.

0102 BB 51 ADD $51 Прибавить второе слагаемое, находящееся в ячейке с адресом $51.

0104 B7 52 STA $52 Поместить результат в ячейку с адресом $52.

Перед выполнением программы нужно занести слагаемые в ячейки памяти и установить точку установа по адресу $0106. Рекомендуется выполнить пример с разными значениями в ячейках $50 и $51, обращая внимание на получившийся в ячейке $52 результат и устанавливаемые в регистре CCфлаги. Ниже приведен список тестов для этого примера:

Значение в ячейке $50

Значение в ячейке $51

Результат в ячейке $52

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

$12

$7A

$8C

111.xN..*

$3E

$D7

$15

111Hx..C

$A1

$19

$BA

111.xN..

$2F

$D1

$00

111Hx.ZC

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

Пример использования команды ADC.Основное назначение этой команды-корректно обрабатывать перенос бита переполнения из младшего байта в более старший при сложении чисел, занимающих несколько байт. Рассмотрим пример сложения двухбайтовых чисел, в котором первое число располагается в ячейках $50 и $51, второе-в ячейках $52 и $53. Результат помещается в ячейки $54 и $55. В соответствии с принятым фирмой Motorola способом хранения чисел, старший байт в слове находится по младшему адресу. Программу рекомендуется выполнить в пошаговом режиме, обращая внимание на флагCв регистреCC.

0100 B6 51 LDA $51 Загрузить в аккумулятор младший байт первого слагаемого из ячейки $51.

0102 BB 53 ADD $53 Прибавить младший байт второго слагаемого, находящийся в ячейке $53. Возможное переполнение будет зафиксировано флагомC.

0104 B7 55 STA $55 Сохранить младший байт результата в ячейке $55.

0106 B6 50 LDA $50 Загрузить в аккумулятор старший байт первого слагаемого из ячейки с адресом $50.

0108 B9 52 ADC $52 Прибавить старший байт второго слагаемого, находящийся в ячейке $52, учитывая возможное переполнение от предыдущего сложения.

010A B7 54 STA $54 Сохранить старший байт результата в ячейке $54.

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

Значение в ячейках $50 и $51

Значение в ячейках $52 и $53

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

Результат в ячейках $54 и $55

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

$1234

$5FED

111Hx..C

$7221

111Hx...

$32BE

$ABCD

111HxN.C

$DE8B

111.xN..

$FE01

$1009

111.x...

$0E0A

111.x..C

$BBBB

$4445

111Hx.ZC

$0000

111Hx.CZ

$10AA

$2058

111Hx..C

$3102

111.x...*

*Если бы в программе по адресу $0108 стояла бы команда ADD, то получился бы неверный результат $3002.

Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.

Оставленные комментарии видны всем.

Соседние файлы в папке Lab_moto