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)