2012-05-13 2 views
2

В настоящее время я изучаю, как кодировать с помощью MIPS и эмулятора QTSPIM. Я думал, что сделать простой арифметический калькулятор будет хорошей практикой, поэтому я начал кодирование. Пока программа запрашивает номер, считывает номер, запрашивает операцию (пользователь должен ввести либо символы операции +, -, *, /, либо инициалы a, s, m, d). Следующим шагом будет сравнение полученного ввода с чем-то ... Это та часть, на которую я застрял. Моя первая мысль была иметь 4 регистров с персонажами уже в них, поэтому я попыталсяСделать калькулятор в MIPS?

li $t5,a 
    li $t6,s 
    li $t7,m 
    li $t8,d 

Это, однако, как раз дает мне ошибку синтаксиса. Я попробовал пару других подобных способов, но продолжал получать ошибку. Моя цель была сравнить пользовательский ввод этих 4 регистров, а затем перейти к работе

beq $t2,$t5,add 
    beq $t2,$t6,sub 
    beq $t2,$t7,mul 
    beq $t2,$t8,div 

Где $ t2 содержит ввод символа пользователя. Затем он переходит к соответствующей метке для выполнения операции.

Есть ли более простой способ сделать это, что я не замечаю? Спасибо за ваше время.

+0

+1 для попытки чего-то тяжелого :-). Извините за невозможность ответить, хотя я никогда не касался MIP-ассемблера. Взгляните на эту лекцию на ассемблере MIPS и посмотрите, помогает ли она: http://pages.cs.wisc.edu/~cs354-2/cs354/karen.notes/MAL.instructions.html –

+1

Спасибо! Это помогло :) Мне удалось решить мою проблему, но я не могу ответить на свой вопрос еще на несколько часов xD. Я отправлю решение тогда, если кто-то еще столкнется с этой проблемой. – iVikD

ответ

0

Ну, мне удалось решить мою собственную проблему XD решения немного примитивно, но это работает ... Изменены операции приглашения к "1 for addition, 2 for subtraction, 3 for multiplication, 4 for division" и сравнили ввод данных пользователя с теми,

beq $t2,1,add 
    beq $t2,2,sub 
    beq $t2,3,mul 
    beq $t2,4,div 

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

0

Чтобы установить регистр с кодом ASCII, вам необходимо заключить его в одинарные кавычки. В вашем примере это будет

li $t5,'a' 
    li $t6,'s' 
    li $t7,'m' 
    li $t8,'d' 
+0

Хмм я могу поклясться, что я попробовал это и все еще получил ошибку ... Может, я где-то ошибся ... Я посмотрю и попробую еще раз. Благодарю. – iVikD

Смежные вопросы