【发布时间】:2021-03-01 13:04:28
【问题描述】:
我是 MIPS 编码的新手(初学者),这是我从手册中发现的一个练习题。
我尽力为我的用户输入的字符串分配一个堆内存,这样我就可以遍历我的字符串的索引,但我无法弄清楚或继续前进。
有人可以解释并指导我如何从 even 和 odd 索引中检索和打印字符用户使用 MARS 在 MIPS 中输入的字符串?
我在下面发布原始问题以及我尝试的代码。
编写一个 MIPS 程序,提示用户输入一个 16 的字符串 称为
msg的字符。然后使用以下代码实现 循环如下:for(int j = 0; j < 2; j++) { for(int i = 0; i < 8; i++) { print(msg[(i * 2) + j]); } }样本输出:
用户输入:
"Iamhurtverybadly"输出:
"Imuteyalahrvrbdy"
这是我写到现在的:
.data
Ask: .asciiz "Sample Input: \n"
Answer: .asciiz "Sample Output: \n"
.text
li $v0,9 #allocating heap memory
syscall
move $s1,$v0
#print prompt for string,reading and storing string
li $v0,4
la $a0,Ask
syscall
li $v0, 8
la $a0, 0($s1)
move $a1,$s0
syscall
li $t0,0 #i=0
li $t1,0 #j=0
li $t2,2
li $t3,8
loop:
lb $t0,0($s1)
bge $t0,$t2,loop2
bge $t1,$t3,loop3
sll $t0,$t0,1
add $t4,$t0,$t1
addi $t1,$t1,1
j loop
loop3:
addi $t0,$t0,1
j loop
loop2:
li $v0, 4
la $a0, Answer #display result
syscall
li $v0,10
syscall
【问题讨论】:
-
请原谅我在循环中的代码格式