如何解决星形图案打印效果不佳
我想以这种方式打印星形图案:
****** ***** **** *** ** *
但它是这样打印的:
****** ****** ****** ****** ****** ******
有人可以帮我吗?这是我的代码:
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,%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,0($fp)
addiu $2,1
sw $2,0($fp)
.L2:
lw $2,0($fp)
slt $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,48
j $31
nop
解决方法
嘿,您可能在 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,%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,0($fp)
addiu $2,1
sw $2,0($fp)
.L2:
lw $2,6
bne $2,.L5
nop
nop
move $sp,$fp
ld $31,40($sp)
ld $fp,32($sp)
ld $28,24($sp)
daddiu $sp,48
j $31
nop
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。