计算机体系结构和组织MIPS语言

时间:2020-05-09 23:10:32

标签: mips

我在一项作业中遇到了麻烦,我无法编写它。我需要编写一个程序,该程序读取两个字符串,然后将这两个字符串连接到第三个字符串中,并输出第三个字符串。我可以单独进行连接部分,也可以单独进行字符串读取,但是我不知道如何在一个程序中同时完成它们。谁能帮忙吗?

这是代码,我在网上找到了它,但是它是用于连接两个字符串而不读取它们的,所以我尝试对其进行编辑,以便它可以读取两个字符串,但是不起作用。

    .data        
    str1: .space 50

    str2: .space 50

    result: .space 100

     .text

    la $a0,result# get address of output

    li $v0,8

    la $a1,str1 # pass address of str1

    li $a1,100

    syscall

     li $v0,8

     la $a2,str2 # pass address of str2

     li $a2,100

     syscall

     jal conc

     # output the concatenated string

     la $a0,result

     li $v0,4

     syscall

    # BUG: no exit program

    li $v0,10

    syscall

   # conc -- concatenate strings char-by-char
   #
   # arguments:

   # a0 -- output pointer

   # a1 -- pointer to string to concatenate

   # a2 -- pointer to string to concatenate

    conc:

    lb $t1,0($a1) # get string char

    beqz $t1,conc_no1st # EOS? if yes, skip

    addi $a1,$a1,1 # advance 1st source pointer

    sb $t1,0($a0) # add to output

    addi $a0,$a0,1 # advance output pointer

    conc_no1st:

    lb $t2,0($a2) # add to output

    beqz $t2,conc_no2nd # EOS? if yes, skip

    addi $a2,$a2,1 # advance 2nd source pointer

    sb $t2,0($a0) # add to output


    addi $a0,$a0,1 # advance output pointer

    conc_no2nd:

    or $t1,$t1,$t2 # both chars EOS?

    bnez $t1,conc # no, loop

    sb $zero,0($a0) # store final EOS

    jr $ra

0 个答案:

没有答案
相关问题