我正在用 Easy68k 为我的汇编语言类编写一个附加程序,但我一直遇到同样的问题。每当我运行该程序时,它允许我输入最多 10 个数字(分配给我的数组的大小),然后它输出消息说它正在计算,但我只是得到一个无休止的 y 与变音符号的打印输出。您可以立即看到我的程序导致它执行此操作的任何问题?
我已经搜索了子例程的语法,因为我很肯定那是我做错了,但我找不到任何东西。
ORG $2000
ARRAY DS.W 10
ZDONE DC.W 'Enter values. Zero when done.'
FULL DC.W 'That is all the input allowed. Calculating sum now...'
OERROR DC.W 'The values you entered caused an overflow condition.'
REPEAT DC.W 'Do you want to repeat? [0=No, 1=Yes].'
START ORG $2800
MAIN LEA ZDONE,A1
MOVE.B #14,D0 ;
TRAP #15
LEA ARRAY,A0
MOVE.B #0,D3
INPUT MOVE.B #4,D0
TRAP #15
MOVE.W D1,(A0)+
BEQ SUB
ADD.B #1,D3
CMPA #$2012,A0
BNE INPUT
LEA FULL,A1
MOVE.B #14,D0 ; Outputs the FULL string
TRAP #15
SUB SUB.W A0,A0
BSR SUM ; Begins to calculate sum
CMP #1,D0
BNE NoV
LEA OERROR,A1
MOVE.B #14,D0
TRAP #15
BRA AGAIN
NoV LEA $D1,A1
MOVE.B #14,D0
TRAP #15
AGAIN LEA REPEAT,A1
MOVE.B #14,D0
TRAP #15
MOVE.B #4,D0
TRAP #15
MOVE.B #1,D0
CMP.B D0,D1
BEQ START
STOP #$3800
ORG $3800
SUM LEA ARRAY,A0
ADD.W #$A0,D1
BVC NoV
SUB.B #1,D3
BNE SUM
MOVE.B #1,D0
BRA RETURN
CLR.B D0
RETURN RTS
END START