0

我正在尝试获取用户给定的数字,然后将该数字转换为字母表中的某个字母。前任。1 = 一个

    .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

任何帮助将不胜感激

4

1 回答 1

1

关于系统调用的正确参数,这里有一大堆混乱。我建议在这里阅读文档。

但是,应该注意的是,这实际上是一个非常简单的问题,不需要循环。

考虑以下伪代码:

$a0 = getInt();
printChar('@' + $a0);

如果您对它的工作原理感到困惑,我建议您查看ASCII 图表


您的尝试的更正可能是:

.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
于 2013-09-17T02:47:45.867 回答