2017-04-06 6 views
0

これは宿題であり、私はここで止まっています。どんな助けもありがとうございます。ユーザー入力値までMARIEアセンブリ言語で奇数を印刷します

私は奇数をユーザー入力値(たとえば6または7)まで印刷しようとしています。 私は次のようなコードを持っています。ここで

は私のコードです:

org 100 

input    /ask for input 
store num   /store the input as num 

load one 
store oddnum  /store 1 as odd number 
output   /print odd number, prints 1 

oddloop, load oddnum /start of loop 
add two    /adds 2 in previous odd number value 
store oddnum   /stores the new odd number 
output    /prints odd number 

load num    /loads user input 
subt oddnum   /input value minus current odd number value 

skipcond 000   /skips next line if value is negative 
jump oddloop   /jumps to loop 

halt     /end program 

zero, dec 0 
one, dec 1 
two, dec 2 
num, dec 0 
oddnum, dec 0 

ユーザ入力が7であれば、ユーザ入力が6である場合、それはここで

1 3 5 7 9 

印刷し、期待される出力は、1 3 5 7

あります。それがここに

1 3 5 7 

印刷し、期待される出力は、コードの1 3 5

答えて

0

変更ロジックで、そこに多くの可能な方法がありますが、私は個人的に、これはいずれかの操作を行います:

num = input 
oddnum = 1 

while (oddnum <= num) { 
    output oddnum 
    oddnum += 2 
} 

(oddnum <= num)があります等しい場合は(not(oddnum > num))

つまり、(oddnum-num) > 0が真の場合は、ループの後に最初の命令にジャンプします。 lはlooblivionにループ...


そして、なぜ私がこの 1つのロジックや他のいくつかのない使用します。

  • 予告のみの単一出力点(あなたは2を持っている)
  • が、それはだありますが"1"のみを表示する "0"入力(何も表示しない)または "1"( "2")入力でも動作します(2出力の場合do {} while()ロジックは少なくとも毎時"1 3"を表示します) 。
関連する問題