Я работал над этим часами и не могу понять.Предполагается, что пользователь должен ввести строку и два символа, а затем программа должна заменить любой экземпляр первого символа вторым.
ПРИМЕР
Введитестрока: String
Введите символ: t
Введите другой символ: p
Ваше новое слово: Spring
Вот мой коддо сих пор (на ассемблере):
.data
userStr: .space 50
ch1: .space 1
ch2: .space 1
str: .asciiz "Please enter a string: "
char1: .asciiz "\nEnter a character: "
char2: .asciiz "\nEnter a replacement character: "
result1: .asciiz "\nOriginal String: "
result2: .asciiz "\nResult String: "
result3: .asciiz " Substitute "
result4: .asciiz " --> "
tester: .asciiz "\nCharacter is: "
tester2: .asciiz "\nCharacter 2 is: "
.text
.globl main
main:
la $a0, str # Prompt to enter a string
li $v0, 4
syscall
la $a0, userStr # input string is stored in 'userStr'
li $v0, 8
syscall # Calls the operating system
li $v0, 4
la $a0, char1 # Prints prompt to enter a character
syscall
la $a0, ch1 # Stores character as ch1
li $v0, 8
syscall # Calls the operating system
li $v0, 4
la $a0, char2 # Prints prompt to enter a character
syscall
la $a0, ch1 # Stores second character as ch2
li $v0, 8
syscall
la $a0, tester # print "Character is: "
li $v0, 4
syscall
la $a0,ch1 # print <character>
li $v0, 4
syscall
la $a0, tester2 # print "Character is: "
li $v0, 4
syscall
la $a0,ch2 # print <character>
li $v0, 4
syscall
li $t1,0 # $t1 is the index of the original string
li $t2,0 # $t2 is the counter
#lb $t3,ch1 # $t3 holds char1
#lb $t4,ch2 # $t4 holds char2
la $a0, userStr # print <original string>
li $v0, 4
syscall
la $a0, tester # print "Character is: "
li $v0, 4
syscall
la $a0,ch1 # print <character>
li $v0, 4
syscall
loop: lb $t0, userStr($t1) # $t0 holds the specific char from the string
beqz $t0,results # checks for end of string (null)
bne $t0,$t3,inc # compares char1 to char at index of string; increments index regardless of match
move $t0, $t4 # if both chars match, replace char1 with char2
inc: add $t1,$t1,1 # also, index +1
j loop # loop again
(я запускаю это на PCSPIM. Я очень плохо знаком с ассемблером. Обычно я программирую на C или Java)
Результаты говорят о том, что мой первый персонаж - р, а у меня нет второго.Оригинальная строка не затронута все же.Я сейчас программирую символы как строки, потому что я думал, что это может помочь, но это не так.Любая помощь в этом была бы очень признательна!