I have this simple program to print my name, but when I assemble it, it says the first line contains a syntax error. I'm pretty sure I've written the opening lines right, so I'm not sure why. When I run it on online simulators it says "Syntax error" and on my QTSPIM simulator on my computer "Instruction references undefined symbol at 0x00400014 [0x00400014] 0x0c000000 jal 0x00000000 [main] ; 188: jal main"
.text
main:
li $v0, 11 #Load command to print characters in v0 register
la $a0, 64 #Load character '@' into 4 register
syscall
sub $v0, 10 #Subract from v0 to get 1, command to print integers
sub $a0, 64 # sub from to print 0
syscall
addi $a0, 49, $zero #Make 4 register store 1
syscall
addi $a0, 6, $zero #Make 4th register store 6
syscall
sub $a0, 5 #Make 4th register store 1
syscall
addi $a0, $zero, 6 #Make 4th register store 7
syscall
sub $a0, 3 #Make 4th register store 4
syscall
syscall
addi $a0, $zero, 4 #Make 4th register store 8
syscall
addi $v0, 10 #Print out char again
sub $a0, 46 #Print out new line (ASCII 10)
syscall
addi $a0, $zero, 56 #Store 'B'
syscall
addi $a0, $zero, 42 #Store 'l'
syscall
sub $a0, 11 #Store 'a'
syscall
addi $a0, $zero, 2 #Store 'c'
syscall
addi $a0, $zero, 8 #Store 'k'
syscall
sub $a0, 64 #Store ','
syscall
sub $a0, 12 #Store space ' '
syscall
addi $a0, $zero, 52 #Store 'T'
syscall
addi $a0, $zero,27 #Store 'e'
syscall
addi $a0, $zero, 13 #Store 'r'
syscall
sub $a0, 13 #Restore 'e'
syscall
addi $a0, $zero, 7 #Store 'l'
syscall
sub $a0, 98 #Start new line
syscall
sub $v0, 1 #Store exit commmand in v0
syscall
First, you need to organize and ident your code, this will help you.
Second, there are syntax errors in the code:
How must to be: (I got this from Mars software.)
sub $t1,$t2,$t3 Subtraction with overflow : set $t1 to ($t2 minus $t3)
addi $t1,$t2,-100 Addition immediate with overflow : set $t1 to ($t2 plus signed 16-bit immediate)
And I really don't understand what you want to print. why did you do multiple operations with v0 instead of setting the value of it directly?
I fixed your code to print
@0161748
Black, Terel
This is what I understood that you wanted. If it was something else, edit your comment being more specific, please.
.text
main:
li $v0, 11 #Load command to print characters in v0 register
la $a0, 64 #Load character '@' into 4 register
syscall
sub $v0, $v0, 10 #Subract from v0 to get 1, command to print integers
sub $a0, $a0, 64 # sub from $a0 to print 0
syscall
addi $a0, $zero, 1 #Make 4 register store 1
syscall
addi $a0, $zero, 6 #Make 4th register store 6
syscall
sub $a0, $a0, 5 #Make 4th register store 1
syscall
addi $a0, $a0, 6 #Make 4th register store 7
syscall
sub $a0, $a0, 3 #Make 4th register store 4
syscall
addi $a0, $a0, 4 #Make 4th register store 8
syscall
addi $v0, $v0, 10 #Print out char again
addi $a0, $zero, 10 #Print out new line (ASCII 10)
syscall
addi $a0, $zero, 66 #Store 'B'
syscall
addi $a0, $zero, 108 #Store 'l'
syscall
addi $a0, $zero, 97 #Store 'a'
syscall
addi $a0, $zero, 99 #Store 'c'
syscall
addi $a0, $zero, 107 #Store 'k'
syscall
addi $a0, $zero, 44 #Store ','
syscall
addi $a0, $zero, 32 #Store space ' '
syscall
addi $a0, $zero, 84 #Store 'T'
syscall
addi $a0, $zero, 101 #Store 'e'
syscall
addi $a0, $zero, 114 #Store 'r'
syscall
addi $a0, $zero, 101 #Restore 'e'
syscall
addi $a0, $zero, 108 #Store 'l'
syscall
sub $a0, $a0, 98 #Start new line
syscall
sub $v0, $v0, 1 #Store exit commmand in v0
syscall
User contributions licensed under CC BY-SA 3.0