问题描述
我有一个计划练习需要帮助。该程序是通过RARS 1.3创建的。 到目前为止,这是我创建的一次读取和输入一个字符串的代码。该程序需要在字符串的所有双辅音之间放置一个(-)。为此,我需要遍历该字符串以搜索双辅音,并使用第二个字符串来打印结果。
.global _start # Provide program starting address to linker
_start:
la t1,sourcestring
li t2,10 #enter
loop:
addi a7,x0,12 #readchar
ecall
# input is in a0
sb a0,0(t1)
addi t1,t1,1
bne a0,t2,loop
sb x0,0(t1)
.data
sourcestring: .word 30 #30
targetstring: .word 40 #40
解决方法
您的代码做了一些修改。
.global _start # Provide program starting address to linker
_start:
la t1,sourcestring
li t2,10 #enter
li t3,65 #A
li t4,45 #-
li t5,0xffff #initilaize t5 to something readchar is not supposed to return.
j label1
loop:
mv t5,a0 #put old a0 value in t5
label1:
addi a7,x0,12 #readchar
ecall
# input is in a0
sb a0,0(t1)
addi t1,t1,1
beq a0,t3,loop
bne a0,t5,label2 #if a0 is different from old a0 value dont add -
sb t4,1
label2:
bne a0,t2,loop
sb x0,0(t1)
.data
sourcestring: .word 30 #30
targetstring: .word 40 #40
在此示例中,如果我们发现两次相同的字符(A除外),则添加-。并直接在sourcestring中进行修改。如果需要,可以对其进行修改以用targetstring编写。
请注意,示例字符串中的tagetstring和sourcering只是一个字(4个字节),取决于您的字符串,您可以超出此大小,并覆盖您不想覆盖的数据。
祝您修改顺利。