li $a0, '0'
li $v0, 11
syscall
so I have this code to print what is in $a0
In terms of characters being printed out what is the difference
between -1 and 1? When I try to print -1 instead 0, mars just complains about the value.
Is there any mathematical function to handle negative numbers in terms of positive numbers?
Syscall 11 prints one character. The strings "0" and "1" both consist of one character each, but "-1" consists of two characters ('-' and '1').
You could either print -1 as two individual characters:
li $a0, '-'
li $v0, 11 # print_character
syscall
li $a0, '1'
li $v0, 11 # print_character
syscall
Or as a string:
li $v0, 4 # print_string
la $a0, str
syscall
str: .asciiz "-1"
Or as an integer:
li $v0, 1 # print_int
li $a0, -1
syscall