2013-07-23 5 views
1

여기에 내 코드가 있습니다. 나는 그것이 "안녕, 여기에 입력 :"출력 싶습니다. " 대신에 "안녕하세요, 여기 입력하세요 :"와 "안녕하세요, 여기에 입력하십시오 :"를 인쇄합니다. 어떻게 해결할 수 있습니까?ascii를 사용하여 MIPS32에서 입력을 올바르게 입력하는 방법

  .data 
str_one:  .ascii  "Hi, input here: \n" 
str_two:  .ascii  "Hello, input here: \n" 

      .text 

main:  

    li $v0, 9   #memory allocation syscall 
    li $a0, 12 
    syscall 

    move $s0, $v0   

    li $v0, 4 
    la $a0, str_one  #Prompt string 
    syscall 

    li $v0, 8   #Read string 
    la $a0, ($s0) 
    li $a1, 8 
    syscall 
+0

가능한 중복 [뭐죠 .ascii와 대 .asciiz의 차이 (http://stackoverflow.com/questions/7783044 :

str_one: .asciiz "Hi, input here: \n" str_two: .asciiz "Hello, input here: \n" 

다른 방법으로는, 제로 명시를 사용/whats-the-difference-between-asciiz-vs-ascii) –

답변

1

문자열을 널 종료하지 않았습니다. 대신 .asciiz를 사용의

str_one:  .ascii  "Hi, input here: \n" 
       .byte  0 
str_two:  .ascii  "Hello, input here: \n" 
       .byte  0 
+0

와우, 정말 고마워. .asciiz가 작동합니다. 그러나 null-termination은 어떻게 작동합니까? 코드는 어떻게 생겼을까요? –

+0

어떤 코드가 생겼습니까? '.asciiz'를 사용하면 리터럴 0 바이트가 문자열 끝에 메모리에 저장됩니다. 여러분이 호출하는 시스템 호출은 0 바이트가 문자열의 끝을 나타낼 것으로 예상합니다. –

+0

ok하지만 명시 적 0을 추가하면 트릭을 수행한다고 어떻게 알았습니까? 정확히 어디에 추가할까요? 이런 식으로 보일까요? –

관련 문제