1

这是一个家庭作业,我被困在这里。任何帮助表示赞赏。

我正在尝试将奇数打印到用户输入值(例如 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

4

1 回答 1

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"每次显示)。
于 2017-04-06T15:47:53.113 回答