MIPS .asciiz 第一个和最后一个字符总是相等的
MIPS .asciiz first and last char are always equal
这是我的简单程序,它应该从 .data 中获取字符串,将每个字符转换为大写,最后打印字符串。
.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
输出:
只有第一个字符被改变,它总是被转换成最后一个字符。
我学习汇编已经 2 周了,非常感谢任何帮助。
查看你的代码,你没有存储到你加载的同一个地方。
行:
sb $t2, s
问题所在
您始终将修改后的字符存储到字符串的开头。此行应反映负载:
lb $t2 , 0($t1)
并成为:
sb $t2, 0($t1)
这是我的简单程序,它应该从 .data 中获取字符串,将每个字符转换为大写,最后打印字符串。
.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
输出:
只有第一个字符被改变,它总是被转换成最后一个字符。
我学习汇编已经 2 周了,非常感谢任何帮助。
查看你的代码,你没有存储到你加载的同一个地方。
行:
sb $t2, s
问题所在
您始终将修改后的字符存储到字符串的开头。此行应反映负载:
lb $t2 , 0($t1)
并成为:
sb $t2, 0($t1)