Assembly MIPS ASCII码的顺序不正确

Assembly MIPS ASCII码的顺序不正确,assembly,ascii,mips,Assembly,Ascii,Mips,我在汇编中有以下代码: .data lab_n: .word 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x61, 0x6e, 0x64, 0x6f, 0x20, 0x6f, 0x20, 0x4d, 0x49, 0x50, 0x53, 0x0d count: .word 19 msgtexto: .asciiz "SMP/AC " separator: .asciiz "->" .text main: la

我在汇编中有以下代码:

.data
lab_n:     .word 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x61, 0x6e, 0x64, 0x6f, 0x20, 0x6f, 0x20, 0x4d, 0x49, 0x50, 0x53, 0x0d
count:     .word 19
msgtexto:  .asciiz "SMP/AC "
separator: .asciiz "->"

.text

main:
        la  $a0,msgtexto    # $a0 <- msgtexto
        jal print_string    # print it
        la  $a0,count
        lw  $t0,0($a0)

        li  $a0,0x0A        # $a0 <- '\n'
        jal print_char      # print it

        li  $t1,0           # to be used as a counter
        la  $a1, lab_n
loop:   

        move $a0,$t2
        jal  print_char     # print corresponding char      

        lw    $t2, 0($a1)   
        move  $a0,$t2       # $a0 <- lab_n[i]  , i.e. offset=4*i

        addi  $t1,$t1,1     # decrement counter
        addi  $a1,$a1,4
        blt   $t1,$t0,loop

finish:
        li      $v0, 10     # Exit the program
        syscall



# funções com chamadas ao sistema para imprimir inteiros, caracteres e strings
# (o argumento de entrada é colocado em $a0 antes da chamada da função)

# print_int(int), $4 = $a0 = integer
print_int:
        li $v0,1
        syscall
        jr $ra

# print_char(char), $4 = $a0 = char
print_char:
        li $v0,11
        syscall
        jr $ra


# print_string(char *), $4 = $a0 = string
print_string:
        li $v0,4  
        syscall
        jr $ra
.data
实验室编号:单词0x50、0x72、0x6f、0x67、0x72、0x61、0x6d、0x61、0x6e、0x64、0x6f、0x20、0x6f、0x20、0x4d、0x49、0x50、0x53、0x0d
计数:。字19
msgtexto:.asciiz“SMP/AC”
分隔符:.asciiz“->”
.文本
主要内容:

la$a0,msgtexto#$a0在循环的第一次迭代中,您正在打印在进入循环之前发生在
$t2
中的内容:

move    $a0,$t2         # <- $t2 hasn't been loaded with a value from lab_n yet
jal     print_char      # ..but you still print it

lw  $t2, 0($a1)         # ..and here you finally load a value from lab_n
move    $a0,$t2         

此外,该行上的注释不正确:

addi    $t1,$t1,1   # decrement counter
你在增加计数器


如果输出真的是“SMP/AC Programando o MIPS”(即一行),则不应在循环之前输出换行符

addi    $t1,$t1,1   # decrement counter