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

LR3_

.docx
Скачиваний:
14
Добавлен:
18.01.2022
Размер:
238.56 Кб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ федеральное государственное автономное образовательное учреждение высшего образования «САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»

ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ КАФЕДРА вычислительных систем и сетей

ОЦЕНКА

ПРЕПОДАВАТЕЛЬ

ассистент А.Н.Долидзе

должность, уч. степень, звание подпись, дата инициалы, фамилия

ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №3

Изучение алгоритма выполнения целочисленной машинной операции умножения или деления

по дисциплине: Организация ЭВМ и вычислительных систем.

РАБОТУ ВЫПОЛНИЛА

СТУДЕНТКА ГР. №

подпись, дата инициалы, фамилия

Санкт-Петербург 2021

Задание:

Реализовать алгоритм лабораторной работы 2 в assamblerVAX, в среде разработки VAXsim.

Вариант: 1

Адрес начала расположения исходных данных:11

Адрес начала расположения команд программы: 151

Типы адресации операнд А – 7, B – 9.

  1. Алгоритм программы

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

  1. Текст программы в мнемонических и машинных кодах

    Оператор, №

    Адрес, hex

    Щестнадцатиричный код

    Мнемокод

    Комментарий

    1

    2

    3

    4

    5

    6

    7

  2. Программный код на ARM Assembler

mov r0,#0x00000007 @ множитель А

mov r1,#0xfffffff8 @ множитель B

mov r5,#0 @ переменная для коррекции

sub r5,r5,r0 @ вычитания из 0 множитель А, для отрицания A

mov r2,#0 @ сумма частных произведений / итог

mov r3,#0 @ счетчик цикла

mov r4,#1 @ маска

label1: tst r1, r4 @ флаг1 сравнение маски и множителя

beq label2 @ если 0 переход к флагу2

add r2,r2,r0 @добавляем в регистр р2 содержимое регистра р0

label2: mov r0,r0,lsl #1 @флаг2 сдвигаем множитель А на 1 бит влево

mov r4,r4,lsl #1 @сдвигаем маску 0001 – 0010 - 0100 - 1000

add r3,r3,#1 @ добавляем 1 к счетчику

CMP r3,#4 @ сравнение счетчика и количество циклов (4)

bne label1 @ если не 4 переход к флагу 1

cmp r1,#0 @ сравнени множитля с 0

bge finish @ если больше 0 переход к флагу финиш, если меньше 0(отрицание) добавляем корекцию

mov r5,r5,lsl #4 @ сдвиг коррекции на 4 бита влево

add r2,r2,r5 @ добавление к результату коррекуцию

finish: .end

  1. Программный код на VEX Assembler

[Processor settings]

Memory size=2048

Max commands before interruption=1048576

Generate messages=1

[Registers]

PSL=00000009

R6=00000015

RF=00000151

[Memory]

0x00000000=04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

0x00000010=00 EC FF FF FF 00 00 10 00 00 00 00 00 00 00 00

0x00000150=00 7C 50 7C 51 7C 52 7C 53 7C 54 D0 76 50 D0 9F

0x00000160=00 00 00 00 51 D0 8F 00 00 00 00 55 C2 50 55 D0

0x00000170=8F 00 00 00 00 52 90 8F 00 53 D0 8F 01 00 00 00

0x00000180=54 D3 51 54 13 03 C0 50 52 78 01 50 50 78 01 54

0x00000190=54 96 53 91 53 04 12 E9 D1 00 51 19 08 78 04 55

0x000001A0=55 C0 55 52 00 00 00 00 00 00 00 00 00 00 00 00

  1. Трассировка

1 шаг очистка данных регистров r0-r5

2 шаг запись переменных А и B в R0 и R1

3 шаг вычисление R3

Результат умножения -20(FFFFFFEC) * 4 = -80(FFFFFFBO)

Другие примеры вычислений 30(1E)*5= 150(96)

10

Соседние файлы в предмете Схемотехника