assembly - 在 MIPS 中实现 toUpper 函数

标签 assembly converter mips toupper

所以我试图在 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 

最佳答案

最好放置

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:
...

关于assembly - 在 MIPS 中实现 toUpper 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14990112/

相关文章:

python - 字节到人类可读,然后返回。无数据丢失

.net - 如何在运行时动态更改 MultiBinding(或任何其他)资源的 ConverterParameter(或任何)属性?

java - Actionscript 到 Java 源转换器

floating-point - MIPS:除法算法(IEEE-754 格式的有效数除法)对最后 4-5 位 (LSB) 给出了错误的答案

assembly - 从 MIPS 程序集中的用户输入读取文件名

assembly - 汇编中的多行注释

assembly - 哪种类型的汇编跳转指令最有用?

assembly - 蛇形组件 8086 : not moving correctly

使用数组将 C 代码转换为 MIPS 汇编语言

linux - 从未对齐 RSP 的函数调用时,glibc scanf 出现段错误