Member 14711617 Ответов: 1

Написание программы на ассемблере (MIPS)


Мне нужно написать программу с MIPS для оценки экзамена. Если кто-то получает ≥ 40 баллов, он преуспел, а если он получает <40 баллов, он потерпел неудачу.

В самом начале переменная "успех" получает значение 99, что означает, что мы не знаем, преуспел ли кто-то или нет.

Задача состоит в том, чтобы завершить программу так, чтобы мы получили 1 для успешного и 0 для не успешного.



.данные
Очки : .word 42 # Exampoints
Успех : .слово 99 # 0 Нет, 1 Да, 99 мы не знаем
Минимум: .word 40 # MinimumToSucceed 40 баллов

.текст
.глобл главная
.
.
.

Что я уже пробовал:

.данные
Очки : .word 42 # Exampoints
Успех : .слово 99 # 0 Нет, 1 Да, 99 мы не знаем
Минимум: .word 40 # MinimumToSucceed 40 баллов

.текст
.глобл главная

главный:

lw $2,баллы
lw $3,минимум
lw $4,успех

петля:blt $2,$3,конец
ли $4,1

конец:li $4,0

li $2,10 #эти две последние строки только для того, чтобы закончить
syscall #программа без ошибок (не связанная с задачами)

О, я только что обнаружил проблему: если я использую числа ниже 0 или больше 99 для "очков", это все равно дает мне 1 для успешного (например, 105 > 40) и 0 для неудачного (например, -5 < 40).

Как я могу интегрировать это в свою программу?

Kris Lantz

Это пахнет домашним заданием. Пытались ли вы решить эту проблему, чтобы кто-то мог предложить вам какое-то руководство, а не просто решение?

Kornfeld Eliyahu Peter

Вы что-нибудь сделали сами?
CP не так уж много для сайта с запросом кода... Это больше о помощи-вы сами и КП присоединитесь...

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.

Kris Lantz

Вы можете проверить, чтобы убедиться, что данные находятся в пределах 0-99 границ, прежде чем проверять успех/неудачу.

Member 14711617

Можно ли написать текст на ассемблере? Я не знаю, как сказать: "число слишком велико или слишком мало".

Kris Lantz

Лично я не знаком с синтаксисом MIPS, но первый слайд здесь может быть полезен. https://courses.cs.vt.edu/cs2506/Fall2014/Notes/L04.MIPSAssemblyOverview.pdf

Member 14711617

Хорошо, спасибо Тхо. Единственный способ решить эту проблему, который я мог придумать, - это добавить еще одну строку в .data, например, называемую "Lowest". Поскольку "успех" уже установлен на 99, "самый высокий" не будет необходим. В основном это будет выглядеть так:

цикл:blt $2,$5,fail # если меньше 0
цикл:bgt $2,$4,fail # если больше 99
петля:blt $2,$3,конец
.
.
.
Но мы не можем изменить линии на .насколько мне известно, данных.

Tbh я думаю, что проигнорирую эту проблему и просто закончу свою задачу, не рассматривая точки ниже 0 или выше 99. Поскольку остальные задачи я решил хорошо, то на 1-2 балла меньше значения не будет. Спасибо за вашу помощь :D

1 Ответов

Рейтинг:
0

Richard MacCutchan

Видеть mips assembler - поиск в Google[^]