我在这里尝试反转此字符串,但我确实被卡住了。 我从可变字母中提取字符串,然后将长度抛出代码,将它们发送到reversing_loop并按照代码中的方式进行操作(如果计数器达到与长度相同) 进入“退出”并打印结果,我甚至不确定这两行 sw $ a2,结果 la $ a0,$ a2
请帮助。
.data
letters: .asciiz "abcd"
result: .asciiz ""
.text
.globl main
main:
la $a0, letters # reading chars letters
li $a1, 4 # store length
li $a3, 0 # counter
add $a0, $a0, $a1 # address of last char
reversing_loop:
beq $a3, $a1, Exit
lb $t0,($a0)
sb $t0,($a2)
addi $a0,$a0, -1 # i -=1
addi $a2,$a2, 1 # move address
addi $a3, $a3, 1 # increment counter
j reversing_loop
Exit:
sw $a2, result
la $a0 , $a2
li $v0 , 4
syscall
li $v0 , 10
syscall
.end main
答案 0 :(得分:0)
我终于完成了代码,它可以正常运行。
.data
letters: .byte 'a','b','c','d','e'
result: .asciiz ""
.text
.globl main
main:
la $a0, letters # reading chars letters
li $a1, 5 # store length
la $a2 , result # intialize a2
li $a3, 0 # counter
addi $a0, $a0, 4 # address of last char
reversing_loop:
beq $a3, $a1, Exit
lb $t0, 0($a0)
sb $t0, 0($a2)
addi $a0,$a0, -1 # i -=1
addi $a2,$a2, 1 # move address
addi $a3, $a3, 1 # increment counter
j reversing_loop
Exit:
addi $a2,$a2,-5
add $a0,$0, $a2
li $v0 , 4
syscall
li $v0 , 10
syscall
.end main