MIPS中的过程和系统调用

时间:2015-11-04 13:02:46

标签: assembly mips system-calls procedures mips32

该程序要求用户输入一个整数,然后跳转到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

0 个答案:

没有答案