Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 第一个字符和最后一个字符总是相等的_Assembly_Mips_Mips32 - Fatal编程技术网

Assembly 第一个字符和最后一个字符总是相等的

Assembly 第一个字符和最后一个字符总是相等的,assembly,mips,mips32,Assembly,Mips,Mips32,这是我的简单程序,它应该从中获取字符串。数据将每个字符转换为大写,最后打印字符串 .data s: .asciiz "wassup" .text la $t0, s # get adress of text add $t1, $zero, $t0 # first adress text_loop: lb $t2 , 0($t1) # first char beqz $t2,

这是我的简单程序,它应该从中获取字符串。数据将每个字符转换为大写,最后打印字符串

.data
    s:  .asciiz     "wassup"

.text
    la  $t0, s          # get adress of text
    add $t1, $zero, $t0     # first adress

text_loop:
    lb  $t2 , 0($t1)        # first char
    beqz    $t2, end_text       # quit loop if string ends
    sub $t2, $t2, 32
    sb  $t2, s
    add $t1, $t1, 1     # next adress
    j   text_loop       # continue loop

end_text:
    
    li  $v0, 4
    la  $a0, s
    syscall

    li  $v0, 10     
    syscall     
输出:

只更改第一个字符,并始终将其转换为最后一个字符


我学习汇编已经两周了,因此非常感谢您的帮助。

查看您的代码,您不会将其存储到加载的同一位置

该行:

    sb  $t2, s
问题出在哪里

您总是将修改后的字符存储到字符串的开头。该行应反映负载:

    lb  $t2 , 0($t1)
并成为:

    sb  $t2, 0($t1)

查看您的代码,您不会将其存储到加载的相同位置

该行:

    sb  $t2, s
问题出在哪里

您总是将修改后的字符存储到字符串的开头。该行应反映负载:

    lb  $t2 , 0($t1)
并成为:

    sb  $t2, 0($t1)