Εδώ θα βρείτε έναν εξομοιωτή για το υπολογιστικό σύστημα του εργαστηρίου συστημάτων υπολογιστών.

Φτιάχτηκε για να δοκιμάζεται η ορθότητα αλγορίθμων και όχι για να βλέπουμε τι μήνυμα λάθους, ή ποιά συμπεριφορά θα παρουσιάσει το υπολογιστικό σύστημα άν δεν γράψουμε ένα πρόγραμμα assembly σωστά.

Δεν προσφέρει κανενός είδους έλεγχο δεδομένων και περιμένει τα σωστά κενά και τις σωστές εντολές.

Υπάρχουν εδώ έτοιμο το εκτελέσιμο για win, ο πηγαίο ςκώδικας και τα αρχεία που λύνουν τα προβλήματα για τις εργαστηριακές ασκήσεις 1-3.


πηγαίος

οι εργ. ασκήσεις λυμμένες (απενεργοποιήθηκε λόγω της νέας χρονιάς)

το εκτελέσιμο

Προσοχή!!!

Το πρόγραμμα για να λειτουργήσει χρειάζεται:


α) Ενα αρχείο input.txt που θα περιέχει τον πηγαίο κώδικα assembly
β) Ενα αρχείο memoryin.txt που θα περιγράφει τη μνήμη του υπολογιστικού συστήματος με την εξής μορφή:
διευθυνση:περιεχόμενο
πχ 5f20:03
5f21:4a
Η έξοδος και τα flags βγαίνoυν στο αρχείο memory.txt

Αν περάσετε μια παράμετρο στο προγραμμα πχ(lab.exe 32.txt), τότε το πρόγραμμα θα ανοίξει το 32.txt αντί του input.txt.
Αυτό μπορείτε να το κάνετε από command prompt ή από linux

Επίσης προσοχή:

Τα labels πρέπει να έχουν αγκύλες [sostolabel]
Κενά θα βάζετε μόνο μεταξύ του αρχικού label(αν υπαρχει), της εντολής και των παραμέτρων πχ
[Start] ADD 80,81
DJNZ 80,[START]
Μην δοκιμάσετε να βάλετε κενά ΜΕΤΑΞΥ των παραμέτρων ή κάπου αλλού.
Γενικά να θυμάστε ότι δεν γίνεται κανένας έλεγχος για συντακτικά ή οποιοδήποτε άλλο είδος λαθών, άρα αν μπερδέψετε ένα μηδέν με ένα ο δεν θα ειναι εύκολο να το εντοπίσετε.
Επίσης τα labels να τα βάζετε στην ΙΔΙΑ γραμμή με την εντολή. Όχι έτσι:
[start]
ADD 80,81
Προσέχτε επίσης: μετα το 81 δεν πρέπει να βάλετε κενό, ούτε τίποτα άλλο. Αν έχετε και άλλες εντολές να γράψετε απο κάτω την επόμενη. Μη χρησιμοποιείτε tabs.
Ακόμη θα πρέπει να θέσετε μόνοι σας τον καταχωρητή 0 να έχει περιεχόμενο 0 έτσι 00:00

Έχω περάσει όλες τις εντολές που υπαρχουν στις εργ. ασκήσεις 1-4 και 6 εκτός από τις BR,JBS, JBC. Την πρώτη επειδή δεν έχει προφανές νόημα, αφού ο χρήστης δεν ξέρει που αποθηκεύονται οι εντολές του. Οι άλλες δυο επειδή δεν καταλάβαινα το bitno (μήπως ειναι πχ 010 ??). Αλλα δεν έχει νόημα γιατί η κάθε εντολή από αυτές μπορεί να αντικατασταθεί με δύο άλλες (πχ AND kai JE).
Όποιος θέλει να περάσει και άλλες, είναι εύκολο, ας με ρωτήσει ή ας κοιτάξει τον κώδικα.

Σχόλια για τον πηγαίο
Για να κάνετε compile το προγραμμα στα windows έχω στο αρχείο με τον πηγαίο τα αρχεία του visual studio.
ΕΝΑΛΛΑΚΤΙΚΑ αν εχετε εγκαταστησει το προγραμμα gcc από το cd του βιβλίου ¨Εισαγωγή στο λογισμικό" έχω βάλει ένα αρχείο comm.bat. Από το command prompt, λοιπον, θα γράψετε comm.bat και θα σας δημιουργηθεί το lab.exe στον ίδιο φάκελο.
Για unix ktl χρησιμοποιειστε πάλι το comm.bat, γράφοντας sh comm.bat. Εχω αφήσει στη μέση ένα makefile, όποιος θέλει ας μου το ζητήσει για να το ολοκληρώσει.

Όποιος βρει κάποιο πρόβλημα στο πρόγραμμα ή έχει κάποια απορία, ή δεν του λειτουργεί το πρόγραμμά του ή οτιδήποτε άλλο ας στείλει mail στο kounenis@ceeid.upatras.gr