2017-04-23 99 views
0

我想在Easy68K中创建一个能够测试用户输入的两个数字是否相等的程序。我大致知道如何从用户那里获得输入,并将其加载到数据寄存器中,并且我认为我需要使用while循环来测试这两个数字是否相等。使用Easy68K测试两个数字是否相等

我并不是要求人们为我编写程序,我只是非常需要一些建议。

这是我到目前为止的代码:

*----------------------------------------------------------- 
* Title  : Number Comparison 
* Written by : Robert Dudley 
* Date  : 23/04/2017 
* Description: Compares two numbers and determines if they are equal 
*----------------------------------------------------------- 
    ORG $1000 
START:          ; first instruction of program 

* Put program code here 

    LEA  enterFirst,A1    ; load message into adreg A1 
    MOVE.B  #14,D0 
    TRAP  #15 
    MOVE.B  #4,D0      ; read number from keyboard into D1.L 
    TRAP  #15 

    LEA  enterSecond,A1 
    MOVE.B  #14,D0 
    TRAP  #15 
    MOVE.B  #4,D0 
    TRAP  #15 

    SIMHALT        ; halt simulator 

* Put variables and constants here 

enterFirst  DC.B 'Enter first number: ',0 
enterSecond  DC.B 'Enter second number: ',0 

       END START    ; last line of source 

注:此外,如何从D1.L输入移动到另一个寄存器?

+0

最后一个问题:读你的句子并把它翻译成助记符:'MOVE.L D1,<另一个寄存器> – tofro

回答

0

键盘输入程序很可能将输入的数字留在某个寄存器中,我们假设它是D1。输入第二个值会破坏第一个值,如果没有保存在其他地方。 (我想这就是为什么你问到如何从一个寄存器移动值,其它)

插入第二TRAP 15后以下行:

 MOVE.L d1,d7 

确保没有任何陷阱改变这个寄存器的值 - 否则你会失去它。

在第二次键盘输入后,您将在d1中获得第二个数字,第一个数字(希望)仍然在d7中。 C o MP是两个寄存器,并且使用一个条件分支到你可能编写的任何[非]相等输出例程

+0

谢谢!我现在面临的问题是保存第二个值(D1.L需要再次用于显示结果),并实际显示D7。否则至少它现在存储第一个输入的值。 –

+0

没关系!我一直在努力研究这个问题,但我已经有点脑子死了,但我现在已经掌握了基础知识。非常感谢你的帮助! –

相关问题