Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы по ОргЭВМ 2023 / Baraeva_Elizaveta_lb5.doc
Скачиваний:
0
Добавлен:
09.09.2026
Размер:
266 Кб
Скачать
  1. Тестирование

Входные данные

Выходные данные

Пояснение

x1, y1, z1 = 10, 15, 5

x2, y2, z2 = 8, 20, 7

r1 = 648

r2 = 904

Все верно

x1, y1, z1 = 1, 2, 3

x2, y2, z2 = 4, 5, 6

r1 = 384

r2 = 772

Все верно

x1, y1, z1 = 0, 0, 0

x2, y2, z2 = 1, 1, 1

r1 = 0

r2 = 128

Все верно

x1, y1, z1 = -1, -9, -7

x2, y2, z2 = 5, -11, 0

r1 = -8389485

r2 = 8388603

Все верно

x1, y1, z1 = 6586, 268, 824

x2, y2, z2 = 1234, 987, 672

r1 = 112040

r2 = 87233

Все верно

ВЫВОД

В результате выполнения лабораторной работы была освоена работа с эмулятором Ripes, произведена его установка и настройка, а также была изучена архитектура RISC-V, базовый набор инструкций, и разработана программа с использованием подпрограмм на ассемблере.

ПРИЛОЖЕНИЕ

Код программы lb5.s:

.data

x1: .word 10

y1: .word 15

z1: .word 5

x2: .word 8

y2: .word 20

z2: .word 7

a: .word 20

b: .word 7

c: .word 9

sep: .asciz ", "

f: .asciz "\nf = ((x & (-a)) ^ (y >> c)) + (z << b)"

xyz1: .asciz "x1, y1, z1 = "

xyz2: .asciz "\n\nx2, y2, z2 = "

answer: .asciz "\nr = "

.text

.globl main

main:

lw a2, x1

lw a3, y1

lw a4, z1

lw a5, x2

lw a6, y2

lw a7, z2

lw s0, a

lw s1, b

lw s2, c

mv t0, a2 # t0 = x1

mv t1, a3 # t1 = y1

mv t2, a4 # t2 = z1

call func # вызов функции

mv a1, a0 # перенос результата в a1 (a1 = r1)

li a7, 4 # функция печати строки

la a0, xyz1 # перенос начала строки в a0

ecall # вывод x1, y1, z1 =

li a7, 1 # функция печати числа

mv a0, a2 # перенос числа в a0

ecall # вывод x1

li a7, 4 # функция печати строки

la a0, sep # перенос начала строки в a0

ecall # вывод ,

li a7, 1 # функция печати числа

mv a0, a3 # перенос числа в a0

ecall # вывод y1

li a7, 4 # функция печати строки

la a0, sep # перенос начала строки в a0

ecall # вывод ,

li a7, 1 # функция печати числа

mv a0, a4 # перенос числа в a0

ecall # вывод z1

li a7, 4 # функция печати строки

la a0, f # перенос начала строки в a0

ecall # вывод f = ((x & (-a)) ^ (y >> c)) + (z << b)

li a7, 4 # функция печати строки

la a0, answer # перенос начала строки в a0

ecall # вывод r =

li a7, 1 # функция печати числа

mv a0, a1 # перенос числа в a0

ecall # вывод результата (r1)

mv t0, a5 # t0 = x2

mv t1, a6 # t1 = y2

lw t2, z2 # t2 = z2

jal func # вызов функции

mv a2, a0 # перенос результата в a2 (a2 = r2)

li a7, 4 # функция печати строки

la a0, xyz2 # перенос начала строки в a0

ecall # вывод x2, y2, z2 =

li a7, 1 # функция печати числа

mv a0, a5 # перенос числа в a0

ecall # вывод x2

li a7, 4 # функция печати строки

la a0, sep # перенос начала строки в a0

ecall # вывод ,

li a7, 1 # функция печати числа

mv a0, a6 # перенос числа в a0

ecall # вывод y2

li a7, 4 # функция печати строки

la a0, sep # перенос начала строки в a0

ecall # вывод ,

li a7, 1 # функция печати числа

lw a0, z2 # перенос числа в a0

ecall # вывод z2

li a7, 4 # функция печати строки

la a0, f # перенос начала строки в a0

ecall # вывод f = ((x & (-a)) ^ (y >> c)) + (z << b)

li a7, 4 # функция печати строки

la a0, answer # перенос начала строки в a0

ecall # вывод r =

li a7, 1 # функция печати числа

mv a0, a2 # перенос числа в a0

ecall # вывод результата (r2)

li a7, 2500 # a7 = 2500

li s3, 2490 # s3 = 2490

sub a7, a7, s3 # функция выхода из программы a7 = 2500 - 2490 =10

ecall # выход из программы

func:

mv t3, s0 # t3 = a

neg t3, t3 # t3 = (-a)

and t3, t0, t3 # t3 = x & (-a)

srl t4, t1, s2 # t4 = y >> c

xor t5, t3, t4 # t5 = (x & (-a)) ^ (y >> c)

sll t6, t2, s1 # t6 = z << b

add a0, t5, t6 # a0 = ((x & (-a)) ^ (y >> c)) + (z << b)

ret

9

Соседние файлы в папке Лабы по ОргЭВМ 2023