在 MIPS 中打印字符串数组

问题描述 投票:0回答:0

我正在尝试将此 C 代码转换为 MIPS 以用于计算机体系结构作业:

mes[] = ["January", "February", "March", ..., "December"];

for(int i==0; i<12; 1++)
{
    printf("%d\n", &mes[i]);
    return 0;
}

预期结果是:

January
February
March
.
.
.
December

我的问题背后的想法是,我需要在 MIPS 中定义数组,并使用 for 循环迭代以打印一个月的行,并在 i 计数器大于 12 时结束循环。以下是 MIPS 代码 I写到此为止。月份是西班牙语和大部分评论,所以我对此表示歉意,但想法是一样的:

.data 
    blank: .asciiz "\n"
    
    Enero: .asciiz "Enero"
    Febrero: .asciiz "Febrero"
    Marzo: .asciiz "Marzo"
    Abril: .asciiz "Abril"
    Mayo: .asciiz "Mayo"
    Junio: .asciiz "Junio"
    Julio: .asciiz "Julio"
    Agosto: .asciiz "Agosto"
    Setiembre: .asciiz "Setiembre"
    Octubre: .asciiz "Octubre"
    Noviembre: .asciiz "Noviembre"
    Diciembre: .asciiz "Diciembre"
    
    mes: .word Enero,
           Febrero,
           Marzo,
           Abril,
           Mayo,
           Junio,
           Julio,
           Agosto,
           Setiembre,
           Octubre,
           Noviembre,
           Diciembre
.text

    addi $t0, $zero, 0 # i=0
    addi $t1, $zero, 48
    la $t2, mes
     
    # A se mapea en $s0
    
    for:
        slt $t3, $t0, $t1
        bne $t3, 1, endFor
        
        # Codigo del for
        
        #sll $t2, $t0, 2 # ix4
        #add $t2, $s0, 1 # A + ix4
        lw $t3, 0($t2) # $t3 = A[i] 
        
        # Codigo del for
        
        addi $v0, $zero, 4
        add $a0, $zero, $t3
        syscall
        
        addi $v0, $zero, 4
        la $a0, blank
        syscall
        
        addi $t0, $t0, 4 # i = i + 4
        
        j for
        
    endFor:
        addi $v0, $zero, 10
        syscall

我的代码中可能有很多错误,但我只是到了不知道还能做什么的地步,在此先感谢!! :)

arrays assembly calendar mips mars-simulator
© www.soinside.com 2019 - 2024. All rights reserved.