Mips - 接受用户给定的整数并返回与该字母对应的字母表中的字母,a?如果它在1 - 26之外

时间:2013-09-17 02:27:33

标签: mips

我正在尝试取一个用户给定的号码,然后该号码应该被翻译成字母到某个字母。防爆。 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

非常感谢任何帮助

1 个答案:

答案 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