logo
МУ ЦТ и МК для стенда 2013

3.2 Исходные данные и выполнение программы

Изучите формат инструкций ADDWF, SUBWF, ANDWF, IORWF, XORWFпо приложению Д.

Изучите программу 3.1, которая выполняет различные действия с двумя константами и выводит результаты работы в регистр REZ. Программа легче читается, если в инструкциях вместо адреса регистра писать его символьное имя. В лабораторной работе №2 мы уже писали в инструкциях вместо адресов РСН их имена:Portc,Trisc,Status,W. Пользователь также может присваивать символьные имена РОН, напримерR1EQUh’21’. УказательEQUотequal(англ.) – одинаковый, равносильный.

ORG h’хх’ – это указатель для ассемблера, что код следующий за этим выражением, будет записан начиная с адреса h’хх’ электрически программируемого постоянного запоминающего устройства (ЭППЗУ).

Программа 3.1.

Include <p16F877.inc>; в этом файле описаны символьные имена РСН.

R1 EQU h'21'; R1 - символьное имя регистра по адресу h’21’.

R2 EQU h'22'; R2 - символьное имя регистра по адресу h’22’.

R3 EQU h'23'; R3 - имя регистра по адресу h’23’.

REZ EQU h'24'; REZ - имя регистра для записи результатов.

; Инструкции для настройки МК

ORG h'00'; следующая инструкция NOP будет записана по адресу h’00’.

NOP; пишется для настройки отладчика.

NOP

NOP

ORG h'05'; следующая инструкция CLRF запишется по адресу h’05’.

CLRF STATUS; очищаем регистр от мусора, выбираем нулевой банк.

BSF STATUS, 5; переходим в первый банк в нём регистр TRISC.

CLRF TRISC; настраиваем все биты PORTC на вывод данных.

BCF STATUS, 5; возвращаемся в нулевой банк.

;Рабочая часть программы. Ввод данных

MOVLW D'240'; запись константы в аккумулятор W.

MOVWF R1; запись содержимого W в регистр R1.

MOVLW D'130'; запись константы в аккумулятор W.

MOVWF R2; запись содержимого W в регистр R2.

MOVLW D'5'; запись константы в W.

MOVWF R3; запись содержимого W в регистр R3.

; Выполнение вычислений

MOVF R1, W; запись константы из R1 в регистр W.

SUBWF R2, W; вычитание W=R2-W=R2- R1.

MOVWF REZ; переслать содержимое W в регистр REZ.

MOVF R2, W; запись константы из R2 в регистр W.

ADDWF R1, W; W=R2+W=R1+R2.

MOVWF REZ

MOVF R2, W; копируем содержимое R2 в W.

SUBWF R1, W; вычитание W=R1-W=R1-R2. Результат оставляем в W.

MOVWF REZ; переслать содержимое W в регистр REZ

MOVF R2, W; запись константы в регистр W из R2.

ADDWF R3, W; W=R3+W=R2+R3.

MOVWF REZ

MOVF R2, W; запись константы в регистр W из R2.

SUBWF R2, W

MOVWF REZ

MOVF R2, W; запись константы в регистр W из R2.

ANDWF R1, W; операция W=R1 AND W(R2), результат в W.

MOVWF REZ

END; конец программы.

Самостоятельно продолжите программу командами для выполнения операций R2+R3,R1ORR2,R1XORR2.

Данные для варианта возьмите из таблицы 3.1.

Т а б л и ц а 3.1 – Варианты задания

Вариант

Числа R1, R2, R3

Вариант

Числа R1, R2, R3

1

81h, 12h, 1h

6

86h, 67h, 6h

2

82h, 23h, 2h

7

87h, 68h, 7h

3

83h, 34h, 3h

8

88h, 69h, 8h

4

84h, 45h, 4h

9

89h, 6Ah, 9h

5

85h, 56h, 5h

10

8Ah, 6Bh, Ah

Т а б л и ц а 3.2 - Пример записи результатов работы команд

Числа на входе

Действие

Результат в REZ

Значение в Status

Форма B

Форма B или D

Форма B или D

Форма D

Форма B

R1=D’240’

R2=D’130’

R1-R2=240-130

D’110’

-

00011001

R1=D’240’

R2=D’130’

R1+R2=240+130

D’114’

-

00011001

R1=D’240’

R2=D’130’

R2-R1=130-240

D’146’

-

00011010

R2=D’130’

R3=D’5’

R2+R3=130+5

D’135’

-

00011000

R2=D’130’

R2=D’130’

R2-R2130-130

D’0’

-

00011111

R1=D’240’

R2=D’0’

R2-R1=0-240

D’16’

-

00011010

R1=b’11110000’

R2=b’10000010’

R1 AND R2

-

10000000

00011011

R1=b’11110000’

R2=b’10000010’

R1 OR R2

-

11110010

00011011

R1=b’11110000’

R2=b’10000010’

R1 XOR R2

-

01110010

00011011

Создайте окно наблюдения для всех применяемых в программе регистров в необходимом формате чисел. Результаты работы всех операций с числами запишите в таблицу 3.2.