Исследование работы команд пересылки и арифметических операций контроллеров среднего семейства серии PIC

  • doc
  • 08.05.2020
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала 10. Исследование работы команд пересылки.doc

ЛАБОРАТОРНАЯ РАБОТА № 1

Тема: Исследование работы команд пересылки и арифметических операций контроллеров среднего семейства серии PIC

 

Цель работы: получение навыков использования команд пересылки и арифметических операций для вычисления простейших арифметических выражений.

 

1 Сведения об исследуемых командах

 

1.1 Команды пересылки:

1 MOVLW K – пересылает константу К в аккумулятор.

Пример:

MOVLW 3 – запись числа 3 в аккумулятор.

2 MOVWF F – пересылает содержимое аккумулятора в регистр ОЗУ с адресом F.

Пример:

MOVWF 0x0c – скопирует значение, находящееся в аккумуляторе в регистр с адресом 0x0c ("0c" – число 12 в шестнадцатеричном формате, "0x" перед ним показывает, что число шестнадцатеричное)

3 MOVF F, 0 – пересылает содержимое регистра ОЗУ с адресом F в аккумулятор.

Пример:

MOVF 0x0c , 0 – скопирует значение, находящееся в регистре с адресом 0x0c, в аккумулятор.

 

1.2 Примеры использования команд пересылки:

а) пусть требуется записать число 5 в регистр с адресом 0x0c. Для этого число сначала нужно записать в аккумулятор, затем из аккумулятора – в регистр:

MOVLW 5

MOVWF 0x0c

б) пусть требуется скопировать содержимое регистра 0x0c в регистр 0x0d. Для этого содержимое регистра 0x0c нужно скопировать в аккумулятор, затем содержимое аккумулятора переместить в регистр 0x0d:

MOVF 0x0c ,0

MOVWF 0x0d

 

1.3 Команды арифметических операций

1 ADDLW K – складывает константу К с содержимым аккумулятора и оставляет в нем результат.

Пример:

ADDLW 5 – добавит к значению, содержащемуся в аккумуляторе,

число 5

2 ADDWF F, D – складывает содержимое регистра ОЗУ с адресом F с содержимым аккумулятора, результат остается:

а) в аккумуляторе, если D = 0;

б) в регистре F, если D = 1.

Пример:

ADDWF 0x0c,0 – сложит значения аккумулятора и регистра с адресом 0x0c, результат сложения остается в аккумуляторе, значение в регистре не изменяется.

ADDWF 0x0c,1 – сложит значения аккумулятора и регистра с адресом 0x0c, результат сложения остается в регистре, значение в аккумуляторе не изменяется.

3 SUBLW K – вычитает из константы К  содержимое аккумулятора и оставляет в нем результат.

Пример:

SUBLW 7 – вычтет из числа 7 значение аккумулятора, результат остается в аккумуляторе.

4 SUBWF F, D – вычитает из содержимого регистра ОЗУ с адресом F содержимое аккумулятора, результат остается:

а) в аккумуляторе, если D = 0;

б) в регистре F, если D = 1.

Пример:

SUBWF 0x0c,0 – вычтет из регистра с адресом 0x0c значение аккумулятора, результат вычитания остается в аккумуляторе.

SUBWF 0x0c,1 – вычтет  из регистра с адресом 0x0c значение аккумулятора, результат вычитания остается в регистре, значение в аккумуляторе не изменяется.

 

1.4 Пример использования команд арифметических операций

Вычислить 3–(0x0c)+(0x0d)–(0x0f), результат оставить в регистре 0x0d

MOVF 0X0C,0  ;  W=0X0C

ADDWF 0X0F,0  ;  W=0X0C+0X0F

SUBLW 3  ;  W=3 – (0X0C+0X0F)

ADDWF 0X0D,1 ;  0X0D= 0X0D+3–(0X0C+0X0F)

 

2 Порядок выполнения

 

1 Запустите среду MPLAB 5.01.

2 Создайте новый проект: Project/New. Дайте имя проекту и расширение .pjt. Нажмите ОК. Вы попадете в следующее диалоговое окно редактирования проекта.

3 Подсоедините к проекту файл исходного модуля с тем же именем, что и проект. Для этого нажмите кнопку Add Node, задайте имя файла исходного модуля с расширением .asm. Нажмите ОК.

4 Создайте файл исходного модуля: File/New. Сохраните его с именем, которое дали в предыдущем пункте: File/Save As.

5 В созданном файле наберите программу (варианты заданий находятся в табл. 1 приложения). Команды набираются не ранее, чем со второй позиции в строке, метки – с первой позиции. Комментарии к командам можно писать после точки с запятой – этот текст не воспринимается компилятором.

Программа должна заканчиваться командами:

NOP

END

6 Откомпилируйте набранную программу: Project/Build All. При наличии ошибок (error) исправьте их и откомпилируйте проект заново. Если не можете найти ошибку, откройте файл листинга: File/Open, выберите тип файлов с расширением .lst, найдите имя своего файла с этим расширением, откройте его. Ошибки указаны перед командами, в которых они встретились.

7 Если проект успешно откомпилировался, запустите его в пошаговом исполнении: нажмите F6 для запуска сначала, F7 – переход к следующей команде. Для просмотра результатов выполнения команд откройте окна RAM и SFR. RAM – это окно состояния оперативной памяти, в нем вы видите содержимое ее регистров в шестнадцатеричном формате, и SFR – окно регистров специального назначения, где можно проследить за состоянием аккумулятора. Оба окна открываются щелчком по соответствующим пиктограммам на панели инструментов.

8 Выполните программу. Убедитесь, что результат выполнения совпадает с ожидаемым. Оформите программу в отчете.

 

3 Содержание отчета

 

Отчет должен содержать:

- описание команд пересылки и арифметических операций;

- программы для каждой задачи с трассировочными таблицами.

Трассировочная таблица содержит напротив каждой команды результат ее выполнения – содержимое ячеек, которые используются в программе.

Пример оформления задания:

Задание 1.

Вычислить значение выражения (после стрелки указано, где нужно получить результат).

3–(0x0c)+(0x0d)–(0x0f) →(0x0d)

Примечание: символом «х» в трассировочной таблице обозначается неизвестное значение, последняя строка таблицы должна показать, что в заданной ячейке получилось правильное выражение.

Далее показано оформление решения в виде трассировочной таблицы.

Решение.

 

Команда

W

0x0c

0x0f

0x0d

MOVF 0X0C,0      

(0x0c)

x

x

x

ADDWF 0X0F,0   

(0x0c)+(0x0f)

x

x

x

SUBLW 3

3–((0x0c)+(0x0f))

x

x

x

ADDWF 0X0D, 1   

3–((0x0c)+(0x0f))

x

x

(0x0d)+(3–((0x0c)+(0x0f)))

 

 

Варианты заданий на лабораторную работу № 1

 

Вариант 1

(0x0c)=2, (0x0f)=7, (0x1d)=35

(0x0c)+(0x0f)→(w)

(0x0c)+7+(0x1d)–5→ (0x0c)

15–20+45–(0x0c→ (w)

(w)=15, 22–(w)+(0x1d)–3→ (0x1d)

11–5+44–12+(0x0f)–(0x0c) → (w)

(w)=33, (w)–12+(0x0f) → (w)

Вариант 2

0x1c=20, 0x1a=17, 0x0d=25

(0x1c)+(0x0d) → (w)

(0x1c)+27+(0x0d)–15→ (0x1c)

12–22+35–(0x1c) → (w)

(w)=35, 12–(w)+(0x0d)–3→0x0d)

21–15+24–2+(0x1a)–(0x1c) → (w)

(w)=30, (w)–22+(0x1a) → (w)

Вариант 3

(0x0e)=12, (0x0f)=10, (0x1d)=25

(0x0e)+(0x0f)→(w)

(0x0e)+7+(0x1d)–5→ (0x0e)

15–20+45–(0x0e→ (w)

(w)=15, 22–(w)+(0x1d)–3→ (0x1d)

11–5+44–12+(0x0f)–(0x0e) → (w)

(w)=33, (w)–12+(0x0f) → (w)

Вариант 4

(0x0f)=22, (0x0d)=7, (0x1c)=5

(0x0c)+(0x0f)→(w)

(0x0c)+7+(0x1d)–5→ (0x0c)

15–20+45–(0x0c→ (w)

(w)=15, 22–(w)+(0x1d)–3→ (0x1d)

11–5+44–12+(0x0f)–(0x0c) → (w)

(w)=33, (w)–12+(0x0f) → (w)

Вариант 5

(0x0c)=32, (0x0e)=17, (0x1d)=3

(0x0c)+(0x0e)→(w)

(0x0c)+7+(0x1d)–5→ (0x0c)

15–20+45–(0x0c→ (w)

(w)=15, 22–(w)+(0x1d)–3→ (0x1d)

11–5+44–12+(0x0e)–(0x0c) → (w)

(w)=33, (w)–12+(0x0e) → (w)

Вариант 6

(0x0c)=4, (0x1f)=4, (0x1d)= 5

(0x0c)+(0x1f)→(w)

(0x0c)+7+(0x1d)–5→ (0x0c)

15–20+45–(0x0c→ (w)

(w)=15, 22–(w)+(0x1d)–3→ (0x1d)

11–5+44–12+(0x1f)–(0x0c) → (w)

(w)=33, (w)–12+(0x1f) → (w)

Вариант 7

(0x1c)=6, (0x0f)=4, (0x1d)=15

(0x1c)+(0x0f)→(w)

(0x1c)+7+(0x1d)–5→ (0x1c)

15–20+45–(0x1c→ (w)

(w)=15, 22–(w)+(0x1d)–3→ (0x1d)

11–5+44–12+(0x0f)–(0x1c) → (w)

(w)=33, (w)–12+(0x0f) → (w)

Вариант 8

(0x0c)=5, (0x2f)=1, (0x1d)=12

(0x0c)+(0x2f)→(w)

(0x0c)+7+(0x1d)–5→ (0x0c)

15–20+45–(0x0c→ (w)

(w)=15, 22–(w)+(0x1d)–3→ (0x1d)

11–5+44–12+(0x2f)–(0x0c) → (w)

(w)=33, (w)–12+(0x2f) → (w)

Вариант 9

0x1d=27, 0x11=9, 0x10=5

(0x1d)+(0x11)–>(w)

(0x1d)+17+(0x10)–25–>(0x1d)

21–20+15–(0x1d)–>(w)

(w)=11, 20–(w)+(0x1d)–3–>(0x1d)

31–24+14–22+(0x11)–(0x10)–>(w)

(w)=30, (w)–8+(0x11)–>(w)

Вариант 10

0x0c=6, 0x0d=17, 0x12=23

(0x0c)+(0x0d)–>(w)

(0x12)+9+(0x0d)–11–>(0x0d)

17–7+15–(0x12)–>(w)

(w)=40, 52–(w)+(0x0d)–3–>(0x0d)

21–25+14–4+(0x0d)–(0x0c)–>(w)

(w)=20, (w)–8+(0x0c)–>(w)

Вариант 11

0x13=4, 0x14=10, 0x15=5

(0x13)+(0x14)–>(w)

(0x13)+7+(0x15)–5–>(0x15)

11–21+25–(0x15)–>(w)

(w)=14, 12–(w)+(0x14)–3–>(0x14)

16–15+14–11+(0x14)–(0x15)–>(w)

(w)=40, (w)–22+(0x13)–>(w)

Вариант 12

0x16=32, 0x17=27, 0x18=14

(0x16)+(0x17)–>(w)

(0x16)+17+(0x18)–15–>(0x18)

5–2+15–(0x17)–>(w)

(w)=23, 32–(w)+(0x18)–30–>(0x18)

10–7+14–11+(0x16)–(0x18)–>(w)

(w)=14, (w)–11+(0x17)–>(w)

Вариант 13

0x19=32, 0x1a=17, 0x1b=16

(0x19)+(0x1a)–>(w)

(0x19)+27+(0x1b)–11–>(0x19)

10–12+15–(0x1a)–>(w)

(w)=6, 20–(w)+(0x1b)–3–>(0x1b)

21–14+4–2+(0x1a)–(0x19)–>(w)

(w)=10, (w)–2+(0x1b)–>(w)

Вариант 14

0x2a=12, 0x20=17, 0x21=15

(0x2a)+(0x20)–>(w)

(0x2a)+17+(0x21)–15–>(0x2a)

35–27+41–(0x20)–>(w)

(w)=21, 26–(w)+(0x21)–3–>(0x21)

31–15+24–22+(0x2a)–(0x20)–>(w)

(w)=31, (w)–12+(0x20)–>(w)

Вариант 15

0x12=12, 0x1a=27, 0x1b=26

(0x12)+(0x1a)–>(w)

(0x12)+27+(0x1b)–11–>(0x19)

10–12+15–(0x1a)–>(w)

(w)=6, 20–(w)+(0x1b)–3–>(0x1b)

21–14+4–2+(0x1a)–(0x12)–>(w)

(w)=10, (w)–2+(0x1b)–>(w)

Вариант 16

0x18=3, 0x1a=7, 0x1b=6

(0x18)+(0x1a)–>(w)

(0x18)+27+(0x1b)–11–>(0x19)

10–12+15–(0x1a)–>(w)

(w)=6, 20–(w)+(0x1b)–3–>(0x1b)

21–14+4–2+(0x1a)–(0x18)–>(w)

(w)=10, (w)–2+(0x1b)–>(w)

Вариант 17

0x11=21, 0x1a=12, 0x1c=23

(0x11)+(0x1a)–>(w)

(0x11)+27+(0x1c)–11–>(0x11)

10–12+15–(0x1a)–>(w)

(w)=6, 20–(w)+(0x1c)–3–>(0x1c)

21–14+4–2+(0x1a)–(0x11)–>(w)

(w)=10, (w)–2+(0x1c)–>(w)

Вариант 18

0x10=34, 0x2b=12, 0x1b=4

(0x10)+(0x2b)–>(w)

(0x10)+27+(0x1b)–11–>(0x10)

10–12+15–(0x2b)–>(w)

(w)=6, 20–(w)+(0x1b)–3–>(0x1b)

21–14+4–2+(0x2b)–(0x10)–>(w)

(w)=10, (w)–2+(0x1b)–>(w)

Вариант 19

0x19=23, 0x1c=17, 0x0b=15

(0x19)+(0x1c)–>(w)

(0x19)+27+(0x0b)–11–>(0x19)

10–12+15–(0x1c)–>(w)

(w)=6, 20–(w)+(0x0b)–3–>(0x0b)

21–14+4–2+(0x1c)–(0x19)–>(w)

(w)=10, (w)–2+(0x0b)–>(w)

Вариант 20

0x19=12, 0x2a=2, 0x2b=15

(0x19)+(0x2a)–>(w)

(0x19)+27+(0x2b)–11–>(0x19)

10–12+15–(0x2a)–>(w)

(w)=6, 20–(w)+(0x2b)–3–>(0x2b)

21–14+4–2+(0x2a)–(0x19)–>(w)

(w)=10, (w)–2+(0x2b)–>(w)

Вариант 21

0x2b=11, 0x22=12, 0x21=13

(0x2b)+(0x22)–>(w)

(0x2b)+17+(0x21)–15–>(0x2b)

35–27+41–(0x22)–>(w)

(w)=21, 26–(w)+(0x21)–3–>(0x21)

31–15+24–22+(0x2b)–(0x22)–>(w)

(w)=31, (w)–12+(0x22)–>(w)

Вариант 22

0x2c=21, 0x20=22, 0x24=23

(0x2c)+(0x20)–>(w)

(0x2c)+17+(0x24)–15–>(0x2c)

35–27+41–(0x20)–>(w)

(w)=21, 26–(w)+(0x24)–3–>(0x24)

31–15+24–22+(0x2c)–(0x20)–>(w)

(w)=31, (w)–12+(0x20)–>(w)

Вариант 23

0x2f=10, 0x20=27, 0x11=25

(0x2f)+(0x20)–>(w)

(0x2f)+17+(0x11)–15–>(0x2f)

35–27+41–(0x20)–>(w)

(w)=21, 26–(w)+(0x11)–3–>(0x11)

31–15+24–22+(0x2f)–(0x20)–>(w)

(w)=31, (w)–12+(0x20)–>(w)

Вариант 24

0x2d=22, 0x10=11, 0x21=12

(0x2d)+(0x10)–>(w)

(0x2d)+17+(0x21)–15–>(0x2d)

35–27+41–(0x10)–>(w)

(w)=21, 26–(w)+(0x21)–3–>(0x21)

31–15+24–22+(0x2d)–(0x10)–>(w)

(w)=31, (w)–12+(0x10)–>(w)

Вариант 25

0x2b=12, 0x20=13, 0x29=12

(0x2b)+(0x20)–>(w)

(0x2b)+17+(0x29)–15–>(0x2b)

35–27+41–(0x20)–>(w)

(w)=21, 26–(w)+(0x29)–3–>(0x29)

31–15+24–22+(0x2b)–(0x20)–>(w)

(w)=31, (w)–12+(0x20)–>(w)

Вариант 26

0x2a=12, 0x10=11, 0x11=13

(0x2a)+(0x10)–>(w)

(0x2a)+17+(0x11)–15–>(0x2a)

35–27+41–(0x10)–>(w)

(w)=21, 26–(w)+(0x11)–3–>(0x11)

31–15+24–22+(0x2a)–(0x10)–>(w)

(w)=31, (w)–12+(0x10)–>(w)

Вариант 27

0x22=13, 0x23=12, 0x20=15

(0x22)+(0x20)–>(w)

(0x22)+17+(0x23)–15–>(0x22)

35–27+41–(0x20)–>(w)

(w)=21, 26–(w)+(0x21)–3–>(0x23)

31–15+24–22+(0x22)–(0x20)–>(w)

(w)=31, (w)–12+(0x20)–>(w)

Вариант 28

0x1a=19, 0x20=12, 0x21=14

(0x1a)+(0x20)–>(w)

(0x1a)+17+(0x21)–15–>(0x1a)

35–27+41–(0x20)–>(w)

(w)=21, 26–(w)+(0x21)–3–>(0x21)

31–15+24–22+(0x1a)–(0x20)–>(w)

(w)=31, (w)–12+(0x20)–>(w)

 


Скачано с www.znanio.ru