antreas18 Δημοσ. 31 Αυγούστου 2005 Δημοσ. 31 Αυγούστου 2005 Geia sas.tha ithela na zitiso ti voitheia sas sxetika me ena thema pou peftei sixna se eksetastiki tou mathimatos assembly..eimai spoudastis tei pliroforikis stin athina.To ksero oti thelo etoimi ti lisi sto piato alla distixos etsi irthan ta pragmata..opoios boresei kai dosei ti lisi tha me voithisei para polu..i esto me voithisei kai sto elaxisto..euxaristo ek ton proteron To thema pou peftei einai to eksis: Έχουμε ένα κύριο πρόγραμμα με όνομα ΜΑΙΝ και 4 διαδικασίες (procedures) με τα εξής ονόματα PROC-A, PROC-B,PRO-C και PROC-D. Υποθέτουμε ότι η χρήση του σωρού stack γίνεται μόνο με την χρήση των εντολών CALLs και RETURNs και ότι ο δείκτης SP (Stack Pointer ) αρχικά έχει την τιμή 0200 Η. Η σειρά κατά την οποία γίνονται τα CALL και τα RETURN είναι : -- ΜΑΙΝ καλεί την κοντινή NEAR διαδικασία PROC-A (διεύθυνση επιστροφής CS: 0400H ). -- PROC- A καλεί την NEAR διαδικασία PROC –B (διεύθυνση επιστροφής CS: 0A00H ). -- PROC – B καλεί την μακρινή (FAR) διαδικασία PROC – C (διεύθυνση επιστροφής Β200Η : 0100 Η). -- Επιστροφή από την διαδικασία PROC – C στην PROC –B -- PROC-B καλει την κοντινή διαδικασία PROC-D (διεύθυνση επιστροφής CS: 0C00H ). -- Επιστροφή από την διαδικασία PROC – D στην PROC –B -- Επιστροφή από την διαδικασία PROC – B στην PROC –A -- Επιστροφή από την διαδικασία PROC – A στο MAIN Ποια θα είναι τα περιεχόμενα του σωρού και του δείκτη σωρού μέτα απο κάθα CALL και RETURN εντολή. thanks kai pali
godlike Δημοσ. 1 Σεπτεμβρίου 2005 Δημοσ. 1 Σεπτεμβρίου 2005 Ευχαρίστως να βοηθήσουμε έναν συμφοιτητή. Και εγώ στο ίδιο τμήμα σπουδάζω. Κοίτα αυτά που θα σου πω μην τα δένεις και κόμπο γιατί έχω πολύ καιρό να ασχοληθώ με 16bit assembly και δεν είμαι και 100% σίγουρος. Αντί να σου δώσω την λύση καλύτερα θα σου πω τον τρόπο. Λοιπών όταν κάνουμε κάτι push κάτι τότε είναι σαν να κάνουμε mov εκεί που δείχνει ο sp και μετά αφαιρούμε τον sp κατά 2. Δηλ. push 10 Ισούται με: mov [sp], 10 sub sp, 2 Όταν κάνουμε pop γίνεται το αντίθετο. Πρώτα κάνουμε πρόσθεση τον sp και μετά μεταφέρουμε τα περιεχόμενά του στον operant. Δηλ. pop ax Ισούται με: add sp, 2 mov eax, [sp] Λοιπών όταν κάνουμε μια near call τότε είναι σαν να κάνουμε push τον ip και μετά jmp στον operant. Δηλ. call near PROC Είναι ίσο με το: push IP jmp PROC Όταν κάνουμε far call τότε δεν είμαι σίγουρος τι κάνει. Ή κάνει ένα push με τιμή CS+IP ή δύο ξεχωριστά push, ένα για τον IP και ένα για τον CS. Δεν είμαι σίγουρος αλλά νομίζω ότι είναι το 2o. Όταν κάνουμε ret από μια procedure τότε είναι σαν να κάνουμε pop τον IP (και τον CS αν είναι far) στην προηγούμενη κατάστασή του και τίποτα άλλο. Για την άσκηση: Βήμα 1) ΜΑΙΝ καλεί την κοντινή NEAR διαδικασία PROC-A (διεύθυνση επιστροφής CS: 0400H ) STACK 200h//0400h 2) PROC- A καλεί την NEAR διαδικασία PROC –B (διεύθυνση επιστροφής CS: 0A00H ) STACK 200h//0400h, 0A00h 3) PROC – B καλεί την μακρινή (FAR) διαδικασία PROC – C (διεύθυνση επιστροφής Β200Η : 0100 Η) STACK 200h//0400h, 0A00h, B200h, 0100h (<< δεν θυμάμαι πιο κάνει πρώτα push) Κτλ. Ελπίζω να βοήθησα όσο θυμάμαι. Όπως σου είπα πιο πριν μην το δένεις και κόμπο ότι λέω και ανέτρεξε στις σημειώσεις σου για την far call. Και καλή επιτυχία.
antreas18 Δημοσ. 1 Σεπτεμβρίου 2005 Μέλος Δημοσ. 1 Σεπτεμβρίου 2005 thanks man..tha prospathiso na vgalo akri
Azazel Δημοσ. 1 Σεπτεμβρίου 2005 Δημοσ. 1 Σεπτεμβρίου 2005 File i lush einai mia.Anoixte kana vivlio me ton allo dipla sou giati den se vlepw kala...kai kopse kai to internet.Auta apo mena.
EXARXEIA_CITY Δημοσ. 1 Σεπτεμβρίου 2005 Δημοσ. 1 Σεπτεμβρίου 2005 File i lush einai mia.Anoixte kana vivlio me ton allo dipla sou giati den se vlepw kala...kai kopse kai to internet.Auta apo mena. loooooool, esei ti provlima exeis re megale ? noiazese kai kala gia ton allo ? rolf ,akou na kopsei kai to internet .
antreas18 Δημοσ. 1 Σεπτεμβρίου 2005 Μέλος Δημοσ. 1 Σεπτεμβρίου 2005 lol exarxeia city..o azazel einai ksaderfos mou kai me douleuei ahahahahhaah
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.