キーボードから入力された文字列から、大文字と小文字の両方の空白文字とともに表示される回数をカウントしようとしています。MIPS - 各小文字、大文字、および空白の度数
私は、ASCIIではa-zが97-122であり、A-Zは65-90であることを理解しています。私はアセンブリでこのアルゴリズムを実装する方法がわかりません。私は非常に新しいのでコンセプトは私を混乱させます。私はそれが問題にアプローチするための方法であるかどうかわからないのです
// Uppercase
array[0] = -65
if (character read from string > 64) {
if (character read from string < 91) {
increment array[i] based on character
}
}
// Print out integers stored in array (the frequency)
:
私の擬似コードは、の線に沿って何かです。
.data
prompt: .asciiz "Please enter a string: \n"
userString: .space 104
occLow: .space 104
occUpp: .space 104
newLine: .asciiz "\n"
#######################
# t0 = string
# t1 = char being looked at
# t2 = counter
# s0 = array lower (occLow)
# s1 = array upper (occUpp)
#######################
.text
main: li $v0, 4
la $a0, prompt # Prompts the user for string
syscall
li $v0, 8 # Save string to $a0
la $a0, userString
move $t0, $a0 # Move $a0 to $t0
syscall
test: lb $t1, 0($t0) # Load each individual character
beqz $t1, end # If it is null, end program
addi $t0, $t0, 1 # Next char
beq $t1, 32, space # If the character is a space
blt $t1, 91, upper # Uppercase character, 90 = 'Z'
bgt $t1, 96, lower # Lowercase character
b test
upper1: bgt $t1, 64, upper2 # 65 = 'A'
b test
upper2: # UPPERCASE ADDITIONS HERE
# la $s0, occUpp
# add $t0, $t0, 4
# lw $t1, 0($s0)
# addi $t2, 1
# sw $t1,
疑似コードがあまりにも擬似です。 1) 'goto' 2)単一の代入のみ(例えば' y = 2 * x + z'なし) –