我正在编写的程序以单个数字编号的形式输入,后跟一个空格,后跟一个两位数字。该计划将采用这两个数字并将它们加在一起,将数字减少7s,直到少于7,并将该数字与一周中的某一天相关联。这里是我有:摩托罗拉68000组件比较号
start: initIO * Initialize (required for I/O)
setEVT * Error handling routines
* initF * For floating point macros only
linein buffer *reads in values
cvta2 buffer,#1 *provided macro to convert ascii to num, read first digit only
move.b D0,D1 *Store value in D1
cvta2 buffer+2,#2 *read the next two digits after space
move.b D0,D2 *store
add.b D1,D2 *add them together (I can probably use just one register here)
这里是麻烦:
for: cmp.w week, D2 *<<<<< This is saying invalid syntax, I want to see if the number provided is greater than 7, if not branch out to the next section
/麻烦
ble done
subq.w #7,D2 *If num>7, sub 7
done:
lineout dmsg
break * Terminate execution
*
*----------------------------------------------------------------------
* Storage declarations
buffer: dc.b 80
dmsg: dc.b 'Done',0
week: dc.b $7 *If combined value is greater than this, sub 7
*These are the values to check against to get correct reply
sun: dc.b $1
mon: dc.b $2
tues: dc.b $3
weds: dc.b $4
thurs: dc.b $5
fri: dc.b $6
sat: dc.b $7
*These are the responses for the output
sunr: dc.b 'Sunday',0
monr: dc.b 'Monday',0
tuesr: dc.b 'Tueday',0
wedsr: dc.b 'Wednesday',0
thursr: dc.b 'Thursday',0
frir: dc.b 'Friday',0
satr: dc.b 'Saturday',0
end
将会有更多的代码,当我弄清楚如何使上面的比较,但只是将结果与星期值进行比较才能提供正确的响应。我曾尝试使用各种形式的cmp(cmpa,cmpi.w/l等),但我似乎无法找到允许我比较两个值的方法。在尝试比较它之前,我是否必须将我标记为“星期”的值加载到寄存器中?的I/O
实例:
输入:
输出:
“星期三”
任何洞察力是赞赏。谢谢你的时间。
请不要编辑问题的答案;发布它作为答案。 (并回滚您的编辑。) –
即使问题代码仍然存在并与工作代码分开?可以做。 –
是的,回答问题中的问题会打败Q&A格式,并将您自己的答案放在一个特殊的地方,让投票无法提出最佳答案。 (对调试帮助问题很重要,因为他们很少有很多未来价值;当他们不知道自己的问题时,很难找到正确的问题)。无论如何,感谢您整理您的问题,并欢迎来到Stack Overflow。 –