키보드의 입력 문자열에서 공백 문자와 함께 대문자와 소문자가 모두 나타나는 횟수를 계산하려고합니다.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)
나는 확실하지 않다 :
내 psuedocode이의 라인을 따라 무언가이다.
.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' 없음) 만 사용하여 C에서 작동중인 구현을 작성하십시오. –