2017-09-25 19 views
1

整数が偶数か奇数かを判断するプログラムを書いています。プログラムは、ユーザーに整数を尋ねることから始まり、その整数が何であるかに応じて「偶数」と「奇数」を印刷することになっています。私は、If-elseステートメントの作成に問題があります。MIPS if-else印刷に問題がある

ステートメントは、$ t2 = $ t0の場合は "Odd"、それ以外の場合は "Even"を出力する必要があります。これは私が今では($ T1 = 1、$ t2の1でANDさ=利用者の整数を、odd_str = "奇数"、even_str = "でも")動作していないしているコードです:

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

奇数の出力は「OddEven」であり、偶数の出力は「偶数」である。任意のアイデアをどのようにこれを修正するには?

+0

コードは私のために働くように見えます。 (出力は正しくないが、コードは機能する)。デバッガをチェックインして、コードがどのように動作するのか、出力が期待どおりでないのを確認することもできます。しかし、それは間違いなく動作しますが、実際には有効なマシンコードを見たことがありません.CPUは実行を拒否します。常にそれを実行し、命令が指定するものを実行します。コードの実行を避けるため、実行しないでください。たとえば、他の場所にジャンプします。また、上級プログラマにとっては、小さなポインタ配列を使うだけで、if/elseを使わずにこのタスクを作成するのは簡単です。そのため、コードにはexec.flowが1つしかありません。 – Ped7g

+0

あなたのコードをデバッガでシングルステップして、それがどのように低下​​するかを確認してください。また、 'syscall'に渡すポインタを除いて2つのブロックが同じであることに注意してください。 –

答えて

0

プログラムが終了になるだろう"Odd"文字列を出力syscall後に何もないので、奇数のための出力は、「奇数 - 偶数」もちろん

です。ラベルは障壁ではありません。それらはプログラム内の場所の便利な名前です。

これを解決する方法はありますか?

システムコールを実行する場合は、直接実行するか、そのシステムコールを実行するコード内の他の場所にジャンプしてください。