2017-04-06 15 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;它打印

1 3 5 7 9 

这里,期望输出是1 3 5 7

如果用户输入是6;它打印

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为真,则在循环(退出它)之后跳转到第一条指令,否则循环直到升循环到looblivion ...


为什么我会用一个逻辑,而不是其他一些:

  • 通知这里只有一个输出点(有两个)
  • while(){}而不是do {} while(),所以它也适用于“0”输入(不显示任何东西)或“1”(“2”)输入仅显示"1"(具有两个输出的do {} while()逻辑将每次至少显示"1 3") 。