Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Лабораторна робота з «Архітектура комп’ютерів»

Автор:   •  Декабрь 10, 2021  •  Лабораторная работа  •  7,496 Слов (30 Страниц)  •  298 Просмотры

Страница 1 из 30

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ДЕРЖАВНИЙ ВИЩИЙ НАВЧАЛЬНИЙ ЗАКЛАД

«УЖГОРОДСЬКИЙ НАЦІОНАЛЬНИЙ  УНІВЕРСИТЕТ»

ІНЖЕНЕРНО-ТЕХНІЧНИЙ ФАКУЛЬТЕТ

КАФЕДРА КОМП’ЮТЕРНИХ СИСТЕМ ТА МЕРЕЖ

Лабораторна робота №5

з дисципліни «Архітектура комп’ютерів»

студента 2-ст курсу

спеціальності 123 –

«комп’ютерна інженерія»

Рикавця Едуарда Васильовича

Ужгород – 2021р

Глава 25

Bare Machine OFF, Allow Pseudo Instructions ON, Load Trap File ON, Delayed Branches ON, Delayed Loads ON, Mapped IO ON, Quiet OFF

Завдання 1

 Напишіть програму для оцінки 3ab - 2bc - 5a + 20ac - 16

Запросіть користувача про значення a, b, та c. Намагайтеся використовувати невелику кількість регістрів. Використовуйте стек для утримання проміжних значень. Запишіть остаточне значення на монітор.

Лістинг програми:

.data

aa:        .word 2

bb:        .word 3

cc:        .word 4

.text

.globl main

main:

lw                $t0,aa        

lw                $t1,bb        

mul                 $t0, $t0, $t1

mul                 $t0, $t0, 3

subu                 $sp, $sp, 4

sw                $t0, 0($sp)

lw                $t0, bb

lw                $t1, cc

mul                $t0, $t0, $t1

mul                $t0, $t0, 2

subu                $sp, $sp, 4

sw                $t0, 0($sp)

lw                $t0, aa

mul                $t0, $t0, 5

subu                $sp, $sp, 4

sw                $t0, 0($sp)

lw                $t0, aa

lw                $t1, cc

mul                $t0, $t0, $t1

mul                $t0, $t0, 20

subu                $t0, $t0, 16

lw                $t1, 0($sp)

addu                $sp, $sp, 4

subu                $t0, $t0, $t1

lw                $t1, 0($sp)

addu                $sp, $sp, 4

subu                $t0, $t0, $t1

lw                $t1, 0($sp)

addu                $sp, $sp, 4

addu                $t0, $t0, $t1

li                $v0, 1        

move                $a0, $t0

syscall

li                $v0, 10

syscall

[pic 1]

Рис.1. Результат програми

Завдання 2

Напишіть програму, яка запитує у користувача рядок. Зчитайте рядок у буфер, а потім поверніть рядок за допомогою стека. Однак, на відміну від прикладу в главі, не натискайте нульовий символ у стеку. Слідкуйте за кількістю символів у стеку, збільшуючи кількість під час кожного натискання символу та зменшуючи його щоразу, коли символ вискакує. Випишіть зворотний рядок.

Лістинг програми:

 .data

buffer: .space 1024

.text

.globl main

main:

li      $v0,8        

la     $a0,buffer

li      $a1,1024

syscall

li                $t0, 0        

startPushInStack:

lbu                $t2, buffer($t0)

beqz        $t2, stackFull        

subu        $sp, $sp, 4

sw                $t2, 0($sp)

addu        $t0, 1

j startPushInStack

stackFull:

li                $t1, 0        

startPushInBuffer:

blez        $t0, exitPushInBuffer        

lw                $t2, 0($sp)

addu        $sp, $sp, 4

sb                $t2, buffer($t1)        

addu        $t1, 1

subu        $t0, $t0, 1

j startPushInBuffer

exitPushInBuffer:

li                $v0, 4

la                $a0, buffer

syscall

li                $v0, 10

syscall

[pic 2]

Рис.2. Результат програми

Завдання 3

Напишіть програму, яка запитує у користувача рядок. Прочитайте рядок у буфер. Тепер відскануйте рядок справа наліво, починаючи з крайнього правого символу (це той, що знаходиться безпосередньо перед нульовим завершенням.) Натисніть кожен неголосний символ на стек. Пропустіть голосні.

Тепер поверніть стек символ за символом назад у буфер. Вставте символи в буфер справа наліво. Завершіть рядок нульовим байтом. Буфер тепер міститиме рядок у правильному порядку без голосних.

...

Скачать:   txt (22.7 Kb)   pdf (207.1 Kb)   docx (54.1 Kb)  
Продолжить читать еще 29 страниц(ы) »
Доступно только на Essays.club