Asembler dla maszyny rejestrowej

Maszyna rejestrowa

Rejestry A B o rozmiarze elementu sizeof(int)
Rejestry wskaźnikowe SP BP wskazujące miejsce na stosie
Licznik programu PC
Bity flag Z C
Pamięć dla zmiennych

Rozkazy, modyfikowane przez nie flagi oraz liczba cykli procesora potrzebnych do wykonania rozkazu
Rozkaz Opis Flagi Cykle
MOV A, #liczba A « liczba Z, zależnie czy liczba jest zerem 2
MOV A, [adres] A « [adres] Z, zależnie czy przesyłana dana jest zerem 3
MOV [adres],A [adres] « A Z, j/w 3
MOV [ptr+offset],A [ptr+offset] « A (ptr = SP, BP) Z, j/w 3 (bez offsetu) lub 4
MOV A, [ptr+offset] A « [ptr+offset] (ptr = SP, BP) Z, j/w 3 (bez offsetu) lub 4
MOV dest,src dest « src (dest, src = A, B, SP, BP) Z, j/w 1
PUSH Astos « A Z, zależnie czy liczba odkładana na stos jest zerem 2
PUSH Bstos « B Z, j/w 2
PUSH BPstos « BP Z, j/w 2
POP AA « stos Z, zależnie czy liczba pobierana jest zerem 2
POP BB « stos Z, j/w 2
POP BPBP « stos Z, j/w 2
ADD A,B A « A + B Z, zależnie czy wynik operacji jest zerem 1
SUB A,B A « A - B Z, j/w oraz C, zależnie czy wynik odejmowania jest ujemny 1
MUL A,B A « A * B Z, j/w 2
DIV A,B A « A / B Z, j/w 3
NEG A A « - A Z, j/w 1
OR A,B A « A | B Z, j/w 1
AND A,B A « A & B Z, j/w 1
XOR A,B A « A ^ B Z, j/w 1
NOT A A « ~A Z, j/w 1
CMP A,B - Z,C (tak jak przy SUB) 1
CALL adres stos « PC+1 , PC « adres - 4
RET PC « stos - 4
JMP adres PC « adres - 2
JE adres PC « adres jeżeli Z=1 - 2 (skok wykonany) lub 1
JNE adres PC « adres jeżeli Z=0 - 2 (skok wykonany) lub 1
JG adres PC « adres jeżeli Z=0 i C=0 - 2 (skok wykonany) lub 1
JL adres PC « adres jeżeli C=1 - 2 (skok wykonany) lub 1
JGE adres PC « adres jeżeli C=0 - 2 (skok wykonany) lub 1
JLE adres PC « adres jeżeli C=1 lub Z=1 - 2 (skok wykonany) lub 1

Symulator
Pseudoinstrukcje, wykorzystywane przez symulator
DD id zadeklarowanie miejsca w pamięci zmiennych dla id
BRK punkt przerwania programu dla komendy symulatora t