Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

МПТ лабы 1-сем / ЛабРаб1

.doc
Скачиваний:
19
Добавлен:
24.02.2016
Размер:
47.1 Кб
Скачать

ЛАБОРАТОРНАЯ РАБОТА № 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.

Соседние файлы в папке МПТ лабы 1-сем