У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа 2 Арифметическая обработка данных Отчет Студенты- Г

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 28.12.2024

Московский государственный технический университет им. Н.Э. Баумана

Факультет «Информатика и системы управления»

Кафедра «Компьютерные системы и сети»

Группа ИУ6-72

Микропроцессорные системы

Лабораторная работа №2

Арифметическая обработка данных

Отчет

Студенты: Гречищев К.М.

       Порядин И.А.

Преподаватель: Хартов В.Я.

Москва 2011

Цель работы:

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

Исходный код программы:

;************************************************************************

;Программа тестирования в STK500 двоичных арифметических операций

; сложения, вычитания, умножения, деления

;Порт PD - порт управления для выбора операндов и операций

;Порт PB - порт индикации исходных операндов и результатов операции

;Соединения шлейфами: порт PB-LED, порт PD-SW

;************************************************************************

.include "m8515def.inc" ;файл определений для ATmega8515

;Выводы порта PD

.equ SW_op_AL = 0 ;кнопка выбора операнда op_AL

.equ SW_op_AH = 1 ;кнопка выбора операнда op_AH

.equ SW_op_BL = 2 ;кнопка выбора операнда op_ВL

.equ SW_ADD = 3  ;кнопка операции сложения res=op_AL+op_ВL

.equ SW_SUB = 4  ;кнопка операции вычитания res=op_AL-op_ВL

.equ SW_MUL = 5  ;кнопка операции умножения shov.res=op_AL x op_ВL

.equ SW_DIV = 6  ;кнопка операции деления res=op_AH.op_AL/op_ВL

.equ SW_SHOW = 7  ;кнопка для просмотра признаков сложения-вычитания,

   ;старшего байта произведения или остатка при делении

.def op_AL = r16  ;1-й операнд АL

.def op_AH = r17  ;старший байт делимого AH

.def op_BL = r18  ;2-й операнд ВL

.def res = r1  ;результат операции (сумма, разность,

   ; младший байт произведения или частное)

.def show = r31  ;регистр признаков сложения-вычитания,

   ; старшего байта произведения или остатка при делении

.def mul_l = r21  ;младший байт произведения

.def mul_h = r22  ;старший байт произведения

.def copy_AH = r23 ;копия старшего байта делимого

.def copy_AL = r24 ;копия младшего байта делимого

.def copy_BL = r25 ;копия множителя

.def temp = r26  ;временный регистр

.def sw_reg = r27 ;регистр состояния кнопок

.def count = r28  ;число операндов в таблице операндов

.def c_bit = r29  ;счетчик циклов умножения (деления)

.def temp = r30

.macro vvod   ;ввод операнда

lpm    ;считывание байта из flash-памяти в r0

mov @0,r0   ; и пересылка в регистр операнда

mov res, r0

adiw zl, 1   ;увеличение указателя адреса на 1

dec count

brne exit

ldi ZL,low(tabl_op*2)  ;перезагрузка начала таблицы операндов

 ldi ZH,high(tabl_op*2) ; в регистр Z

ldi count, 16

exit: nop

.endmacro

.org $000

;Инициализация

ldi temp,low(RAMEND)  ;установка

out SPL,temp   ; указателя стека

 ldi temp,high(RAMEND)  ; на последнюю

 out SPH,temp   ; ячейку ОЗУ

ser temp    ;настройка 

out DDRB,temp   ; порта PB

out PORTB,temp    ; на вывод

clr temp    ;настройка

out DDRD,temp   ; порта PD

ser temp    ; на

out PORTD,temp   ; ввод

ldi ZL,low(tabl_op*2)  ;загрузка адреса таблицы операндов

ldi ZH,high(tabl_op*2) ; в регистр Z

ldi count,16   ;число операндов 16

;Опрос кнопок и выполнение заданных действий

LOOP: in sw_reg,PIND   

sbrs sw_reg,0

rjmp f_op_AL    

sbrs sw_reg,1

rjmp f_op_AH    

sbrs sw_reg,2

rjmp f_op_BL    

sbrs sw_reg,3

rjmp add_bin    

sbrs sw_reg,4

rjmp sub_bin    

sbrs sw_reg,5

rjmp mul_bin    

sbrs sw_reg,6

rjmp div_bin    

sbrc sw_reg,7

rjmp loop

mov res,show

 rjmp outled

;Выборка 1-го операнда из таблицы операндов  

f_op_AL: vvod op_AL

 rjmp outled

;Выборка старшего байта 1-го операнда (при делении)

f_op_AH:  vvod op_AH

 rjmp outled

;Выборка 2-го операнда 

f_op_BL:  vvod op_BL

 rjmp outled

;Сложение 8-разрядных операндов

add_bin:  mov res,op_AL

 add res,op_BL

 in show,SREG ;выборка из регистра SREG

 rjmp outled

;Вычитание 8-разрядных операндов

sub_bin:  mov res,op_AL

 sub res,op_BL

 in show,SREG ;выборка из регистра SREG

 rjmp outled

;Умножение  8-разрядных операндов

mul_bin:  clr mul_l  ;очистка младшего 

clr mul_h   ; и старшего байта произведения

 ldi c_bit,8  ;счетчик циклов

 mov copy_BL,op_BL

L1: clc    ;очистка флага C

 sbrc copy_BL,0  ;проверка младшего бита множителя

add mul_h,op_AL  ;прибавление множимого AL

L2: ror mul_h   ;сдвиг вправо

ror mul_l   ; 2-х байтов произведения

lsr copy_BL  ;сдвиг множителя вправо

L3: dec c_bit   ;уменьшение счётчика циклов

brne L1   ;если не 0, продолжаем умножение

mov res,mul_l  ;выводимые значения - младший

mov show,mul_h  ; и старший байты произведения

rjmp outled

;Деление 16-разрядного числа на 8-разрядное

div_bin: sbrc op_AH,7  ;ошибки исходных данных

 rjmp error

sbrc op_BL,7

 rjmp error

tst op_BL   ;ошибка при делении на 0

brsh error

cp op_AH,op_BL  ;ошибка при переполнении

 brge error

clr res   ;обнуляем частное

ldi c_bit,8  ; число итераций

mov copy_AH,op_AH

mov copy_AL,op_AL

L4: clc

rol copy_AL  ;сдвиг

rol copy_AH  ; делимого

 lsl res   ;сдвиг частного влево

sub copy_AH,op_BL ;вычитание делителя

brcs recov   ;если остаток < 0,переход

inc res   ; иначе добавить 1 в частное

rjmp L5

recov: add copy_AH,op_BL ;восстановление остатка

L5: dec c_bit

brne L4

mov show,copy_AH  ;пересылка остатка

rjmp outled

error: clr show

out PORTB,show

rcall delay

ser show

out PORTB,show

rjmp wait

outled: com res

out portb,res

rcall delay

wait: in sw_reg,PIND  ;ждать, пока кнопка не отпущена

com sw_reg    

brne wait

rjmp loop

; Задержка

DELAY: ldi r21,8

m1: ldi r19,250

m3: ldi r20,250

m2: dec r20

brne m2

dec r19

brne m3

dec r21

brne m1

ret

; Таблица операндов 

tabl_op: .db 0xE5,0x10,0x1E,0xAA,0x6C,0xC7,0x1D,0xE2

    .db 0x15,0xD6,0x0E,0xB6,0x5D,0xB7,0x03,0xB2

1. Выполнить ряд примеров на сложение и вычитание, выбирая операнды слагаемых АL и ВL нажатием кнопок SW0 и SW2. Объяснить результаты операций при нажатиях кнопки SW3 (сложение) и SW4 (вычитание), рассматривая операнды как беззнаковые числа, затем как числа со знаком.

Сложение

Число А2/A10

Число B2/B10

А+В

Признаки:

HSVNZC

Комментарий

00010000/16

Беззнаковое

00011110/30

Беззнаковое

00101110/46

0 0 0 0 0 0

11100101/229

Беззнаковое

00010000/16

Беззнаковое

11110101/245

0 1 0 1 0 0

Так как числа беззнаковые, то флаги S и N можно проигнорировать

11100101/-27

Со знаком

00010000/16

Со знаком

11110101/-11

0 1 0 1 0 0

S = 1 – Число отрицательное

N = 1 – Число отрицательное, т.к. не было переполнения

11100010/226

Беззнаковое

01011101/93

Беззнаковое

00111111/63

0 0 0 0 0 1

С = 1 – Произошел перенос в разряд 28

28 + 63 = 319

11100010/-30

Со знаком

01011101/93

Со знаком

00111111/63

0 0 0 0 0 1

V = 0 – Переполнения нет

11100101/229

Беззнаковое

11010110/214

Беззнаковое

10111011/187

0 1 0 1 0 1

С = 1 – Произошел перенос в разряд 28

28 + 187 = 443

Так как числа беззнаковые, то флаги S и N можно проигнорировать

11100101/-27

Со знаком

11010110/-42

Со знаком

10111011/-69

0 1 0 1 0 1

V = 0 – Переполнения нет

S = 1 – Знак отрицательный

Вычитание

Число А2/A10

Число B2/B10

А-В

Признаки:

HSVNZC

Комментарий

11111111/255

Беззнаковое

01111110/126

Беззнаковое

10000001/129

0 1 0 1 0 0

Так как числа беззнаковые, то флаги S и N можно проигнорировать

11111111/-1

Со знаком

01111110/126

Со знаком

10000001/-127

0 1 0 1 0 0

S = 1 – Знак отрицательный

00000011/3

Беззнаковое

01101100/108

Беззнаковое

10010111/151

1 1 0 1 0 1 

С = 1 – Произошел перенос в разряд 28

151 -  28= - 105

00000011/3

Со знаком

01101100/108

Со знаком

10010111/-105

1 1 0 1 0 1 

S = 1 – Знак отрицательный

Флаг C игнорируем, т.к. числа со знаком

2. Выполнить ряд примеров умножения 8-разрядных двоичных чисел. Нажатие кнопки SW5 показывает младший байт произведения, SW7 – старший байт.

Число А2/A10

Число B2/B10

А*В

Комментарий

00010000/16

00000011/3

00000000 00110000/48

Верно

11100101/229

11100010/226

11001010 00101010/51754

Верно

10101010/170

00001110/14

00001001 01001100/2380

Верно

11111111/255

11111111/255

11111110 00000001/65025

Верно

3. Выполнить деление беззнаковых чисел, 16-разрядного делимого на 8-разрядный делитель, с восстановлением остатка при условиях, что делитель не равен 0 и его значение не вызовет переполнения, а также делимое и делитель заданы с нулевыми значениями старших разрядов.

Число А2/A10

Число B2/B10

А/В

Остаток

Комментарий

00010000 11111111/4351

01011101/93

00101110/46

01001001/73

Верно

00000000 00000011/3

00000011/3

00000001/1

00000000/0

Верно

01101111 11111111/28671

01110000/112

11111111/255

01111111/127

Верно

01111110 11111111/32511

01111111/127

11111111/255

01111110/126

Верно

4. Реализовать сложение двоично-десятичных чисел

;Сложение 8-разрядных операндов

add_bin:

 subi op_AL, 0x9A

 mov res, op_AL

 add res,op_BL

 MOV r17, res

 clt

 BRCC LABEL0

 set

 LABEL0:

 BRHS LABEL1

 SUBI r17, 0x06

LABEL1:

 BRTS LABEL2

 SUBI r17, 0x60

LABEL2:

 MOV res, r17

   

 in show,SREG ;выборка из регистра SREG

 rjmp outled




1. НА ТЕМУ- Налогооблагаемая база при начислении акцизов при ввозе товаров в Российскую Федерацию
2. Приготовление и отпуск бутербродов
3. Абсолютная монархия во Франции
4.  Понятие преступлений совершаемых в сфере экономики
5. дикого уродства бездарной мазни мерзости до дивных симфоний гения
6. фужерфлейта или в чашах для шампанского
7. Уфимский государственный нефтяной технический университет Филиал ГОУ ВПО УГНТУ в г
8. Проект парикмахерской «Марина».html
9. 00 EESTI BSOLUUTSE KLU MVd lgus kell 14
10. Проблемы гражданско-правового регулирования расчетных отношений
11. Организация имеющая в собственности ведении или оперативном управлении обособленное имущество и отвечаю
12. Физическая подготовка в Вооруженных Силах
13.  Известны следующие данные о численности населения Центрального федерального округа РФ на 01
14. Изображение наружной резьбы Изображение резьбы содержит линии соответствующие оси резьбы наружному и в.html
15. Технологія міжбанківських платежів у комерційному банку
16.  Основные факторы внутренней среды их влияние на условия и результаты деятельности компании
17. Свойства металлических меди цинка и кадмия В пробирки с растворами солей медиII цинка и кадмия вносят
18. Секьюритология наука о сохранении и защите ноосферы и человечества
19. Тема лекції Політикоідеологічна криза
20. тематический анализ для студентов 1 курса специальности ММ Предмет математического анализа