//wir benutzen acht register.... DEFREG r0 = 0 DEFREG r1 = 1 DEFREG r2 = 2 DEFREG r3 = 3 DEFREG r4 = 4 DEFREG r5 = 5 DEFREG r6 = 6 DEFREG r7 = 7 //wir adressieren zwei Register mode-feld brauchen wir nicht.. DEFR2POS 0 DEFR1POS 3 DEFMODPOS 6 DEFOPCPOS 10 // Steuerbefehle DEFOPC nop = 0 0x0001 //NMO DEFOPC stop = 1 0x0001 //NMO DEFOPC jsr = 2 0x0002 //MA DEFOPC ret = 3 0x0001 //NMO getestet DEFOPC bra = 4 0x0002 //MA DEFOPC beq = 5 0x0002 //MA DEFOPC bgt = 6 0x0002 //MA DEFOPC blt = 7 0x0002 //MA DEFOPC boo = 8 0x0002 //MA DEFOPC boc = 9 0x0002 //MA // Arithmetische Befehle DEFOPC add = 16 0x0050 //MRR, MRLIT DEFOPC sub = 17 0x0050 //MRR, MRLIT DEFOPC multl = 18 0x0050 //MRR, MRLIT DEFOPC multh = 19 0x0050 //MRR, MRLIT DEFOPC div = 20 0x0050 //MRR, MRLIT DEFOPC mod = 21 0x0050 //MRR, MRLIT DEFOPC neg = 22 0x0050 //MRR, MRLIT DEFOPC comp = 23 0x0050 //MRR, MRLIT // Arithmetische Befehle DEFOPC not = 32 0x0050 //MRR, MRLIT DEFOPC and = 33 0x0050 //MRR, MRLIT DEFOPC or = 34 0x0050 //MRR, MRLIT DEFOPC xor = 37 0x0050 //MRR, MRLIT // Transferbefehle DEFOPC load = 48 0x0170 //MRRI, MRA, MRLIT DEFOPC store = 49 0x0100 //MRRI ORG 0 load r0 a // a laden load r2 b // b laden CMP: comp r0 r2 // qucken, ob a groesser als b ist bgt BIGGER // wenn nicht ... load r1 r2 // swappen load r2 r0 load r0 r1 BIGGER: load r1 r0 // a ins Hilfsregister laden div r1 r2 // in r1 a div b multl r1 r2 // sub r0 r1 // in r0 a % b beq END // wenn a % b = 0 => das war's bra CMP // wenn nicht weiter machen END: load r3 #0 // konstante 0 laden add r3 #ggt // Adresse von ggt laden store r2 (r3) // GGT unter Adresse ggt speichern stop a: FCW 32 b: FCW 512 ggt: FCW 0