我在这里试图颠倒这个字符串,但我真的卡住了。
我从变量letter和length中取出字符串,抛出代码,将它们发送到reversing_loop,并像代码中那样做,如果计数器达到与长度相同的值,则退出并打印结果。我甚至不确定这两行
sw $a2, result
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发布于 2020-01-16 20:57:08
我最终完成了代码,它可以正常运行。
.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 mainhttps://stackoverflow.com/questions/59391433
复制相似问题