如何解决通过汇编RISC-V,当字符串中出现双辅音时,如何打印减号-?
我有一个计划练习需要帮助。该程序是通过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个字节),取决于您的字符串,您可以超出此大小,并覆盖您不想覆盖的数据。
祝您修改顺利。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。