2015-01-26 1 views
1

당신의 이름을 물어보고 줄을 인쇄하는 MIPS 프로그램을 작성 중입니다. 안녕하세요? 그러나 내 코드는 ...MIPS 문자열 뒤에 가변 변수를 인쇄하십시오.

#Program that fulfills the requirements of COS250 lab 1 
#Nick Gilbert 

.data #Section that declares variables for program 
firstPromptString: .asciiz  "What is your name: " 
secondPromptString: .asciiz  "Enter width: " 
thirdPromptString: .asciiz  "Enter length: " 

name:   .space  20 

firstOutStringOne:  .asciiz  "Hi " 
firstOutStringTwo: .asciiz  ", how are you?" 
secondOutString:  .asciiz  "The perimeter is ____" 
thirdOutString:  .asciiz  "The area is _____" 

.text #Section that declares methods for program 
main: 
    #Printing string asking for a name 
     la $a0, firstPromptString #address of the string to print 
     li $v0, 4 #Loads system call code for printing a string into $v0 so syscall can execute it 
     syscall #call to print the prompt. register $v0 will have what syscall is, $a0-$a3 contain args for syscall if needed 

     #Prompting user for response and storing response 
     la $a0, name 
     li $v0, 8 #System call code for reading a string 
     li $a1, 20 
     syscall 

     #Printing response to name 
     la $a0, firstOutStringOne 
     li $v0, 4 #System call code for printing a string 
     syscall 

     la $a0, name 
     li $v0, 4 #System call code for printing a string 
     syscall 

     la $a0, firstOutStringTwo 
     li $v0, 4 #System call code for printing a string 
     syscall 

인쇄 "안녕하세요"다음에 "어떻게 지내세요?" 메시지가 한 줄에 있어야합니다.

답변

1

내가 알 수있는 한, '\n' (줄 바꿈)은 사용자 입력에서옵니다.
프로그램에서 "What is your name: "을 인쇄 한 후 사용자 이름 을 입력하고 반품을 입력하여 입력합니다. 그러면 버퍼의 이름 뒤에 '\n'이옵니다. 버퍼가 연속적으로 인쇄되면 개행 문자가 함께 인쇄됩니다. 이를 방지하려면 '\0' (일명 문자열 터미네이터)로 바꿔야합니다(). 따라서 memchr() 또는 strchr()과 같은 함수가 필요하며 '\n'을 찾아 교체하십시오.

+0

예. 그리고 기성 함수에 대한 액세스 권한이 없으므로 원하는 루틴을 프로그램 할 수 있습니다. 문자열의 각 문자에 대해 == '0'이면 끝나십시오. == '\ n'이면 '0'으로 바꾸고 끝까지 이동하십시오. 그렇지 않으면 포인터를 증가시키고 다음 반복으로 이동합니다. –