2017-04-22 8 views
-1

두 가지 기능을 만드는 데 도움이 필요합니다. 첫 번째 함수는 단어의 길이를 찾아야합니다. 입력의 경우 함수는 단어의 첫 번째 문자의 주소를 가져 와서 단어의 길이를 반환합니다 (단어는 배열에 있음).단어의 길이를 찾는 Mips Assembley의 두 가지 기능 임베드

두 번째 함수는 평균보다 많은 문자 (배열의 모든 문자부터 계산)가 포함 된 단어를 삭제해야하므로 단어의 평균은 4 자 이상이고 4자를 삭제해야합니다.

미리 감사드립니다.

UPDATE : prntscr.com/ezjylq

+0

당신은 당신이 여기 조금 도움이 되나요 일부 코드 – Adam

+0

내가 어떻게 함수의 입구 (각 단어의 모든 1 문자)을 만드는 아이디어를 가지고 있겠지 – Foronisus

답변

0

나는이 도움말을 희망 당신에게 두 가지 예제 코드를 제공합니다.

임의의 ASCII 문자열의 길이를 찾는이 코드

주어진 문자열 :

에 "Hello \ n"

출력 :

6

.data 
    message: .asciiz "Hello\n" 
.text 

main: 
    li $t1,0 
    la $t0,message   #load message to t0 

loop: 
    lb $a0,0($t0)  #load one byte of t0 to a0 
    beqz $a0,done   #branch if a0 = 0 
    addi $t0,$t0,1   #increament t0 
    addi $t1,$t1,1   #increament the counter t1 
    j  loop 
done: 

    li $v0,1   #print an integer 
    add $a0, $0,$t1  #add the counter to a0 
    syscall 

    li $v0,10   #exit program 
    syscall 

"Hello World"를 인쇄하는 기능입니다.

.data 
message: .asciiz "Hello World.\n" 

.text 
main: 

jal displayMessage 

li $v0,10  #exit function 
syscall 


displayMessage: 
li $v0,4  #printing string 
la $a0,message #save the message to argument $a0 
syscall 

jr $ra 
+0

을 추가 할 수 있지만하시기 바랍니다 수있는자가 재판을 어떻게 얼마나 내가 옳고 그른지 아니면 내가 바꿔야 할지를 말해주는 아이디어이다. 배열의 끝에 '0'(또는 null)이 될 때까지 전체 배열을 통과하는 while 루프를 만든다. 이제는 루프 내에서 단어 및 문자를 계산하고 평균 문자 수를 반환하는 함수를 호출해야합니다. 그런 다음 평균 반복 문자보다 많은 단어를 삭제하기 위해 전체 배열을 다시 통과하는 새로운 while 루프가 필요합니다. .. – Foronisus

+0

첫 번째 코드는 '0'또는 null에 도달 할 때까지 배열을 통해 반복됩니다. 첫 번째 예제 코드에 더 가까이 다가 가면 원하는대로 정확하게 수행 할 수 있습니다. 설명의 다른 부분을 시도해보아야합니다. 구현하는 것도 가능하다고 생각해야합니다. – Adam

+0

예, 읽기 쉽습니다. 이제 단어/문자 카운터에 대해 (아래) beqz 함수를 추가 할 수 있습니까? – Foronisus