Hallo,
unser Prof hat eine Aufgabe zur Assembler-Programmierung für Harvard-Rechner gestellt, mit der ich nichts anfangen kann
„ein Mikroprozessor habe einen 16-bit-Akkumulator (ACC) und greife auf einen Programm- und Datenspeicher von 16-bit Worten zu. Das Statusregister besteht aus den beiden Bits C (Carry) und Z (Zero), die bei Additionen und Subtraktionen gesetzt werden. Er habe den Befehlssatz
LAC n Lade ACC aus dem Datenspeicher, setze Z
SAC n Speichere ACC in den Datenspeicher
ADD n Addiere Datenspeicherinhalt zu ACC
SUB n Subtrahiere Datenspeicherinhalt von ACC
ADDC n Addiere Datenspeicherinhalt zu ACC mit Übertrag
SUBC n Subtrahiere Datenspeicherinhalt von ACC mit Übertrag
B n Absoluter Sprung
BC n Sprung, falls C = 1
BNC n Sprung, falls C = 0
BZ n Sprung, falls Z = 1
BNZ n Sprung, falls Z = 0
Wobei n eine Adresse im Bereich 0,…, 4095 darstellt. Schreiben Sie ein Assemblerprogramm für diesen Prozessor, welches den ggT von zwei 32-bit-Zahlen an den Speicherstellen 256/257 und 258/259 berechnet und das Ergebnis in den Speicherstellen 260/261 hinterlässt.
ggT(a, b) = a, für a=b
ggT(a, b) = ggT(a-b, b), für a>b
ggT(a, b) = ggT(b, a), für a