使用 Easy68K 测试两个数字是否相等
Test if two numbers are equal using Easy68K
我正在尝试在 Easy68K 中创建一个程序,该程序能够测试用户输入的两个数字是否相等。我大致知道如何从用户那里获取输入,并将其加载到数据寄存器中,我想我需要使用一个 while 循环来测试两个数字是否相等。
我不是要别人帮我写程序,我只是真的需要一些建议。
这是我目前的代码:
*-----------------------------------------------------------
* Title : Number Comparison
* Written by : Robert Dudley
* Date : 23/04/2017
* Description: Compares two numbers and determines if they are equal
*-----------------------------------------------------------
ORG 00
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
移动到另一个寄存器?
键盘输入例程很可能将输入的数字留在了某个寄存器中,我们假设它是 D1。如果没有保存在其他地方,输入第二个值将破坏第一个值。 (我想这就是为什么你问如何将一个值从一个寄存器移动到另一个寄存器的原因)
在第二行后插入以下行 TRAP 15
:
MOVE.L d1,d7
确保 none 个陷阱更改此寄存器值 - 否则您将丢失它。
第二次键盘输入后,您将在 d1 中获得第二个数字,而第一个(希望如此)仍在 d7 中。 C
oMP
是两个寄存器,并使用条件分支到您可能编写的任何[非]相等输出例程
这里是代码,可以作为参考。它比较一个数字是否大于、小于或等于另一个数字:
START: ; first instruction of program
LEA SELECCION, A1
MOVE.B #14, D0
TRAP #15
MOVE.B #4, D0
TRAP #15
CMP.L #5, D1
BEQ ESCINCO
CMP.L #5, D1
BGT MAYORQUE
CMP.L #5, D1
BLT MENORQUE
MAYORQUE
LEA MAYOR, A1
MOVE.B #14, D0
TRAP #15
MOVE.B #9, D0
TRAP #15
MAYOR DC.B 'EL VALOR EL MAYO QUE 5',0
rts
MENORQUE
LEA MENOR, A1
MOVE.B #14, D0
TRAP #15
MOVE.B #9, D0
TRAP #15
MENOR DC.B 'EL VALOR ES MENOR QUE 5',0
rts
ESCINCO
LEA IGUALACION, A1
MOVE.B #14, D0
TRAP #15
MOVE.B #9, D0
TRAP #15
IGUALACION DC.B 'EL VALOR ES 5',0
rts
SELECCION DC.B 'INGRESE DIGITOS ENTRE 0 Y 9: ',0
END START
END START ; last line of source
我正在尝试在 Easy68K 中创建一个程序,该程序能够测试用户输入的两个数字是否相等。我大致知道如何从用户那里获取输入,并将其加载到数据寄存器中,我想我需要使用一个 while 循环来测试两个数字是否相等。
我不是要别人帮我写程序,我只是真的需要一些建议。
这是我目前的代码:
*-----------------------------------------------------------
* Title : Number Comparison
* Written by : Robert Dudley
* Date : 23/04/2017
* Description: Compares two numbers and determines if they are equal
*-----------------------------------------------------------
ORG 00
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
移动到另一个寄存器?
键盘输入例程很可能将输入的数字留在了某个寄存器中,我们假设它是 D1。如果没有保存在其他地方,输入第二个值将破坏第一个值。 (我想这就是为什么你问如何将一个值从一个寄存器移动到另一个寄存器的原因)
在第二行后插入以下行 TRAP 15
:
MOVE.L d1,d7
确保 none 个陷阱更改此寄存器值 - 否则您将丢失它。
第二次键盘输入后,您将在 d1 中获得第二个数字,而第一个(希望如此)仍在 d7 中。 C
oMP
是两个寄存器,并使用条件分支到您可能编写的任何[非]相等输出例程
这里是代码,可以作为参考。它比较一个数字是否大于、小于或等于另一个数字:
START: ; first instruction of program
LEA SELECCION, A1
MOVE.B #14, D0
TRAP #15
MOVE.B #4, D0
TRAP #15
CMP.L #5, D1
BEQ ESCINCO
CMP.L #5, D1
BGT MAYORQUE
CMP.L #5, D1
BLT MENORQUE
MAYORQUE
LEA MAYOR, A1
MOVE.B #14, D0
TRAP #15
MOVE.B #9, D0
TRAP #15
MAYOR DC.B 'EL VALOR EL MAYO QUE 5',0
rts
MENORQUE
LEA MENOR, A1
MOVE.B #14, D0
TRAP #15
MOVE.B #9, D0
TRAP #15
MENOR DC.B 'EL VALOR ES MENOR QUE 5',0
rts
ESCINCO
LEA IGUALACION, A1
MOVE.B #14, D0
TRAP #15
MOVE.B #9, D0
TRAP #15
IGUALACION DC.B 'EL VALOR ES 5',0
rts
SELECCION DC.B 'INGRESE DIGITOS ENTRE 0 Y 9: ',0
END START
END START ; last line of source