2017-09-25 7 views
1

정수가 짝수인지 홀수인지를 결정하는 프로그램을 작성하고 있습니다. 이 프로그램은 사용자에게 정수를 묻는 것으로 시작하고 그 정수가 무엇인지에 따라 "Even"와 "Odd"를 인쇄합니다. If-else 문을 만드는 데 문제가 있습니다.인쇄 문제가있는 MIPS if-else

$ t2 = $ t0이면 "Odd"를 출력하고, 그렇지 않으면 "Even"를 출력해야합니다. 이것은 (even_str = "심지어", 1 $ T1 = 1, $의 T2 = 사용자의 정수 AND'd을 odd_str = "홀수") 나는 지금이 작동하지 않은 코드입니다 :

bne $t2, $t1, L1 
    li $v0, 4 
    la $a0, odd_str 
    syscall 
L1: 
    li $v0, 4 
    la $a0, even_str 
    syscall 

홀수 정수의 출력은 "OddEven"이고 짝수 정수의 출력은 "Even"입니다. 어떤 아이디어가 이것을 고치는 방법? 프로그램이 종료 할 것 "Odd" 문자열을 인쇄하고 syscall 후 아무것도 없기 때문에

+0

코드는 나를 위해 작동하는 것 같습니다. (출력은 정확하지 않지만 코드는 작동합니다). 디버거에서 코드가 작동하는 방식과 결과가 예상과 다른 이유를 확인할 수도 있습니다. 하지만 확실히 작동합니다. 실제로 유효한 기계 코드를 보지 못했습니다. CPU가 실행을 거부하고 결코 발생하지 않습니다. 그것은 항상 그것을 실행하고 지시가 지정하는 것을합니다. 일부 코드가 실행되지 않도록하려면 실행하지 마십시오. 예를 들면 다른 곳에 뛰어 오르십시오. 또한 고급 프로그래머에게는 작은 포인터 배열을 사용하여 if/else없이이 작업을 쉽게 만들 수 있으므로 코드에는 exec.flow가 하나만 있습니다. – Ped7g

+0

디버거에서 코드를 단일 단계로 실행하여 오류가 어떻게 발생하는지 확인하십시오. 두 블록은'syscall'에 어떤 포인터가 전달되는지를 제외하고는 똑같습니다. 그래서 여러분은 그것을 빼낼 수 있습니다. –

답변

0

홀수 정수 출력은 "OddEven"물론

입니다. 레이블은 장벽이 아니며 프로그램의 위치에 대한 편리한 이름입니다.

어떤 문제를 해결할 수 있습니까?

프로그램을 종료 할 시점에서 시스템 호출을 실행하십시오. 10. 직접 호출하거나 해당 시스템 호출을 실행하는 코드의 다른 위치로 이동하십시오.