Das Programm, das ich gerade schreibe, nimmt die Eingabe in Form einer einstelligen Zahl gefolgt von einem Leerzeichen, gefolgt von einer zweistelligen Zahl. Das Programm nimmt die zwei Zahlen und fügt sie zusammen, reduziert die Anzahl um 7 Sekunden auf weniger als 7 und verknüpft diese Zahl mit einem Wochentag. Hier ist, was ich habe:Motorola 68000 Assembly Vergleichen von Zahlen
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)
hier ist das Problem:
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
/Ärger
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
Es wird mehr Code, wenn ich herausfinden, wie der Vergleich oben zu machen, aber es wird die gleiche Art von Vergleich sein, nur das Ergebnis gegen die Werte der Wochentage verwendend, um die korrekte Antwort zur Verfügung zu stellen.
Ich habe versucht, die verschiedenen Formen von cmp (cmpa, cmpi.w/l, etc) zu verwenden, aber ich kann nicht scheinen, eine Methode zu finden, die mir erlaubt, die zwei Werte zu vergleichen. Müsste ich den Wert "Woche" in ein Register laden, bevor ich versuche, es zu vergleichen?
Beispiele für I/O:
Input:
Output:
"Mittwoch"
Jeder Einblick wird geschätzt. Vielen Dank für Ihre Zeit.
Bitte bearbeiten Sie nicht die Antwort in der Frage; poste es als Antwort. (und die Bearbeitung rückgängig machen.) –
Auch wenn der Problemcode immer noch vorhanden ist und vom Arbeitscode getrennt ist? Tun können. –
Ja, das Beantworten der Frage in der Frage besiegt das Q & A-Format und bringt Ihre eigene Antwort an einen besonderen Ort über anderen, wo das Abstimmen nicht die besten Antworten auf die Spitze bringen kann. (Kaum relevant für Debug-Hilfe-Fragen, da sie leider selten viel Zukunftswert haben; es ist schwer für andere Leute, die richtige Frage zu finden und zu finden, wenn sie nicht wissen, was ihr Problem ist.) Wie auch immer, danke für deine Frage und willkommen bei Stack Overflow. –