【问题标题】:Implementing toUpper function in MIPS在 MIPS 中实现 toUpper 函数
【发布时间】:2013-02-20 21:18:19
【问题描述】:

所以我试图在 MIPS 中实现一种 toUpper 函数。该函数可以访问两个变量:$a0 是字符串的起始地址,$a1 是字符串的长度。我正在尝试遍历字符串并将其转换为大写。有谁知道我要去哪里错了?

我认为实际上将起始地址中的第一个字符加载到变量中时遇到了麻烦。

to_upper:

    li $t0, 0 #initialize counter  
    li $t1, 0

Loop: 
    addi $t0, $t0, 1

    sgt $t5, $t0, $a1   
    beqi $t5, 1, Done   

    slti $t5, $t1, 97
    beqi $t5, 1, Loop

    sgti $t5,$t1, 122
    beqi $t5, 1, Loop

    subi $t1, $t1, 32

j Loop

    Done:
    jr $ra 

【问题讨论】:

    标签: assembly converter mips toupper


    【解决方案1】:

    最好放置

    addi $t0, $t0, 1
    

    在循环结束时。

    所以,像这样:

    ...
    Loop:
        addi $t5, $a0, $t0
        lb $t6, 0($t5)
        ...set $t6 to upper...
        sb $t6, 0($t5)
        addi $t0, $t0, 1
        blt $t0, $a1, Loop
    Done:
    ...
    

    【讨论】:

      【解决方案2】:

      $a0 未在此代码中的任何地方引用。您需要使用lb$a0 加载值,修改它们,然后将它们存储回来。

      【讨论】:

      • 您需要使用 lb 加载字节。lw 将无法按预期工作。
      猜你喜欢
      • 2014-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-15
      相关资源
      最近更新 更多