发布前的编辑:所以我几乎是在我把整个该死的问题都打出来并整齐排列之后才自己想出来的。为了不白费,我还是发布了这个,询问这是否真的正确,并征求任何建议/意见。我仍然不确定一件事。
好吧,所以我完全是计算机科学的菜鸟。现在我正在学习汇编语言和机器语言编程。这是一个家庭作业问题,所以请帮助我理解,不要在我脸上扔答案。我正在尝试编写一个程序,使用条件分支(循环)获取从 1 到 20(答案是 210)的数字之和。
使用的助记符有:
L for load
A for Add
St for store
BC for branch on condition
C for compare
CH for channel
有 10 个寄存器可以放入东西。
所以基本上我必须做两件事: 1) 想办法把从 1 到 20 (1+2+3+4+5+6+7+8+9+...+20) 的所有数字加起来包括制作一个循环,以及 2)创建一个计数器,以便它知道在达到 20 时停止。这是正确的吗??
START L R1,COUNT
A R1,ONE
ST R1,COUNT
A R2,COUNT
C R1,TWENTY
BC 3,???
ST R2,SUM
CH SUM
STOP
COUNT DC F'0'
ONE DC F'1'
TWENTY DC F'20'
END START
这一切都在说:用 COUNT 的内容加载 Register1(以 0 开头)。添加 ONE 的 Register1 内容(即 1)。将 Register1 中的这个新数字存储到 COUNT 中。将此新号码添加到 Register2。将 COUNT 的内容与 TWENTY 的内容(即 20)进行比较。如果 COUNT 内的数字小于或等于 20(3 是条件代码),则分支 (/repeat)。一旦计数器达到 20,条件将被打破,指令将转到下一行:将 Register2 中的数字(现在应该是 210)存储到变量 SUM 中。然后调用 CHannel 在 I/O 设备上显示 SUM 的内容。然后停止。
现在...我不知道如何指定分支/返回到开头,因此它重复该过程直到计数器达到 20。我也不确定是否应该将 COUNT 指定为 0。
感谢您的任何/所有帮助。