如何在MIPS中输出带逗号空格分隔的数组元素?
问题:MIPS数组输出中,如何给逗号后添加空格?
期望输出格式:
Encrypted: 1, 2, 3, 4, 5, 6, 7
当前实现的输出(逗号后无空格):
Encrypted: 1,2,3,4,5,6,7
打印部分的代码片段:
la $a0,str1 li $v0,4 syscall li $a1,10 li $s0,0 la $a3,array addi $t5,$a1,-1
解决方法
核心逻辑是给除最后一个元素外的每个元素,添加「逗号+空格」的后缀,具体操作如下:
- 定义逗号加空格的字符串
在代码的.data数据段中新增:
comma_space: .asciiz ", "
- 修改打印循环的后缀逻辑
遍历数组时,每次打印完元素后,判断当前索引是否小于$t5(即不是最后一个元素),如果是则打印comma_space字符串:
loop: # 加载并打印当前数组元素 lw $a0, 0($a3) li $v0, 1 syscall # 判断是否为最后一个元素,是则跳过后缀打印 bge $s0, $t5, end_loop # 打印逗号加空格 la $a0, comma_space li $v0, 4 syscall # 更新索引与数组指针 addi $s0, $s0, 1 addi $a3, $a3, 4 j loop end_loop: # 可在此添加换行、程序退出等操作 li $v0, 10 syscall
如果之前你是用单独的逗号字符串(.asciiz ","),直接替换成", "也能产生空格,但会在最后一个元素后多打一个后缀,因此必须保留「判断是否为最后一个元素」的逻辑,避免多余的后缀。
内容的提问来源于stack exchange,提问作者Yokurt321
相关产品推荐
相关产品推荐

