如何解决MIPS 汇编程序语法错误
我正在编写一个 MIPS 程序,用于在 MARS 4.5 上输入一个数字并打印 N,N-1,N-2,...,1
我的代码看起来逻辑正确,但语法很弱。
问题是程序不工作:
- 输入:3
- 预期:321
- 实际:“--程序运行完毕(从底部掉下来)--
帮我解决:
.text
.data
msg: .ascii "Enter a number: "
msg1: .ascii "Final result: "
.globl main
main:
# Print the msg
li $v0,4 # $v0 code 4 mean syscall print an string
la $a0,msg # la = load address of the msg
syscall # calling
# Get number from keybroad
li $v0,5 # $v0 code 5 mean read integer
syscall # calling
move $t0,$v0 # store number to $t0
# Calling the callee (function for print 1,2,3,..,Number)
jal function
# Function for print N,1
function:
li $v0,1 # Calling a print
move $a0,$t0 # Store current number in $a0
syscall
sub $t0,$t0,1 # Number = number - 1 after print (t0 = t0 - 1)
beq $t0,1,exit: # If number == 1 -> exit
j function # Calling
exit:
# Exit program
li $v0,10
syscall
谢谢大家。
解决方法
最终答案:
.data
msg: .asciiz "Enter a number: "
msg1: .asciiz "Final result: "
char: .asciiz ","
.text
.globl main
main:
# Print the msg
li $v0,4 # $v0 code 4 mean syscall print an string
la $a0,msg # la = load address of the msg
syscall # calling
# Get number from keybroad
li $v0,5 # $v0 code 5 mean read integer
syscall # calling
move $t0,$v0 # store number to $t0
# Print the msg
li $v0,msg1 # la = load address of the msg
syscall
# Calling the callee (function for print 1,2,3,..,Number)
jal function
# Function for print N,N-1,...,1
function:
li $v0,1 # Calling a print
move $a0,$t0 # Store current number in $a0
syscall
sub $t0,$t0,1 # Number = number - 1 after print (t0 = t0 - 1)
li $t3,0
beq $t0,$t3,exit # If number == 1 -> exit
li $v0,char # la = load address of the msg
syscall
j function # Calling
exit:
# Exit program
li $v0,10
syscall
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。