Всё для Учёбы — студенческий файлообменник
1 монета
docx

Студенческий документ № 058214 из НИУ МЭИ

Филиал федерального государственного бюджетного образовательного учреждения высшего профессионального образования

"Национальный исследовательский университет "МЭИ"

в городе Смоленске

Кафедра ВТ

Отчет

по лабораторной работе №3

Тема: "Арифметические и логические команды микроконтроллера"

Предмет: "Аппаратные и программные средства АСОИУ"

Студент: Василенко П.В.

Группа: АС-14

Преподаватель: Тихонов В. А.

Вариант №2

Смоленск

2017

1. Исследование команд

Информация об исследованных командах сведена в таблицы 1 - 3.

Программа умножения двух однобайтовых чисел, значение которых больше 100.

Таблица 1 -Результаты выполнения команд

№ Команда Код Выполняемая операция Содержимое регистров и ячеек памяти До После 1 MOV А, R0 E8 Запись в аккумулятор из регистра R0 PC/0

R0/5F R1/6F ACC/0

B/0 PC/1 R0/5F R1/6F

ACC/5F

B/0 2 MOV B, R1 89F0 Запись в B из регистра R1 PC/1

R0/5F R1/6F ACC/5F

B/0 PC/2 R0/5F R1/6F

ACC/5F

B/6F 3 MUL AB A4 Умножение PC/2

R0/5F R1/6F ACC/5F

B/6F Флаг OV/0 PC/4

R0/5F

R1/6F ACC/31 B/29

Флаг OV/1

Флаг OVпоказывает переполнение разрядной сетки.

Программа выполнилась за 7 мкс согласно таймеру.

Программа деления произвольно выбранных однобайтовых чисел

Таблица 2 - Результаты выполнения команд

№ Команда Код Выполняемая операция Содержимое регистров и ячеек памяти До После 1 MOV А, R0 E8 Запись в аккумулятор из регистра R0 PC/0

R0/80

R1/04 ACC/0 B/0 PC/1

R0/80 R1/04 ACC/80

B/0 2 MOV B, R1 89F0 Запись в B из регистра R1 PC/1

R0/80

R1/04 ACC/80 B/0 PC/3

R0/80 R1/04 ACC/80

B/04 3 DIVAB 84 Деление PC/3

R0/80

R1/04 ACC/80 B/04

ФлагOV/0 PC/4

R0/5F R1/6F ACC/20

B/0 Флаг OV/0

Программа выполнилась за 7 мкс согласно таймеру.

При делении на ноль появляется флаг переполнения. При делении с остатком остаток записывается в В, целая часть в А

Программа для исследования сдвигов.

Таблица 3 - Результаты выполнения команд

№ Команда Код Выполняемая операция Содержимое регистров и ячеек памяти До После 1 RL A 23 Сдвиг ACC влево циклический ACC/C8

C/0 ACC/91 C/0 2 RLC A 33 Сдвиг ACC влево через перенос ACC/C8

C/0 ACC/90 C/1 3 RR A 03 Сдвиг ACC вправо циклический ACC/C7

C/0 ACC/63

C/1 4 RRC A 13 Сдвиг ACC вправо через перенос ACC/C7

C/0 ACC/63 C/1

2. Подпрограмма "Временная задержка"

Листинг программы, которая обеспечивает временную задержку равную номер компьютера * 103мкс = 4000 мкс

C:0001: 7806 MOV R0, #11H ;счетчики вызовов подпрограммы задержки

C:0003: 1120 ACALL 0020H ;вызов подпрограммы задержки

C:0005: D8FC DJNZ R0, 0003H ;декремент R0 и цикл, пока R0 не равно 0

//------------------

C:0020: D2D4 SETB RS1 ;выбор 2-го банка регистров

C:0022: 78DA MOV R0, #FBH ;счетчик цикла

C:0026: D8FD DJNZ R0, 0025H ;декремент R2 и цикл, если не ноль

C:002A: B2D4 CPL RS1

C:002C: 22 RET ;возврат

Рисунок 1 - Результат выполнения программы

Рассчитаем время выполнения программы, если известно время выполнения команд по отдельности:

t = 1 + 1 + 1 +1 + 6*(1 + 2 + 1 + DA*3 + 1 + 1 + 1 + 1) = 4 + 6*(4 + 218*3 + 4) = 4 + 6*662 = 4 + 3972 = 3976 (мкс)

3. Индивидуальное задание

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

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

0001: E50E MOV A, 0EH ; кладем младший байт уменьшаемого в А

0003: 9511 SUBB A, 11H ; вычитаем младшие байты

0005: F514 MOV 14H, A ; сохраняем результат вычитания в ячейку памяти

0007: E500 MOV A, 00H ; кладем старший байт уменьшаемого в А

0009: 9510 SUBB A, 10H ; вычитаем старшие байты с учетом заема

000B: F513 MOV 13H, A ;сохранияем результат вычитания

000D: 0A DB 0AH ; уменьшаемое, старший байт

000E: 0F DB 0FH ; младший байт

000F: 00 NOP

0010: 08 DB 08H ; вычитаемое, старший байт

0011: 19 DB 19H ;младши байт

Если вычитаемое больше уменьшаемого, то при выполнении вычитания устанавливается флаг займа С.

Команда SUBBучитывает состояние бита С при выполнении:

SUBB A, ad(A) ? (A) - (C) - ((ad))

2

Показать полностью…
66 Кб, 25 апреля 2017 в 11:24 - Россия, Москва, НИУ МЭИ, 2017 г., docx
Рекомендуемые документы в приложении