Программа, которую я сейчас пишу, принимает ввод в виде однозначного числа, за которым следует пробел, за которым следует двузначное число. Программа возьмет два числа и сложит их вместе, уменьшит число на 7, пока оно не станет меньше 7, и свяжет это число с днем недели. Вот что у меня есть:
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 и т. д.), но не могу найти метод, позволяющий сравнить эти два значения. Должен ли я загружать значение, которое я назвал «неделя», в регистр, прежде чем пытаться его сравнить или что-то в этом роде?
Примеры ввода/вывода:
Вход:
1 10
Вывод:
"Среда"
Любое понимание ценится. Спасибо за ваше время.