我正在尝试取一个用户给定的号码,然后该号码应该被翻译成字母到某个字母。防爆。 1 = A
.data
Prompt1: .asciiz "Enter the value of n here: "
Prompt2: .asciiz "The Letter is: "
Prompt3: .asciiz "?"
.globl main
.text
main:
li $v0, 4
la $a0, Prompt1
syscall
li $v0, 5
syscall
blez $v0, end
li $t1, 64
add $a0, $t1, $v0
syscall
li $v0, 4
la $a0, Prompt2
syscall
li $v0, 1
move $a0, $t0
syscall
end:
li $v0, 4
la $a0, Prompt3
syscall
li $v0, 10
syscall
非常感谢任何帮助
答案 0 :(得分:1)
这里有很多关于系统调用的正确参数的混淆。我建议您阅读文档here。
但是,应该注意的是,这实际上是一个非常简单的问题,不应该需要循环。
考虑以下伪代码:
$a0 = getInt();
printChar('@' + $a0);
如果您对此为何起作用感到困惑,我建议您查看ASCII chart。
您的尝试更正可能是:
.data
Prompt1: .asciiz "Enter the value of n here: "
Prompt2: .asciiz "The Letter is: "
Prompt3: .asciiz "?\n"
.globl main
.text
main:
#print prompt 1
li $v0, 4
la $a0, Prompt1
syscall
#get N
li $v0, 5
syscall
blez $v0, end
move $t8, $v0 #store N in $t8
#print prompt2
li $v0, 4
la $a0, Prompt2
syscall
#print character equivalent
li $v0, 4
li $t1, '@'
add $a0, $t1, $t8
li $v0, 11
syscall
#print ?
li $v0, 4
la $a0, Prompt3
syscall
end:
li $v0, 10
syscall