程序概述:输入一个数字1-26,也给对应的大写字母数字
我的逻辑:使用带有字符的.byte 设置一个数组类型的“结构”。有一个计数器通过数组。一旦计数器与输入数字相等,就打印出数组中的当前点。
这是一个家庭作业,所以我不是试图“轻推”答案,但指导会非常有帮助。
这就是为什么我认为它出错的原因。当我将 1 添加到地址时,它出于某种原因给了我一个错误。但是当我添加 4 时它工作正常吗?一个字符应该只需要 1 位正确吗?我知道当索引数组中整数的地址时,它应该是 4。
.data
prompt: .asciiz "Enter the value of n here: "
larray: .byte 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'
.globl main
.text
main:
la $t1, larray # Loads Array addresss into $t1
li $v0, 4 # System call for Print String
la $a0, prompt # Load address of prompt into $a0
syscall # Print the prompt message
li $v0, 5 # System call code for Read Integer
syscall # Read N into $v0
move $t3, $v0
li $t0, 0 # Loads int 0 into $t0
loop:
beq $t0, $t3, end # Break
lw $a0, ($t1) # Loads current pointer
addi $t0, $t0, 1 # Adds one to $t0 (Counting up +1)
addi $t1, $t1, 1 # Advances to next address in the array
j loop
end:
li $v0, 11 # Print at current index
syscall
li $v0, 10 # return control to system
syscall
我确实对如何以不同的方式访问字符进行了研究,但我认为我不能以这种方式实现,因为您需要硬编码?链接: 这是我找到的堆栈链接