From 99f66716b49ce1e42116a7a1ffedb95f48ced230 Mon Sep 17 00:00:00 2001 From: Alexandr Date: Mon, 5 Oct 2026 01:25:54 +0300 Subject: [PATCH] first commit --- README.md | 13 +++++++++++++ pz1.s | 19 +++++++++++++++++++ pz2.s | 35 +++++++++++++++++++++++++++++++++++ pz3.s | 29 +++++++++++++++++++++++++++++ 4 files changed, 96 insertions(+) create mode 100644 README.md create mode 100644 pz1.s create mode 100644 pz2.s create mode 100644 pz3.s diff --git a/README.md b/README.md new file mode 100644 index 0000000..e0c84db --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# Практические работы по RISC-V + +ФИО: Васильев Александр Олегович +Группа: М3О-118СВ-26 + +## Запуск в терминале + +```bash +java -jar rars.jar pz1.s +java -jar rars.jar pz2.s +java -jar rars.jar pz3.s +``` + diff --git a/pz1.s b/pz1.s new file mode 100644 index 0000000..56c009a --- /dev/null +++ b/pz1.s @@ -0,0 +1,19 @@ +# Напишите программу на ассемблере RISC-V , +# которая принимает на вход целое число x и выводит 1, +# если оно соответствует номеру студента в списке группы +# и  0, если не совпадает. + +.text +.globl main +main: + li a7, 5 + ecall + + addi a0, a0, -3 + seqz a0, a0 + li a7, 1 + ecall + +exit: + li a7, 10 + ecall diff --git a/pz2.s b/pz2.s new file mode 100644 index 0000000..52e9289 --- /dev/null +++ b/pz2.s @@ -0,0 +1,35 @@ +# Напишите программу на ассемблере RISC-V, +# которая принимает на вход целое число x и +# выводит все значения в диапазоне min(x, y)...max(x, y) с шагом h. +# Где y – номер группы, h – номер студента в группе. + +.eqv y, 118 +.eqv h, 3 +.text +.globl main + +main: + li a7, 5 + ecall + mv t0, a0 + li t1, y + li t3, h + ble t0, t1, loop + mv t2, t0 + mv t0, t1 + mv t1, t2 + +loop: + mv a0, t0 + li a7, 1 + ecall + li a0, 32 + li a7, 11 + ecall + sub t2, t1, t0 + bltu t2, t3, exit + add t0, t0, t3 + j loop +exit: + li a7, 10 + ecall diff --git a/pz3.s b/pz3.s new file mode 100644 index 0000000..f6739a5 --- /dev/null +++ b/pz3.s @@ -0,0 +1,29 @@ +# Напишите программу на ассемблере RISC-V, +# которая заполняет массив из 16+n целых чисел значениями +# из стандартного ввода. Программа считывает значения в цикле +# и завершает чтение, когда считаны все 16+n значения или +# когда считано значение 0 (n – номер студента в группе) + +.eqv n, 3 +.data +array: .space 76 +.text +.globl main + +main: + la t0, array + li t1, 16 + addi t1, t1, n + +loop: + li a7, 5 + ecall + beqz a0, exit + sw a0, 0(t0) + addi t0, t0, 4 + addi t1, t1, -1 + bnez t1, loop + +exit: + li a7, 10 + ecall