首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用一维阵列在MIPS中打印5×5矩阵

用一维阵列在MIPS中打印5×5矩阵
EN

Stack Overflow用户
提问于 2014-11-07 22:48:28
回答 1查看 2.1K关注 0票数 1
代码语言:javascript
复制
.data

spaceChar: .asciiz  " " 

#array of 26 elements 1,0,0,0,0  elements = 5*5
array: .word 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9
size: .word 25
endl: .asciiz "\n"

.text

main:

lw $t3, size

la $t1, array # get array address

li $t2, 0 # set loop counter

print_loop:

beq $t2, $t3, print_loop_end # check for array end

li $t5,4 #at 4th element I want next line
beq $t5,$t2,newline #checking..

lw $a0, ($t1) # print value at the array pointer

li $v0, 1

syscall

la $a0, spaceChar   # Display a space character between elements
li $v0, 4
syscall


addi $t2, $t2, 1 # advance loop counter

addi $t1, $t1, 4 # advance array pointer

j print_loop # repeat the loop


print_loop_end: 
li $v0,10
syscall

newline:
la $a0,endl
li $v0,4
syscall
j print_loop

I试图在MIPS中打印一个5*5矩阵这是mips中的一个由25个元素组成的一维数组,我正在遍历print_loop中的元素,当它到达我想要做的第四个元素时,但是当我运行这个(MARS 4.5)时,我不知道我在做什么--请帮帮忙

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-07 23:28:42

简短回答:

你在换行线上无穷无尽地循环。

长答案:

问题是

代码语言:javascript
复制
beq $t5, $t2, newline          #checking

一旦您的计数器得到4,它就会一直转到新行。

代码语言:javascript
复制
newline:
la  $a0, endl
li  $v0, 4
syscall
j   print_loop

然后返回到print_loop

代码语言:javascript
复制
print_loop:
beq $t2, $t3, print_loop_end   #check for array end
li  $t5, 4                     #at 4th element I want next line
beq $t5, $t2, newline          #checking

啊哦。我们又回到我们的地盘了!如果您使用逐步调试器(绿色箭头的绿色箭头旁边的绿色箭头运行),您将看到打印第一行,然后无限打印换行符。在我看来,你可以在那之后再加一个标签。

在未来,我建议对每一行进行注释,并将代码划分为完成目标的代码块。例如:

代码语言:javascript
复制
# print value at the array pointer
lw  $a0, ($t1)    # print array[index]
li  $v0, 1        # syscall: print integer
syscall

# print space
la  $a0, spaceChar  # print character " "
li  $v0, 4          # syscall: print string
syscall

这很乏味,但当一切都是用伪代码编写时,它将帮助您发现but。(另外,如果有人对堆栈溢出问题提出MIPS问题,您希望在几年后回答,它会帮助您记住命令的作用!:P)

哦,你可以

代码语言:javascript
复制
beq $t2, 4, newline

而不是

代码语言:javascript
复制
li  $t5, 4
beq $t5, $t2

MIPS可能很棘手。慢慢来,把一切都记录下来。祝好运!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26811394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档