【问题标题】:STAR PATTERN NOT PRINTING WELL星形图案打印不好
【发布时间】:2021-03-27 14:35:29
【问题描述】:

我想这样打印星星图案:

****** ***** **** *** ** *

但它是这样打印的:

****** ****** ****** ****** ****** ******

有人可以帮助我吗?这是我的代码:

main:
        daddiu  $sp,$sp,-48
        sd      $31,40($sp)
        sd      $fp,32($sp)
        sd      $28,24($sp)
        move    $fp,$sp
        lui     $28,%hi(%neg(%gp_rel(main)))
        daddu   $28,$28,$25
        daddiu  $28,$28,%lo(%neg(%gp_rel(main)))
        sw      $0,0($fp)
        b       .L2
        nop

.L5:
        li      $2,6                        # 0x6
        sw      $2,4($fp)
        b       .L3
        nop

.L4:
        li      $4,42                 # 0x2a
        ld      $2,%call16(putchar)($28)
        move    $25,$2
        nop

        lw      $2,4($fp)
        addiu   $2,$2,-1
        sw      $2,4($fp)
.L3:
        lw      $2,4($fp)
        bgez    $2,.L4
        nop

        li      $4,10                 # 0xa
        ld      $2,%call16(putchar)($28)
        move    $25,$2
        nop

        lw      $2,0($fp)
        addiu   $2,$2,1
        sw      $2,0($fp)
.L2:
        lw      $2,0($fp)
        slt     $2,$2,6
        bne     $2,$0,.L5
        nop

        nop
        move    $sp,$fp
        ld      $31,40($sp)
        ld      $fp,32($sp)
        ld      $28,24($sp)
        daddiu  $sp,$sp,48
        j       $31
        nop

【问题讨论】:

  • ????????????请在所有大写字母上放轻松。它被认为是大喊大叫,它是ANNOYING
  • 第二次标记 spasmming。让我们大喊一声:请停止!

标签: assembly mips instructions


【解决方案1】:

嘿,可能是你在 mips 中设置循环时出错了
您没有正确初始化内部循环
如果您将 c 程序转换为 mips 而不是正确设置内循环的限制

main:
        daddiu  $sp,$sp,-48
        sd      $31,40($sp)
        sd      $fp,32($sp)
        sd      $28,24($sp)
        move    $fp,$sp
        lui     $28,%hi(%neg(%gp_rel(main)))
        daddu   $28,$28,$25
        daddiu  $28,$28,%lo(%neg(%gp_rel(main)))
        sw      $0,0($fp)
        b       .L2
        nop

.L5:
        li      $2,5                        # 0x5
        sw      $2,4($fp)
        b       .L3
        nop

.L4:
        li      $4,42                 # 0x2a
        ld      $2,%call16(putchar)($28)
        move    $25,$2
        nop

        lw      $2,4($fp)
        addiu   $2,$2,-1
        sw      $2,4($fp)
.L3:
        lw      $3,4($fp)
        lw      $2,0($fp)
        slt     $2,$3,$2
        beq     $2,$0,.L4
        nop

        li      $4,10                 # 0xa
        ld      $2,%call16(putchar)($28)
        move    $25,$2
        nop

        lw      $2,0($fp)
        addiu   $2,$2,1
        sw      $2,0($fp)
.L2:
        lw      $2,0($fp)
        slt     $2,$2,6
        bne     $2,$0,.L5
        nop

        nop
        move    $sp,$fp
        ld      $31,40($sp)
        ld      $fp,32($sp)
        ld      $28,24($sp)
        daddiu  $sp,$sp,48
        j       $31
        nop

【讨论】:

  • 几个不同的新用户对新旧 MIPS 问题的大量答案是怎么回事?班级是否有作业要求每个人回答有关 Stack Overflow 或其他问题的 MIPS 问题?
猜你喜欢
  • 1970-01-01
  • 2014-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多