Προγραμματισμός σε επίπεδο μηχανής

Διομήδης Σπινέλλης
Τμήμα Διοικητικής Επιστήμης και Τεχνολογίας
Οικονομικό Πανεπιστήμιο Αθηνών
dds@aueb.gr

Προηγούμενα θέματα για σκέψη

Οικογένειες επεξεργαστών

Η οικογένεια επεξεργαστών iAPX86

Παράσταση εντολών

Καταχωρητές

Προσδιορισμός τελεστέων

Συνδιασμοί τελεστών:

Ενδείκτης διακλάδωσης

CF:
(Carry flag)
Κρατούμενο (Carry):
1 αν η πράξη δημιούργησε κρατούμενο.
ZF:
(Zero flag)
Μηδέν:
1 αν το αποτέλεσμα της πράξης είναι 0.
SF:
(Sign flag)
Πρόσημο (sign)
1 αν το αποτέλεσμα είναι αρνητικός αριθμός.
PF:
(Parity flag)
Ισοτιμία
1 αν το αποτέλεσμα έχει μονό αριθμό από bit που είναι 1.
OF:
(Overflow flag)
Υπερχείλιση:
1 αν το αποτέλεσμα δε μπορεί να παρασταθεί ως θετικός η αρνητικός αριθμός.

Εντολές μεταφοράς δεδομένων

MOV προορισμός, πηγή
(Move)
Μεταφορά
προορισμός <- πηγή
PUSH πηγή
Μεταφορά στη στοίβα
SP <- SP - 2
[SP] <- πηγή
POP προορισμός
Μεταφορά από τη στοίβα
προορισμός <- [SP]
SP <- SP + 2
XCHG προορισμός, πηγή
(Exchange)
Εναλλαγή
προορισμός <- πηγή
πηγή <- προορισμός
(ταυτόχρονα)

Αριθμητικές εντολές

ADD προορισμός, πηγή
(Add)
Πρόσθεση
προορισμός <- προορισμός + πηγή
INC προορισμός
(Increment)
Αύξηση κατά ένα
προορισμός <- προορισμός + 1
SUB προορισμός, πηγή
(Subtract)
Αφαίρεση
προορισμός <- προορισμός - πηγή
DEC προορισμός
(Decrement)
Μείωση κατά ένα
προορισμός <- προορισμός - 1
NEG προορισμός
(Negate)
Αλλαγή προσήμου
προορισμός <- - προορισμός
CMP προορισμός, πηγή
(Compare)
Σύγκριση
Εκτελείται η πράξη προορισμός - πηγή και ενημερώνονται οι ενδείκτες διακλάδωσης.
MUL πηγή
(Multiply)
Πολλαπλασιασμός
DX:AX <- AX * πηγή
DIV πηγή
(Divide)
Διαίρεση
AX <- AX / πηγή
DX <- AX mod πηγή

Εντολές δυαδικών ψηφίων

AND προορισμός, πηγή
Σύζευξη
προορισμός <- προορισμός & πηγή
OR προορισμός, πηγή
Διάζευξη
προορισμός <- προορισμός | πηγή
XOR προορισμός, πηγή
Αποκλειστική διάζευξη
προορισμός <- προορισμός ^ πηγή
NOT προορισμός
Αντιστροφή
προορισμός <- ~ προορισμός
TEST προορισμός, πηγή
Έλεγχος
SHL προορισμός, αριθμός
(Shift left)
Ολίσθηση (Shift) αριστερά
προορισμός <- προορισμός << πηγή
SHR προορισμός, αριθμός
(Shift right)
Ολίσθηση δεξιά
προορισμός <- προορισμός >> πηγή
SAR προορισμός, αριθμός
(Shift arithmetic right)
Αριθμητική ολίσθηση δεξιά
προορισμός <- προορισμός >> πηγή
ROL προορισμός, αριθμός
(Rotate left)
Περιστροφή αριστερά
ROR προορισμός, αριθμός
(Rotate right)
Περιστροφή δεξιά

Εντολές άλματος

JMP προορισμός
Άλμα
CALL προορισμός
Κλήση
RET
(Return)
Επιστροφή
JA/JNBE προορισμός
(Jump above)
Άλμα αν μεγαλύτερο (χωρίς πρόσημο)
JAE/JNB προορισμός
(Jump above or equal)
Άλμα αν μεγαλύτερο ή ίσο (χωρίς πρόσημο)
JB/JNAE προορισμός
(Jump bellow)
Άλμα αν μικρότερο (χωρίς πρόσημο)
JBE/JNA προορισμός
(Jump below or equal)
Άλμα αν μικρότερο ή ίσο (χωρίς πρόσημο)
JC προορισμός
(Jump carry)
Άλμα αν κρατούμενο
JNC προορισμός
(Jump no carry)
Άλμα αν όχι κρατούμενο
JE/JZ προορισμός
(Jump equal)
Άλμα αν ίσο
JNE/JNZ προορισμός
(Jump not equal)
Άλμα αν όχι ίσο
JG/JNLE προορισμός
(Jump greater)
Άλμα αν μεγαλύτερο (με πρόσημο)
JGE/JNL προορισμός
(Jump greater or equal)
Άλμα αν μεγαλύτερο ή ίσο (με πρόσημο)
JL/JNGE προορισμός
(Jump less)
Άλμα αν μικρότερο (με πρόσημο)
JLE/JNG προορισμός
(Jump less or equal)
Άλμα αν μικρότερο ή ίσο (με πρόσημο)
JO προορισμός
(Jump overflow)
Άλμα αν υπερχείλιση
JNO προορισμός
(Jump no overflow)
Άλμα αν όχι υπερχείλιση
JS προορισμός
(Jump sign)
Άλμα αν πρόσημο
JNS προορισμός
(Jump no sign)
Άλμα αν όχι πρόσημο

Βιβλιογραφία

Ασκήσεις