该程序要求用户输入一个整数,然后跳转到check511
标签。在那里它检查给定的数字是大于还是小于511
。
如果大于511
,则返回1
,否则返回0
。
在此之后,它返回Print
标签并给出结果。我使用两个寄存器$v0
和$v1
完成了此操作。
我想知道,有没有办法可以仅使用$v0
?
.data
prompt: .asciiz "Enter a Integer\n"
result: .asciiz "The result is "
.text
.globl main
main:
# prompt the user for Integer
li $v0, 4
la $a0, prompt
syscall
# getting integer from the user
li $v0, 5
syscall
add $a0, $v0, $zero #putting the input in $a
jal check511 #jump to procedure check511
Print:
#print result statement
li $v0, 4
la $a0, result
syscall
# Print answer
li $v0, 1
addi $a0, $v1, 0
syscall
#exit program
li $v0, 10
syscall
check511:
bgt $a0, 511, Else #branch to else is > 511
addi $v1, $zero, 0
j Print
Else:
addi $v1, $zero, 1
j Print