2016-10-28 5 views
0

Je travaille sur un projet de classe et ce que je veux faire, est de demander à l'utilisateur de 2 entiers, lorsque le message "Veuillez entrer un entier:" et alsoto entrer un caractère lorsque le message "Veuillez entrer un opérateur (+, *, -, /)" apparaît. Quelqu'un peut-il pleaselook à ce code et me dire ce que je fais mal? la première instruction s'imprime mais je reçois un message erro avec l'entrée de caractères.Mon simulateur QTSPIM dit erreur, quand je cours ce code

vraiment l'apprécier

.data 
prompt: .asciiz "Please enter an integer\n" 
message: .asciiz "Please enter an operator (+, - , * , /):" 
usercharacter: .space 2 
.text 
.globl main 

main: 
li $v0, 4   #system call code for printing a string is 4 
la $a0, prompt  #adress of string is argument 0, to print string 

syscall    # telling the system to execute the action 

li $v0, 5    # system call for reading and displaying input 
syscall    
move $t1, $v0    # store input one into register $a1 

li $a0, message 
li $v0, 4 
syscall 

la $a0,usercharacter 
li $a1, 2  #allocating a space for 2 caracters 
li $v0 12 
syscall 

li $v0, 4   #system call code for printing a string is 4 
la $a0, prompt  #adress of string is argument 0, to print string 

syscall    # telling the system to execute the action 

li $v0, 5    # system call for reading and displaying input 
syscall     
move $t2,$v0    #print the prompt message for the user to input 
li,$v0,10 
syscall 
+1

_ "Je reçois un message Erro" _ ** Quel message d'erreur **? En outre, la façon dont vous utilisez l'appel système 12 ('read_character') me porte à croire que vous avez mal compris ce qu'il fait. – Michael

+0

le message d'erreur est "tentative d'exécution de non-instruction à 0x0040003c". Ce que mon code essaie de faire, c'est lire un caractère d'un utilisateur. J'ai lu quelque part que le code pour cela est un 12.Maybe je ne l'utilise pas correctement. Pouvez-vous s'il vous plaît me dire comment l'utiliser? Merci pour votre réponse. – TINA15

+0

Le code que vous avez posté ne semble même pas assembler. Il n'y a pas d'étiquette 'main' par exemple. Pour plus d'informations sur les appels système disponibles dans SPIM, [voir ceci] (https://www.doc.ic.ac.uk/lab/secondyear/spim/node8.html). – Michael

Répondre

0

J'espère que cette aide,

Les questions qui à l'entrée 1 entiers et un opérateur (+, -, *, /), puis le second est integer.Here le code.

.data 

input1: .asciiz "Please enter an integer: " 
input2: .asciiz "Please enter an operator(+, -, *, /): " 
input3: .asciiz "Enter second value: " 
newline: .asciiz "\n" 

.text 
.globl main 
main: 

li $v0, 4 
la $a0, input1 
syscall       #printing input 1 

li $v0, 5 
syscall 
           #reading and storing first value 
move $t1, $v0 

li $v0, 4 
la $a0, input2 
syscall       #printing input 2 

li $v0, 12 
syscall       #reading operator 
move $t9, $v0     #storing operator 

li $v0, 4 
la $a0, newline 
syscall 

li $v0, 4 
la $a0, input3 
syscall       #printing input 3 
li $v0, 5 
syscall 
            #reading and storing second value 

exit: 
li $v0, 10 
syscall        # ending main 

Merci