• 精选
  • 会员

附录二 寄存器机练习题的答案

2021年9月26日  来源:直觉泵和其他思考工具 作者:[美] 丹尼尔·丹尼特 提供人:zhaotou97......

练习1

程序1

a.运用程序1,想一下寄存器机需要几步可以计算出2+5=7 ?(“结束”也算是一步。)

答:6个步骤:3个减量,2个增量,一步结束(最后一步是遇0跳转)。

b.要计算出5+2=7需要几步完成?

答:12个步骤:6个减量,5个增量,一步结束。

(你从中可以得出什么结论?)

答:内容按不同顺序相加会导致很大的差异,所以你可能会认为,最好设定一条规则,总是将较小的数字放入寄存器1;但如果你要首先从两个数字中区别出那个较小的,这会比你完成相加花费更多步骤!

练习2

a.请为这个流程图写出它的RAP程序。(请注意,由于程序有不同的分支,你可以采用不同的顺序为各步骤编号,只要“下一步”对应的步骤编号填写正确即可。)

b.如果从3中减3,或者从4中减4,这个程序会出现哪些不同?

答:程序在寄存器4那里遇0中止。

c.将寄存器3在第三步之前就清零而不是推延到完成第四步之后,这样会避免哪些可能的错误?

答:如果寄存器1和寄存器2里最初放置的都是0,那么在程序结束后,答案很可能无意义(符号寄存器里出现-0或除0和1之外的其他数字)。

练习3

a.画一个流程图或者写一个RAP程序,让寄存器1中的数字与寄存器3中的数字相乘,将答案显示在寄存器5中。

b.(可选)利用复制和移动改进你上面写出的乘法编程,使寄存器1与寄存器3在程序停止后都能保持原有的内容,方便你在运算完成后清楚地检查输出和输入的内容正确与否。

c.(可选)画一个流程图或者写一个RAP程序,要求它能识别寄存器1与寄存器3中的内容(同时保证这些内容不受损坏),将内容较大的寄存器地址(1或3)显示于寄存器2;当两个寄存器中的内容相等时,寄存器2中显示2。(程序完成后,寄存器1和寄存器3中的内容要保持不变,寄存器2显示出所含数字较大的寄存器地址,当内容大小相等时,寄存器2将报出数字2。)

练习4(可选)

写出一个流程图及它的RAP程序,用来将寄存器机转变成一台便携式计算器。

a.寄存器2用来执行运算:

0=相加

1=相减

2=相乘

3=相除

b.在寄存器1和3中放入参与运算的数据。

那么“306”就表示“3 + 6”,“513”表示“5-3”,“425”表示“4×5”,“933”表示“9÷3”。然后,我们用寄存器4、5、6、7来显示操作结果:寄存器4用于表示符号,其中0代表+,1代表-;寄存器5显示答案的数值;寄存器6用于存放除法结果的余数;寄存器7表示警示,即对输入的内容进行报错,例如除数为0,或者寄存器2中出现了没有定义的操作的情况。

如涉及版权,请著作权人与本网站联系,删除或支付费用事宜。

0000