Написание программы на ассемблере (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