反转字符串并以汇编MIPS语言进行打印

时间:2019-12-18 11:51:28

标签: assembly mips

我在这里尝试反转此字符串,但我确实被卡住了。 我从可变字母中提取字符串,然后将长度抛出代码,将它们发送到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

1 个答案:

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