ЛАБОРАТОРНАЯ РАБОТА № 1 АЛГОРИТМЫ АРИФМЕТИЧЕСКОЙ ОБРАБОТКИ ДАННЫХ | |
Автор: drug | Категория: Технические науки / Автоматизация | Просмотров: | Комментирии: 0 | 21-07-2013 15:38 |
ЛАБОРАТОРНАЯ РАБОТА № 1
АЛГОРИТМЫ АРИФМЕТИЧЕСКОЙ ОБРАБОТКИ ДАННЫХ
Перечень команд для выполнения арифметических действий приведен в приложении.
Приведем пример программы деления, для чего составим программу деления 8-разрядных двоичных чисел без знака для следующего распределения регистров: R16 – делимое, R17 – делитель, R18 – частное, R19 – остаток, R20 – счётчик циклов.
Алгоритм деления состоит в следующем. Делимое сдвигается на один бит влево, его старший бит передается во флаг переноса, а остальные биты возвращаются в регистр R16. Бит делимого сдвигается в младший разряд остатка (регистр R19), затем из остатка вычитается делитель. Если при вычитании возникает заём, то остаток восстанавливается с помощью команды сложения. После этого флаг переноса поступает в младший бит регистра R18, который затем
инвертируется. Этот процесс повторяется 8 раз.
Программа, реализующая описанный алгоритм, имеет вид:
.include "m32def.inc"
ldi r16,0xFF ;Делимое
ldi r17,0x0A;Делитель
ldi r18,0 ;Частное
ldi r19,0 ;Остаток
ldi r20,8 ;Число циклов
ldi r21,1 ;Вспомогательный для инвертирования с помощью исключающего ИЛИ
clc ;Сброс С
loop:
lsl r16 ; Сдвиг влево. Во младший раряд задвигается 0
rol r19 ; Бит делимого сдвигается в младший разряд остатка
sub r19,r17 ; Вычитание делителя из остатка
brge m1 ; Остаток больше нуля?
add r19,r17 ; Нет. Восстановление остатка
m1:
rol r18 ; Задвигаем флаг переноса в младший бит частного
eor r18,r21 ; Инвертируем последний разряд
dec r20
brne loop ;Цикл 8 раз
end: rjmp end
Задания на лабораторную работу
1. Написать программы сложения (вычитания) 8-ми разрядных двоичных чисел, одно из которых содержится в регистре Ri, второе – в регистре Rj. Результат поместить в регистр Ri.
Вариант |
Ri |
Rj |
1 |
r16 |
r17 |
2 |
r16 |
r18 |
3 |
r16 |
r19 |
4 |
r16 |
r20 |
5 |
r17 |
r21 |
6 |
r17 |
r22 |
7 |
r17 |
r18 |
8 |
r17 |
r19 |
Программы проверить на примерах.
2. Написать программы сложения и вычитания 16-разрядных двоичных чисел, одно из которых содержится в регистрах Ri, Rj, а второе – в ячейках RAM с адресами Адрес1, Адрес1+1. Результат поместить в ячейки RAM c адресами Адрес2, Адрес2+1.
Вариант |
Ri |
Rj |
Адрес 1 |
Адрес 2 |
1 |
r16 |
r17 |
0x60 |
0x62 |
2 |
r16 |
r18 |
0x70 |
0x72 |
3 |
r16 |
r19 |
0x80 |
0x82 |
4 |
r16 |
r20 |
0x90 |
0x92 |
5 |
r17 |
r21 |
0x9A |
0x75 |
6 |
r17 |
r22 |
0x9B |
0x85 |
7 |
r17 |
r18 |
0x9C |
0x92 |
8 |
r17 |
r19 |
0x9D |
0x94 |
Программы проверить на примерах.
3. Написать программу, осуществляющую умножение 8-ми разрядного операнда на постоянный коэффициент К. Адрес операнда – ячейка RAM 0x60+№, адрес результата – ячейки RAM 0x70+№, 0x70+№+1, значение коэффициента К = № + 8; где № – номер бригады.
4. Написать программу, осуществляющую деление 8-ми разрядного операнда на постоянный коэффициент К. Адрес операнда – ячейка RAM 0x60+№, адрес результата – регистр R18, значение коэффициента К = № + 5.
- ЛАБОРАТОРНАЯ РАБОТА № 2 АЛГОРИТМЫ ЛОГИЧЕСКОЙ ОБРАБОТКИ ДАННЫХ
- Задачи для подготовки к контрольной работе для студентов специальности МИ Ветвление
- ЛАБОРАТОРНАЯ РАБОТА № 3 ВВОД/ВЫВОД ИНФОРМАЦИИ ИЗ МИКРОКОНТРОЛЛЕРА
- Как происходит передача данных при асинхронном режиме обмена?
- Лабораторная работа №1 по дисциплине «Технологии и методы программирования» на тему: Алгоритмы.