ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ

Σχετικά έγγραφα
ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ

ΘΕΜΑΤΑ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ-ΙΙ

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ

Σημειώσεις για τον 80x86

Αρχιτεκτονική Υπολογιστών

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Αρχιτεκτονική-Ι. Ενότητα 4: Το Προγραμματιστικό Μοντέλο του 8086

Αρχιτεκτονική Υπολογιστών

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ

Συστήματα Μικροϋπολογιστών

Αρχιτεκτονική-Ι Ενότητα 5:

«ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ» ΕΣΩΤΕΡΙΚΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΚΑΙ ΛΕΙΤΟΥΡΓΙΕΣ

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Αρχιτεκτονική Υπολογιστών

Θ. Ζαχαριάδης Αν. Καθηγητής. Λ. Σαράκης Καθ. Εφαρμογών

Στοιχεία από Assembly Γιώργος Μανής

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ

Θ. Ζαχαριάδης Αν. Καθηγητής. Λ. Σαράκης Καθ. Εφαρμογών

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Επιμέλεια: ρ. Ν. Σγούρος ρ. Ι. Κονταξάκης

0100: MAR ADR; wait;mdr DB; SCR L DH+MDR+CY

Ερωτήσεις θεωρίας MY. Μέρος Α. Υλικό.

Συστήματα Μικροϋπολογιστών

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

Αρχιτεκτονική Υπολογιστών

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΙΙ Εργαστήριο 2 ο ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ- ΨΕΥΔΟΕΝΤΟΛΕΣ ΜΑΚΡΟΕΝΤΟΛΕΣ- ΔΙΑΔΙΚΑΣΙΕΣ (ΕΙΣΑΓΩΓΗ)

Ο 8086 µπορεί να θεωρηθεί ότι αποτελείται από δύο τµήµατα επεξεργαστές, όπως φαίνεται και στο σχήµα 1, οι οποίοι είναι:

ΘΕΜΑΤΑ & ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ

Καταχωρητές & τμήματα μνήμης του Ματθές Δημήτριος Καθηγητής Πληροφορικής

Πρόχειρες Σημειώσεις. Θ. Ζαχαριάδης Αν. Καθηγητής. Λ. Σαράκης Καθ. Εφαρμογών

Αρχιτεκτονική-ΙΙ Μέρος 2 ο

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

74HC573 D7 D6 D5 D4 D3 D2 D1 D0 LE OE A0 A1 A2 A3 A4 A5 A6 A7 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 A8 A9 A10 A11 A12 A13 Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0

Καταχωρητές γενικής χρήσης και δεδοµένων (Data Registers)

Οδηγός Εκμάθησης στην Assembly

Αρχιτεκτονική Υπολογιστών

Εργαστήριο 3 ΟΡΓΑΝΩΣΗ ΤΗΣ ΚΜΕ. Εισαγωγή

Αρχιτεκτονική Υπολογιστών

ΜΑΘΗΜΑ: ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ ΘΕΜΑΤΑ ΙΟΥΝΙΟΥ 2014

Αρχιτεκτονική Υπολογιστών

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Αρχιτεκτονική-Ι. Ενότητα 1: Εισαγωγή στην Αρχιτεκτονική -Ι

Μάθημα 3.2: Κεντρική Μονάδα Επεξεργασίας

Προηγμένοι Μικροεπεξεργαστές. Φροντιστήριο 2 Addressing

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Μάθημα 7: Μικροϋπολογιστικό Σύστημα και Μνήμες

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2013

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική υπολογιστών

ΠΕΡΙΕΧΟΜΕΝΑ 1. Υπορουτίνες Μαθηµατικών Πράξεων 1.1. Προσηµασµένοι και απροσήµαστοι αριθµοί 1.2. Μετατροπές προσηµασµένων και απροσήµαστων αριθµών

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2012

Αρχιτεκτονική Υπολογιστών Εργαστήριο

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ ΠΑΡΑΡΤΗΜΑ ΚΑΣΤΟΡΙΑΣ ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ

Αριθμητικά Συστήματα

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2009 ΑΠΑΝΤΗΣΕΙΣ

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών. Βοήθημα εκτέλεσης εργαστηριακής άσκησης 3: Εντολές λογικών πράξεων και εντολές κλήσης ρουτινών

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

Συστήματα Μικροϋπολογιστών

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ: ΠΛΗ-21

Συστήματα Μικροϋπολογιστών

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΛΑΜΙΑΣ. A. Μετατροπή αριθμών 1. Μετατροπή αριθμών από δεκαδικό σε δυαδικό σύστημα αρίθμησης

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2014

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Ο 8086 µπορεί να θεωρηθεί ότι αποτελείται από δύο τµήµατα επεξεργαστές, όπως φαίνεται και στο σχήµα 1, οι οποίοι είναι:

Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) Τμήματα ΚΜΕ (CPU) Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (Ι)

Οργάνωση Υπολογιστών (Ι)

ΧΡΗΣΗ ΠΛΗΚΤΡΟΛΟΓΙΟΥ, ΟΘΟΝΗΣ ΚΑΙ INTERRUPTS ΣΤΟΝ EMULATOR

Αρχιτεκτονική Υπολογιστών

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ ΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑΤΩΝ ΕΞΕΤΑΣΕΩΝ

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 1 Hello World

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ. ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 4 - Editor

Αρχιτεκτονική Υπολογιστών

Προηγμένοι Μικροεπεξεργαστές. Έλεγχος Ροής Προγράμματος

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

Προηγμένοι Μικροεπεξεργαστές. Φροντιστήριο 4 Real Mode Interrupts

Υποπρογράμματα (Subroutines)

ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΦΕΒ 2014 Καθηγητής: Νικολαΐδης Νικ. Ημ/νία εξέτασης:

Σελίδα 1 από 12. Απαντήσεις στο φυλλάδιο 55. Ερώτηση 1 η : Ένα υπολογιστικό σύστηµα αποτελείται από:

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2008

Ποια πρόταση είναι αληθής για τον Μ/Ε 8088: Είναι Μ/Ε 16bit, LSI, 40 pins, 20 γραμμές διευθύνσεων, 8 γραμμές δεδομένων

ΑΣΚΗΣΕΙΣ ΘΕΩΡΙΑΣ ΜΙΚΡΟΕΛΕΓΚΤΩΝ

Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας

Συστήματα Μικροϋπολογιστών

Ανασκόπηση στα ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ

Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

Αρχιτεκτονική x86(-64) 32-bit και 64-bit λειτουργία. Αρχιτεκτονική x86(-64) Αρχιτεκτονική επεξεργαστών x86(-64) Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

Θεωρητικές Ερωτήσεις

; Οι HL δείχνουν την επόµενη θέση µνήµης MVI A, 38H CMP H JNZ DO_FLMEM ; POP B. ; Ανάκτηση καταχωρητών απο το σωρό.

ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ Ι ΡΥΜΑ ΣΕΡΡΩΝ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ Η/Υ.

Δομημένος Προγραμματισμός

Transcript:

ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ 1. Σε ένα σύστημα με 8086 και στη διάρκεια ενός κύκλου μηχανής παρατηρούνται τα εξής: DS=D801H, SI=0102H, D 0 -D 7 =AAH, D 8 -D 15 =55H, M/IO=1, RD=0, WR=1, BHE=0 α) Ποια είναι η τιμή που έχουν οι γραμμές διεύθυνσης Α 0 -Α 19 ; Φυσική Διεύθυνση= D8010+0102=D8112H β) Πρόκειται για ανάγνωση ή εγγραφή; Μνήμης ή πόρτας; γ) Στο data bus διακινείται byte ή word και γιατί; RD=0 και M=1 ανάγνωση μνήμης Word γιατί ΒΗΕ =0 και Α 0 =0 (άρτια διεύθυνση) 2. Μία περιφερειακή συσκευή προκαλεί διακοπή και τοποθετεί στο data bus το δεδομένο 80Η κατά τη διάρκεια του παλμού /ΙΝΤΑ. Η διεύθυνση της υπορουτίνας διακοπής είναι 80Α15Η, ενώ η αρχή του τμήματος μέσα στο οποίο ευρίσκεται η υπορουτίνα είναι 8090Η. Να δοθούν οι διευθύνσεις και τα περιεχόμενα τους στον πίνακα διακοπών για την εξυπηρέτηση της συγκεκριμένης διακοπής. Εκτελείται η εντολή ΙΝΤ 80Η Διεύθυνση διανύσματος διακοπής = 4*n=4*80H=0200H Code segment=8090h Φυσική διεύθυνση=80α15η=80900η+ιρ ΙΡ=0115Η 0200H IP L =15H 0201Η ΙΡ Η =01Η 0202Η CS L =90H 0203H CS H =80H 3. Να γραφτεί πρόγραμμα το οποίο να προκαλεί τη μεγαλύτερη δυνατή χρονοκαθυστέρηση χρησιμοποιώντας μόνο τους καταχωρητές ΒΧ και CX. MOV BX,0 MOV CX,0 L1: LOOP L1 DEC BX JNZ L1 4. Σημειώστε τα αποτελέσματα μετά την εκτέλεση των παρακάτω εντολών: α) β) VAR DB 10,'A3',00010101B,10H VAR DB 16H,23H MOV AX,SEG VAR MOV AX,SEG VAR MOV DS,AX MOV DS,AX LEA BX,VAR MOV BX,OFFSET VAR MOV AL,[BX+2] ;AL=33H MOV AX,WORD PTR[BX] ;AX=2316H MOV AH,BYTE PTR[BX] ;AH=0AH INC AH ;AH=24H SUB AL,30H ;AL=03H MOV BYTE PTR[BX],AH XLAT ;AL=15H MOV BYTE PTR[BX+1],AL VAR DB 24H,16H END END

γ) MOV AX,0299H δ) MOV BX,0104H VAR1 DB 1234567890 ADD AX,BX ;AX=039DH VAR2 DB ABCDE DAA ;AX=0303H* LEN DW 5 ADD AX,BX ;AX=0407H DAA ;AX=0407H MOV AX,SEG VAR1 MOV DS,AX MOV ES,AX * Η εντολή DAA επηρεάζει μόνο MOV CX,LEN ;CX=5 τον AL. MOV DI,VAR2-1 ;DI=Τέλος του VAR1 MOV SI,LEN-1 ;SI=Τέλος του VAR2 STD ;DI=1 (μειούμενες διευθύνσεις) REP MOVSB ;VAR1 DB 12345ABCDE END 5. Να σχεδιαστεί η σύνδεση μνήμης RAM 512 KW με ένα 8086 σε min mode. - Δυο μνήμες των 512 ΚΒ η κάθε μια. - Διευθύνσεις εισόδου Α 1 Α 19 - Chip Select τα σήματα Α 0 και ΒΗΕ - WE το σήμα Write - OE το σήμα Read (Υπάρχει σε απλή μορφή στις Σημειώσεις) 6. Να γραφτεί πρόγραμμα το οποίο θα κάνει έξοδο στην πόρτα με διεύθυνση PORT, τις λέξεις που ευρίσκονται στη διεύθυνση TABLE και έχουν μήκος που ευρίσκεται στη διεύθυνση LEN. Δίνεται το τμήμα δεδομένων: LEN DB 05H PORT DW 0802H TABLE DW 1122H, ABCD,1024H,345EH, EFKL MOV AX,SEG LEN MOV DS,AX MOV CL,LEN ;CL=5 MOV DX,PORT ;DX=0802H LEA BX,TABLE ;BX=Start of TABLE L1: MOV AX,[BX] ;AX=1122H (σαν πρώτη λέξη) OUT DX,AX INC BX INC BX LOOP L1 END

7. Να γραφτεί πρόγραμμα το οποίο θα διαβάζει από το πληκτρολόγιο ένα δυαδικό αριθμό 4-bits. Μετά την είσοδο του αριθμού θα απεικονίζει στην οθόνη τον ισοδύναμο δεκαεξαδικό. MOV DL,0 ;Θα αποθηκευτούν τα 4 bits MOV CX,04H ;Μετρητής των 4 bits MOV AH,08H ;Είσοδος πλήκτρου χωρίς απεικόνιση L1: INT 21H ;Είσοδος πλήκτρου (30Η ή 31Η ) στον AL SUB AL,30H ;AL=0 ή 1 RCR AL,1 ;Το 0 ή 1 πάει στο carry flag RCL DL,1 ;Από το carry flag πάει στο LSB του DL LOOP L1 CMP DL,0AH ;Ο DL έχει τα 4 bits JB NUMBER ADD DL,37H ;Ο DL έχει 0AH έως 0FH 41H έως 46Η JMP L2 NUMBER: ADD DL,30H ;Ο DL έχει 00H έως 09H 30H έως 39H L2: ΜOV AH,02H ;Εκτύπωση στην οθόνη INT 21H END 8. Να γραφτεί πρόγραμμα το οποίο με τη βοήθεια της εντολής ΙΝΤ 21Η ΑΗ=0ΑΗ να διαβάζει μέχρι δέκα αριθμητικούς χαρακτήρες (παράλληλα θα τυπώνονται στην οθόνη). Στη συνέχεια να τους εκτυπώνει στην οθόνη με τη βοήθεια της διακοπής ΙΝΤ 21Η ΑΗ=09Η. BUF DB 10 ;Έως 10 πλήκτρα (μέγιστος αριθμός) DB 0 ; Αριθμός πατημένων πλήκτρων (Εντολή ΙΝΤ 21Η με ΑΗ=0ΑΗ) DB 20 DUP (?) ;Αποθήκη πλήκτρων MOV AX,SEG BUF MOV DS,AX LEA DX,BUF ;Προϋπόθεση λειτουργίας της κλήσης διακοπής MOV AH,0AH INT 21H ;Το πρόγραμμα περιμένει πατήματα πλήκτρων (έως 10) ή Carriage ;Return για να πάει στην επόμενη εντολή LEA ΒΧ,BUF+2 ;Ο BX δείχνει στην αρχή των πλήκτρων MOV AL,[BX-1] ;AL=Αριθμός πλήκτρων MOV AH,0 ADD BX,AX ;Ο ΒΧ δείχνει μια θέση μετά το τελευταίο πλήκτο MOV [BX],'$' ;Η κλήση απεικόνισης με ΑΗ=09 Η απαιτεί η συμβολοσειρά να ;τελειώνει σε $ LEA DX,BUF+2 ;Ο DX δείχνει στην αρχή των πλήκτρων MOV AH,09H INT 21H END

ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ 1. Έστω ότι εκτελείται η εντολή ΙΝΤ 23Η. Η αρχή του τμήματος κώδικα (code segment) είναι 8090 Η, ενώ η διεύθυνση της υπορουτίνας διακοπής είναι η 80Β00 Η. Να δοθούν οι διευθύνσεις και τα περιεχόμενα τους στον πίνακα διακοπών για την εξυπηρέτηση της συγκεκριμένης διακοπής. Εκτελείται η εντολή ΙΝΤ 23 Η Διεύθυνση διανύσματος διακοπής = 4*n=4*23 H=0008C H Code segment=8090 H και ΥΕΔ=80Β00 Η Φυσική διεύθυνση ΥΕΔ=80Β00 Η=CS:ΙΡ=80900 H+IP ΙΡ=0200 Η 008CH IP L =00H 008DΗ ΙΡ Η =02Η 008EΗ CS L =90H 008FH CS H =80H 2. Με τη βοήθεια της εντολής MOVSB, να μεταφερθούν τα δεδομένα VAR1 μετά τα δεδομένα ABCDE. Το τμήμα δεδομένων είναι: VAR1 DB 1234567890 VAR2 DB ABCDE,10 DUP (0) START: MOV AX,SEG VAR1 MOV DS,AX MOV ES,AX MOV SI,OFFSET VAR1 ;Δείχνει την αρχή του πρώτου string MOV DI,OFFSEΤ VAR2+5 ;Δείχνει τη θέση προορισμού CLD ;Σημαία κατεύθυνσης (αύξηση) MOV CX, VAR2-VAR1 ;Μήκος μεταθέσεων (δηλαδή 10) REPNE MOVSB ;Επαναληπτική μετακίνηση byte END START 3. Να γραφτεί πρόγραμμα το οποίο θα διαβάζει από το πληκτρολόγιο μόνο τους αριθμούς 0 ή 1. Στη συνέχεια θα εκτυπώνει στην οθόνη το ΕΝΑ ή ΜΗDEN ανάλογα με την τιμή του πλήκτρου. N1 DB ENA$ N2 DB MHDEN$ START: AGAIN: MOV AX, SEG N1 MOV DS,AX MOV ES,AX MOV AH,08H INT 21H CMP AL, 1 JE ENA CMP AL, 0 JNE AGAIN

BACK: ENA: MOV DX,OFFSET N2 MOV AH,09H INT 21H JMP AGAIN MOV DX,OFFSET N1 JMP BACK END START 4. Σε ένα σύστημα με επεξεργαστή τον 8086 χρησιμοποιείται μνήμη 64 ΚΒ (δηλαδή CS=DS=ES=SS=9000 H). Ο κώδικας προγράμματος ξεκινάει από τη διεύθυνση offset 2000 H, ενώ τα τμήματα δεδομένων DS και ES καταλαμβάνουν το χώρο από 0000Η έως 1FFF H. Ο σωρός του συστήματος καταλαμβάνει το χώρο Ε000 H έως FFFF H. α) Να σχεδιαστεί ο χάρτης μνήμης με τα τμήματα χρησιμοποιώντας φυσικές διευθύνσεις. β) Τι θα συμβεί εάν εκτελεστούν οι παρακάτω εντολές: MOV SI,1000H MOV AX,5AB6H MOV [DS:SI+2],AL α) 0000 H ΔΕΔΟΜΕΝΑ 1FFF H 2000 H 64 ΚΒ 1 ΜΒ ΚΩΔΙΚΑΣ ΣΩΡΟΣ DFFF H E000 H FFFF H β) Θα μεταφερθεί το AL=B6 H στη λογική διεύθυνση DS:SI+2=0000 H:1000 H +2 ή στη φυσική διεύθυνση 00000 Η + 1000 Η +2 = 01002 Η, η οποία είναι περιοχή δεδομένων σύμφωνα με το προηγούμενο γράφημα.

5. Να γραφτεί πρόγραμμα το οποίο θα αναζητά σε μια συμβολοσειρά την ύπαρξη ενός χαρακτήρα και θα εκτυπώνει ΝΑΙ ή ΟΧΙ. Το τμήμα δεδομένων είναι: CHAR EQU X STR DB H ARXITEKTONIKH EINAI TO PIO ORAIO MATHIMA L1 DB NAI$ L2 DB OXI$ START: MOV AX,SEG STR MOV DS,AX MOV ES,AX MOV AL,CHAR ;AL= X MOV DI,OFFSET STR MOV CX,L1-STR ;Ευρίσκει το μήκος της συμβολοσειράς CLD ;Σημαία κατεύθυνσης (αύξηση) BACK: SCASB ;Σύγκριση σε συμβολοσειρά JE FOUND ;Ο χαρακτήρας βρέθηκε (ΝΑΙ) LOOP BACK MOV DX,OFFSET L2 ;Δεν βρέθηκε ο χαρακτήρας (ΟΧΙ) NEXT: MOV AH,09H INT 21H.EXIT FOUND: MOV DX,OFFSET L1 ;Δείχνει την αρχή του ΝΑΙ JMP NEXT END START

ΑΠΑΝΤΗΣΕΙΣ ΣΤΑ ΘΕΜΑΤΑ ΤΗΣ Α ΠΕΡΙΟΔΟΥ ΕΑΡΙΝΟΥ 2005-2006 1. Ένα πρόγραμμα χρησιμοποιεί μόνο ένα μπλοκ μνήμης 64 ΚΒ για όλα τα τμήματα (CS=DS=ES=SS=8090 H). Έστω ότι εκτελείται η ακόλουθη εντολή:...... 80A16 CD INT 31H 80A17 31 α) Να σχεδιαστεί ο χάρτης μνήμης με λογικές και φυσικές διευθύνσεις. INT 00 H IPL IPH CSL CSH 00000 H Πίνακας διακοπών 003FF H CS=DS=ES=SS=8090 H ΑΡΧΗ SEGMENT 80900 H (CS=8090 H, IP=0000 H) Εντολή INT 31 H 80A16 H=80900 H+ 0116 H YED (CS=8090 H, IP=1300 H) 81C00 H=80900 H+1300 H SP=FFFF H ΤΕΛΟΣ SEGMENT 908FF H (CS=8090 H, IP=FFFF H) FFFFF H β) Εάν η υπορουτίνα διακοπής ευρίσκεται στη φυσική διεύθυνση 81C00 H, να δοθούν οι διευθύνσεις και τα περιεχόμενα τους στον πίνακα διακοπών για την εξυπηρέτηση της συγκεκριμένης διακοπής. Διεύθυνση interrupt vector=4*n=4*31 H=4*49=196=C4 H 0000:00C4 H=000C4 H=IPL=00 H 0000:00C5 H=000C5 H=IPH=13 H 0000:00C6 H=000C6 H=CSL=90 H 0000:00C7 H=000C7 H=CSH=80 H γ) Εάν SP=FFFF H, να σχεδιαστεί ο σωρός (δηλ. λογικές και φυσικές διευθύνσεις) και τα περιεχόμενά του αμέσως μετά την εκτέλεση της εντολής. Ποιο θα είναι το νέο περιεχόμενο του SP; (Ο σωρός λειτουργεί ως εξής: μειώνει αποθηκεύει μειώνει ).

SP(νέα τιμή)=sp-6=fff9 H SP-1=FFFE H IPL=18 H IPH=01 H CSL=90 H CSH=80 H FLAGS (LOW) FLAGS (HIGH) segment 2. Να απαντηθούν οι παρακάτω ερωτήσεις: α) Να σχεδιαστεί σε μπλοκ διάγραμμα ο τρόπος απόπλεξης του διαύλου διευθύνσεων (Address Bus) από το δίαυλο δεδομένων (Data Bus). AD0-AD7 LATCH A0-A7 ALE D0-D7 CPU D8-D15 DATA BUS D0-D15 ADDRESS BUS A0-A19 AD8-AD15 LATCH A8-A15 ALE A16-A19 β) Να σχεδιαστεί σε μπλοκ διάγραμμα ο τρόπος σύνδεσης του 8086 με ένα περιφερειακό εισόδου.

ALE AD0-AD15 ΚΥΚΛΩΜΑ ΑΠΟΠΛΕΞΗΣ Α0-Α15 ΑΠΟΚΩΔΙΚΟΠΟΙΗΤΗΣ ΔΙΕΥΘΥΝΣΕΩΝ /CS OUT CPU M-/IO LOW for IO Διεύθυνση πόρτας LOW εάν η δ/νση της πόρτας είναι η ορθή. /RD LOW for READ OR LOW AD0-AD7 INPUT PORT /CS γ) Να σχεδιαστεί σε μπλοκ διάγραμμα ο τρόπος σύνδεσης του 8086 με μνήμη 1 ΜΒ (ή 512 KW). D0-D15 D8-D15 512 KB D0-D7 512 KB CPU AD 0 -AD 15 DECODER A 1 -A 19 /CS /CS ALE /BHE A0 Περιττές διευθύνσεις Άρτιες διευθύνσεις

3. Να απαντηθούν οι παρακάτω ερωτήσεις: α) Να γραφτούν οι εντολές για να πραγματοποιηθεί η πράξη: 45+17=62. mov al,45h add al,17h daa ;al=5ch ;al=62h β) Να γραφτούν οι εντολές για να πραγματοποιηθεί η πράξη: 45+97=142. mov ah,00h mov al,45h add al,97h ;al=dch daa ;al=42h και CF=1 adc ah,00h ;ah=01h, al=42h (142) γ) AL=13 H. Να γραφτούν οι εντολές για τη μετατροπή του σε δεκαδικό στον AL. mov al,13h mov bl,10 div bl mov cx,4 shl al,cl or al,ah ;bl=0ah ;ah=09h, al=01h ;al=10h ;al=19h 4. Να απαντηθούν οι παρακάτω ερωτήσεις: α) Δώστε το αποτέλεσμα του παρακάτω προγράμματος:.data char db ABCDEFG123456.code mov ax,seg char mov ds,ax mov al,10 mov bx,offset char xlat xlat ------- AL [BX+AL]. Επομένως AL=34h. β) Δώστε το αποτέλεσμα του παρακάτω προγράμματος:.data mov al,[bx+si+5] ;al=42h (B) var1 db 123456ABCDEF add al,04h ;al=46h (F) var2 db 12 dup(0) mov [bx+si+12],al ;[var2+2].code mov ax,seg var1 mov ds,ax mov si,02h mov bx,offset var1 Στη θέση var2+2 αποθηκεύεται ο αριθμός 46 H(ή το F).

γ) Δώστε το αποτέλεσμα του παρακάτω προγράμματος:.data var1 db 12345ABCDE var2 10dup(0).code mov ax,seg var1 mov ds,ax mov es,xa mov si,offset var1+4 ;point to 5 mov di,offset var2+9 ;point to end var2 mov cx,05h std ;decrement direction repne movsb ;repeat movsb until cx=0 Αποτέλεσμα: var2 0,0,0,0,0,1,2,3,4,5 5. Να γραφτεί πρόγραμμα το οποίο με τη βοήθεια της εντολής ΙΝΤ 21Η ΑΗ=0ΑΗ να διαβάζει μέχρι επτά αριθμητικούς χαρακτήρες. Στη συνέχεια να εκτυπώνει στην οθόνη τον πραγματικό αριθμό πληκτρολογήσεων και τους χαρακτήρες με τη βοήθεια της διακοπής ΙΝΤ 21Η ΑΗ=09Η. BUF DB 8 ;Έως 7 πλήκτρα (μέγιστος αριθμός) + CR DB 0 ;Αριθμός πατημένων πλήκτρων (Εντολή ΙΝΤ 21Η με ;ΑΗ=0ΑΗ) DB 8 DUP (?) ;Αποθήκη πλήκτρων MOV AX,SEG BUF MOV DS,AX LEA DX,BUF ;Προϋπόθεση λειτουργίας της κλήσης διακοπής MOV AH,0AH INT 21H ;Το πρόγραμμα περιμένει πατήματα πλήκτρων (έως 7) ;ή Carriage Return για να πάει στην επόμενη εντολή LEA ΒΧ,BUF+2 ;Ο BX δείχνει στην αρχή των πλήκτρων MOV AL,[BX-1] ;AL=Αριθμός πλήκτρων MOV AH,0 ADD BX,AX ;Ο ΒΧ δείχνει μια θέση μετά το τελευταίο πλήκτο MOV [BX],'$' ;Η κλήση απεικόνισης με ΑΗ=09H απαιτεί η ;συμβολοσειρά να τελειώνει σε $ ADD AL,30H ;AL=ASCII του αριθμού πλήκτρων LEA BX,BUF+1 ;Διεύθυνση αριθμού πλήκτρων MOV [BX],AL MOV DX,BX ;Ο DX δείχνει στον αριθμό των πλήκτρων MOV AH,09H INT 21H END

ΑΠΑΝΤΗΣΕΙΣ ΣΤΑ ΘΕΜΑΤΑ ΤΗΣ Β ΠΕΡΙΟΔΟΥ ΕΑΡΙΝΟΥ 2005-2006 1. Ένα πρόγραμμα χρησιμοποιεί μόνο ένα μπλοκ μνήμης 64 ΚΒ για όλα τα τμήματα (CS=DS=ES=SS=20Α0 H). Έστω ότι εκτελείται η ακόλουθη εντολή: 21D00 FF 21D01 00 21D02 76 21D03...... CALL 7600H α) Να σχεδιαστεί ο χάρτης μνήμης με λογικές και φυσικές διευθύνσεις. Συγκεκριμένα να αναφερθούν: Αρχή και τέλος μνήμης, αρχή και τέλος τμήματος, αρχή υπορουτίνας, θέση δείκτη σωρού. 00000 H CS=DS=ES=SS=20A0 H ΑΡΧΗ SEGMENT 20A00 H (CS=20A0 H, IP=0000 H) Εντολή 21D00 H=20A00 H+ 1300 H SP=FFFF H CALL 7600 H ΥΠΟΡΟΥΤΙΝΑ (CS=20Α0 H, IP=7600 H) 28000 H=20Α00 H+7600 H ΤΕΛΟΣ SEGMENT (CS=20Α0 H, IP=FFFF H) 309FF H=20A00 Η+FFFF H FFFFF H β) Εάν SP=FFFF H, να σχεδιαστεί ο σωρός (δηλ. λογικές και φυσικές διευθύνσεις) και τα περιεχόμενά του αμέσως μετά την εκτέλεση της εντολής. Ποιο θα είναι το νέο περιεχόμενο του SP; (Ο σωρός λειτουργεί ως εξής: μειώνει αποθηκεύει μειώνει ). Η offset διεύθυνση της επόμενης εντολής είναι 1303 Η. Αυτή αποθηκεύεται στο σωρό, ο οποίος έχει τιμή FFFD H μετά την εκτέλεση της εντολής CALL.

segment SP(νέα τιμή)=sp-2=fffd H SP-1=FFFE H IPL=03 H IPH=13 H 2. Να απαντηθούν οι παρακάτω ερωτήσεις: α) Δίνεται:.data var db 45h,97h res db 00h,00h.code Να γραφτεί πρόγραμμα το οποίο θα προσθέτει τα περιεχόμενα του πίνακα var (αριθμοί BCD) και θα αποθηκεύει το δεκαδικό αποτέλεσμα στη θέση res (το MSB πρώτο). mov ax,seg var mov ds,ax mov ah,0 lea bx,var mov al,[bx] mov dl,[bx+1] add al,dl daa ;al=42h (δεκαδικός), CF=1 (>99) adc ah,0 ;ah=01h, al=42h lea bx,res mov [bx],ah mov [bx+1],al β) Δίνεται:.data var db 13h,1Αh res db 00h,00h.code Να γραφτεί πρόγραμμα το οποίο θα μετατρέπει τα περιεχόμενα του πίνακα var σε ισοδύναμους δεκαδικούς αριθμούς σε συνεπτυγμένη μορφή (π.χ. 19 και 26) και θα τους αποθηκεύει στη θέση res. next: mov ax,seg var mov ds,ax mov cx,2 mov si,0 mov dl,10 lea bx,var mov ah,0 mov al,[bx+si] div dl shl al,1 shl al,1 shl al,1 shl al,1 add al,ah ;μετρητής για 2 bytes ;δείκτης ;μηδενισμένο επειδή η διαίρεση ;που θα ακολουθήσει είναι: (ahal) ;δια (10) ;διαιρετέος=0013h (ah=00,al=13h) ;Διαίρεση με το 10 (al=πηλίκο, ;ah=υπόλοιπο) ;al=πηλίκο=01h ;al=10h (shift αριστερά 4 φορές) ;al=10h+09h=19h

lea bx,res mov [bx+si],al inc si loop next 3. Να απαντηθούν οι παρακάτω ερωτήσεις: α) Δώστε το αποτέλεσμα του παρακάτω προγράμματος:.data var1 db 12345 var2 db 5 dup(0).code mov ax,seg var1 mov ds,ax mov si,0 mov cx,5 next: lea bx,var1 mov al,[bx+si] sub al,30h shl al,1 lea bx,var2 mov [bx+si],al inc si loop next ;al=αριθμός (01,02, ) ;x2 al=02,04,06,08,0a Αρχικά: var2 00 00 00 00 00 Τελικά: var2 02 04 06 08 0A β) Δώστε το αποτέλεσμα του παρακάτω προγράμματος:.data var1 db 12345ABCDE var2 db 10 dup (0).code mov ax,seg var1 mov ds,ax mov es,ax mov cx,05h mov si,offset var1+5 mov di,offset var2 cld repne movsb ;αύξουσες δνσεις ;μετακίνηση cx φορές Αρχικά: var2 00 00 00 00 00 00 00 00 00 00 Τελικά: var2 ABCDE,00,00,00,00,00 γ) Δώστε το αποτέλεσμα του παρακάτω προγράμματος:.data var db 10,'A3',00010101B,10H.code mov ax,seg var1 mov ds,ax lea bx,var mov al,[bx+2] mov ah, [bx] sub al,30h xlat ;al=33h ;ah=0ah ;al=03h ;al=00010101b=15h

ah=0ah και al=15h 4. Να γραφτεί πρόγραμμα το οποίο με τη βοήθεια της εντολής ΙΝΤ 21Η ΑΗ=0ΑΗ να διαβάζει μέχρι δέκα αριθμητικούς χαρακτήρες. Στη συνέχεια να εκτυπώνει στην οθόνη μόνο τον τελευταίο αριθμό που έχει εισαχθεί. BUF DB 11 ;Έως 10 πλήκτρα (μέγιστος αριθμός) + CR DB 0 ;Αριθμός πατημένων πλήκτρων (Εντολή ΙΝΤ 21Η με ;ΑΗ=0ΑΗ) DB 11 DUP (?) ;Αποθήκη πλήκτρων MOV AX,SEG BUF MOV DS,AX LEA DX,BUF ;Προϋπόθεση λειτουργίας της κλήσης διακοπής MOV AH,0AH INT 21H ;Το πρόγραμμα περιμένει πατήματα πλήκτρων (έως ;10) και Carriage Return για να πάει στην επόμενη ;εντολή LEA ΒΧ,BUF+1 ;Ο BX δείχνει στον αριθμό των πλήκτρων MOV AL,[BX] ;AL=Αριθμός πλήκτρων MOV AH,0 ADD BX,AX ;Ο ΒΧ δείχνει το τελευταίο πλήκτο MOV AL,[BX] ; AL=ASCII του τελευταίου πλήκτρου MOV DL,AL MOV AH,02H INT 21H END 5. Να γραφτεί πρόγραμμα το οποίο να διαβάζει έναν αριθμό 00 έως 99 από το πληκτρολόγιο (π.χ. 14) και να εκτυπώνει στην οθόνη τον ισοδύναμο δυαδικό αριθμό (π.χ. 00010100). MOV AH,08H ;είσοδος πλήκτρου (π.χ. 1) INT 21H SUB AL,30H ;al=31h-30h=01h MOV BH,AL ;bh=01h MOV AH,08H ;είσοδος πλήκτρου (π.χ. 4) INT 21H SUB AL,30H ;al=34h-30h=04h MOV BL,AL ;bl=04h SHL BH,1 SHL BH,1 SHL BH,1 SHL BH,1 ;bh=10h OR BH,BL ;bh=14h MOV CX,08H NEXT: RCL BH,1 ;το CF θα περιέχει κάθε φορά το msb του bh JC ENA ;εάν είναι 1 τύπωσε 1 MOV DL,30H ;έάν είναι 0 τύπωσε 0 MOV AH,02H INT 21H LOOP NEXT JMP TELOS ENA: MOV DL,31H MOV AH,02H INT 21H LOOP NEXT ;όκτώ φορές TELOS:.EXIT

6. Με τη βοήθεια της εντολής movsb, να μεταφερθούν τα δεδομένα var1 μετά τα δεδομένα ABCDE. Το τμήμα δεδομένων είναι:.data var1 db 1234567890 var2 db ABCDE,10 dup (0).code mov ax,seg var1 mov ds,ax mov es,ax mov cx,10 mov si,offset var1 mov di,offset var2+5 cld repne movsb ;αύξουσες δνσεις ;μετακίνηση cx φορές

ΑΠΑΝΤΗΣΕΙΣ ΣΤΑ ΘΕΜΑΤΑ ΤΗΣ Α ΠΕΡΙΟΔΟΥ ΧΕΙΜΕΡΙΝΟΥ 2006-2007 A1. Ένα πρόγραμμα χρησιμοποιεί μόνο ένα μπλοκ μνήμης 64 ΚΒ για όλα τα τμήματα (CS=DS=ES=SS=81B0 H, SP=0000H). Έστω ότι εκτελούνται οι ακόλουθες εντολές:... 83A13 B8 MOV AX,59H 83A14 59 83A15 00 83A16 FF CALL 2F31H 83A17 31 83A18 2F ΥΠΟΡΟΥΤΙΝΑ 04 65 ADD AL,65H 27 DAA 50 PUSH AX 58 POP AX C3 RET α) Να σχεδιαστεί ο χάρτης μνήμης με λογικές και φυσικές διευθύνσεις (Αρχή και τέλος τμήματος, αρχή και τέλος εντολών, αρχή και τέλος υπορουτίνας, αρχή σωρού). β) Να σχεδιαστεί ο σωρός (δηλ. λογικές και φυσικές διευθύνσεις) και τα περιεχόμενά του αμέσως μετά την εκτέλεση της υπορουτίνας. Ποιές θα είναι οι τιμές των καταχωρητών SP και AX; (Ο σωρός λειτουργεί ως εξής: μειώνει αποθηκεύει μειώνει ). Β3. Ένα πρόγραμμα χρησιμοποιεί μόνο ένα μπλοκ μνήμης 64 ΚΒ για όλα τα τμήματα (CS=DS=ES=SS=81C2 H, SP=0000H). Έστω ότι εκτελούνται οι ακόλουθες εντολές:... 83A13 B8 MOV AX,54H 83A14 54 83A15 00 83A16 FF CALL 2F2AH 83A17 31 83A18 2F ΥΠΟΡΟΥΤΙΝΑ 04 65 ADD AL,79H 27 DAA 50 PUSH AX 58 POP AX C3 RET α) Να σχεδιαστεί ο χάρτης μνήμης με λογικές και φυσικές διευθύνσεις (Αρχή και τέλος τμήματος, αρχή και τέλος εντολών, αρχή και τέλος υπορουτίνας, αρχή σωρού). β) Να σχεδιαστεί ο σωρός (δηλ. λογικές και φυσικές διευθύνσεις) και τα περιεχόμενά του αμέσως μετά την εκτέλεση της υπορουτίνας. Ποιές θα είναι οι τιμές των καταχωρητών SP και AX; (Ο σωρός λειτουργεί ως εξής: μειώνει αποθηκεύει μειώνει ).

00000 H CS=DS=ES=SS=81Β0 H/81C2 H Αρχή προγράμματος 83A13 H=81B00 H+ 1F13 H 83A13 H=81C20 H+ 1DF3 H Εντολή 83A16 H=81B00 H+ 1F16 H 83A16 H=81C20 H+ 1DF6 H Επόμενη Εντολή 83A19 H=81B00 H+ 1F19 H 83A19 H=81C20 H+ 1DF9 H Αρχή υπορουτίνας 84A31 H=81B00 H+ 2F31 H 84B4A H=81C20 H+ 2F2AH Τέλος υπορουτίνας 84A36 H=81B00 H+ 2F36 H 84B4F H=81C20 H+ 2F2F H SP=0000 H MOV AX,59H/54H CALL 2F31H/2F2AH???????????? ADD AL,65H/79H DAA PUSH AX POP AX RET ΑΡΧΗ SEGMENT 81Β00 H (CS=81Β0 H, IP=0000 H) 81C20 H (CS=81C2 H, IP=0000 H) ΤΕΛΟΣ SEGMENT 91ΑFF H (CS=81B0 H, IP=FFFF H) 91C1F H (CS=81C2 H, IP=FFFF H) FFFFF H β) 81B0H:FFFFH=91AFFH=IPH=1FH 81B0H:FFFEH=91AFEH=IPL=19H 81B0H:FFFDH=91AFDH=00H (AH=00H) 81B0H:FFFCH=91AFCH=24H (Αποτέλεσμα αθροίσματος 59+65=124. Το 1 CF και δεν τοποθετήθηκε στο σωρό) Μετά την εκτέλεση της υπορουτίνας IP=1F19H, SP=0000H, AL=24H. 81C2H:FFFFH=91C1FH=IPH=1DH 81C2H:FFFEH=91C1EH=IPL=F9H 81C2H:FFFDH=91C1DH=00H (AH=00H) 81C2H:FFFCH=91C1CH=33H (Αποτέλεσμα αθροίσματος 54+79=133. Το 1 CF και δεν τοποθετήθηκε στο σωρό) Μετά την εκτέλεση της υπορουτίνας IP=1DF9H, SP=0000H, AL=33H. παρέμεινε στο παρέμεινε στο

A2. Με τη βοήθεια της εντολής LODSB, να μετρηθούν οι αριθμητικοί χαρακτήρες που ευρίσκονται στο VAR1 και ο αριθμός τους να αποθηκευτεί στο VAR2. VAR1 DB 1A2B3C4D5E6F VAR2 DB 00H B1. Με τη βοήθεια της εντολής LODSB, να μετρηθούν οι αλφαβητικοί χαρακτήρες που ευρίσκονται στο VAR2 και ο αριθμός τους να αποθηκευτεί στο VAR1. VAR1 DB 00Η VAR2 DB 1A2B3C4D5E6F7G8H9I VAR1 DB 1A2B3C4D5E6F VAR2 DB 00H START: MOV AX, SEG VAR1 MOV DS,AX MOV ES,AX MOV CX,12 ;Στο Β1 είναι 18 CLD ;Direction flag=0 αύξηση διευθύνσεων MOV SI,OFFSET VAR1 ;Στο Β1 είναι OFFSET VAR2 MOV BX,OFFSET VAR2 ;Στο Β1 είναι OFFSET VAR1 NEXT2:LODSB CMP AL, A /CMP AL, 9 JA NEXT/JBE NEXT ;Αριθμός εάν είναι <41Η INC [BX] ;Μετρητής αριθμών NEXT: LOOP NEXT2.EXIT 0 END START Α3. Από τη φυσική διεύθυνση 2Β520Η και μετά ευρίσκονται αποθηκευμένα τα δεδομένα: 11Η, 22Η, 33Η, 44Η, 55Η, 66Η, 77Η, 88Η. Η τιμή του καταχωρητή τμήματος είναι DS=1FF0H, ενώ ο καταχωρητής ΒΧ περιέχει τη διεύθυνση μετατόπισης του πρώτου δεδομένου. α) Ποιά είναι η τιμή του ΒΧ; β) Εκτελείται η εντολή MOV AX,[BX+SI], όπου SI=01H. Ποιό είναι το περιεχόμενο του καταχωρητή ΑΧ; ] γ) Εάν ο κώδικας της παραπάνω εντολής είναι 8Β 00 και ευρίσκεται σε άρτια διεύθυνση, σε πόσους κύκλους μηχανής και σε πόσες περιόδους ρολογιού θα εκτελεστεί η εντολή; Β4. Από τη φυσική διεύθυνση 2Β6Α0Η και μετά ευρίσκονται αποθηκευμένα τα δεδομένα: 11Η, 22Η, 33Η, 44Η, 55Η, 66Η, 77Η, 88Η. Η τιμή του καταχωρητή τμήματος είναι DS=1FF0H, ενώ ο καταχωρητής ΒΧ περιέχει τη διεύθυνση μετατόπισης του πρώτου δεδομένου. α) Ποιά είναι η τιμή του ΒΧ; β) Εκτελείται η εντολή MOV AX,[BX+SI], όπου SI=02H. Ποιό είναι το περιεχόμενο του καταχωρητή ΑΧ; γ) Εάν ο κώδικας της παραπάνω εντολής είναι 8Β 00 και ευρίσκεται σε άρτια διεύθυνση, σε πόσους κύκλους μηχανής και σε πόσες περιόδους ρολογιού θα εκτελεστεί η εντολή;

EVEN ODD 2B520H/2B6A0H DS:BX=1FF0H:BX 11H 33H 55H 77H 22H 44H 66H 88H 1 F F 0 0 x x x x 2 B 5 2 0 2 B 6 A 0 BX=B620 (αρχή δεδομένων) B7A0 β) ΑΧ=3322Η/4433Η γ) Εφόσον ο κώδικας εντολής ξεκινάει από άρτια διεύθυνση, η ανάκτησή του από τη μνήμη (δηλαδή ο κύκλος μηχανής FETCH) θα γίνει σε έναν κύκλο διαδρόμου δηλαδή σε 4 περιόδους ρολογιού. Επομένως: ΚΕ = FETCH + READ MEMORY (λέξη από τις διευθύνσεις ΒΧ+1 και ΒΧ+2) Το READ MEMORY θα γίνει σε δύο κύκλους μηχανής (ή σε 8 περιόδους ρολογιού) επειδή η διεύθυνση αρχής είναι περιττή. Άρα, η εντολή θα εκτελεστεί 3 κύκλους μηχανής ή σε 12 περιόδους ρολογιού. Εφόσον ο κώδικας εντολής ξεκινάει από άρτια διεύθυνση, η ανάκτησή του από τη μνήμη (δηλαδή ο κύκλος μηχανής FETCH) θα γίνει σε έναν κύκλο διαδρόμου δηλαδή σε 4 περιόδους ρολογιού. Επομένως: ΚΕ = FETCH + READ MEMORY (λέξη από τις διευθύνσεις ΒΧ+2 και ΒΧ+3) Το READ MEMORY θα γίνει σε έναν κύκλο μηχανής (ή σε 4 περιόδους ρολογιού) επειδή η διεύθυνση αρχής είναι άρτια. Άρα, η εντολή θα εκτελεστεί 2 κύκλους μηχανής ή σε 8 περιόδους ρολογιού. Α4. Δίνεται το ακόλουθο τμήμα δεδομένων: LEN DB 10 INDEX DB 6 VAR1 DB 1234567890 VAR2 DB ABCDEFGHIJ Να γραφτεί πρόγραμμα το οποίο θα μετακινεί τη συμβολοσειρά από το στοιχείο INDEX του VAR1 έως το τέλος του VAR1 στις θέσεις από το στοιχείο INDEX του VAR2 έως το τέλος του VAR2. Στη συγκεκριμένη περίπτωση, το αποτέλεσμα του προγράμματος θα είναι: VAR2 DB ABCDE67890. Β2. Δίνεται το ακόλουθο τμήμα δεδομένων: INDEX DB 4 LEN DB 10 VAR1 DB 1234567890 VAR2 DB ABCDEFGHIJ

Να γραφτεί πρόγραμμα το οποίο θα μετακινεί τη συμβολοσειρά από το στοιχείο INDEX του VAR1 έως το τέλος του VAR1 στις θέσεις από το στοιχείο INDEX του VAR2 έως το τέλος του VAR2. Στη συγκεκριμένη περίπτωση, το αποτέλεσμα του προγράμματος θα είναι: VAR2 DB ABC4567890. LEN DB 10 INDEX DB 4 VAR1 DB 1234567890 VAR2 DB ABCDEFGHIJ START: MOV AX,SEG LEN MOV DS,AX MOV ES,AX MOV SI,OFFSET VAR1 MOV DI,OFFSET VAR2 MOV CL,[LEN] ;Συνολικό μήκος (10) MOV BL,[INDEX] ;Δείκτης θέσης (6) MOV BH,00H SUB CL,BL INC CL ;Πραγματικό μήκος μετακίνησης (5) NEXT: MOV AL,[SI+BX-1] ;Loop μετακίνησης MOV [DI+BX-1],AL INC BL LOOP NEXT.EXIT 0 END START Α5. Να απαντηθούν οι εξής ερωτήσεις: α) Να γραφτούν οι εντολές για να πραγματοποιηθεί η δεκαδική πράξη: 45+97=142. Το αποτέλεσμα να ευρίσκεται στον AX. β) AL=13 H. Να γραφτούν οι εντολές για τη μετατροπή του σε δεκαδικό στον AL (συνεπτυγμένος BCD). γ) Κατά την εκτέλεση της εντολής ΙΝΤ 10Η, σε ποιά θέση μνήμης ευρίσκεται το διάνυσμα διακοπής και από τι αποτελείται αυτό; δ) Στον ΑΧ ευρίσκεται ο μη συνεπτυγμένος BCD αριθμός 13 (ΑΧ=0103). Να γραφτούν οι εντολές για τη μετατροπή του σε συνεπτυγμένο BCD αριθμό στον καταχωρητή DL. Β5. Να απαντηθούν οι εξής ερωτήσεις: α) Να γραφτούν οι εντολές για να πραγματοποιηθεί η δεκαδική πράξη: 55+89=144. Το αποτέλεσμα να ευρίσκεται στον AX. β) AL=14 H. Να γραφτούν οι εντολές για τη μετατροπή του σε δεκαδικό στον AL (συνεπτυγμένος BCD). γ) Κατά την εκτέλεση της εντολής ΙΝΤ 12Η, σε ποιά θέση μνήμης ευρίσκεται το διάνυσμα διακοπής και από τι αποτελείται αυτό; δ) Στον ΑΧ ευρίσκεται ο μη συνεπτυγμένος BCD αριθμός 25 (ΑΧ=0205). Να γραφτούν οι εντολές για τη μετατροπή του σε συνεπτυγμένο BCD αριθμό στον καταχωρητή ΒL

α) MOV AX,45H/55Η MOV BX,97H/89Η ADD AL,BL DAA ADC AH,00H β) MOV AL,13H/14H MOV BL,10 DIV BL ;13H/14H AL=01H/02H, AH=09H/00H SHL AL,1 ;Μεταφορά του ψηφίου των δεκάδων SHL AL,1 SHL AL,1 SHL AL,1 ;AL=10H/20H OR AL,AH ;AL=19H/20H γ) Διάνυσμα στη θέση μνήμης 4*n=4*10H=64 ή 00040H έως και 00043Η. 00040Η = IPL 00041H = IPH 00042H =CSL 00043H =CSH Διάνυσμα στη θέση μνήμης 4*n=4*12H=72 ή 00048H έως και 0004BΗ. 00048Η = IPL 00049H = IPH 0004AH =CSL 0004BH =CSH δ) MOV AX=0103H/0205H SHL AH,1 SHL AH,1 SHL AH,1 SHL AH,1 OR AH,AL MOV DL,AH/MOV BL,AH

ΑΠΑΝΤΗΣΕΙΣ ΣΤΑ ΘΕΜΑΤΑ ΤΗΣ Β ΠΕΡΙΟΔΟΥ ΧΕΙΜΕΡΙΝΟΥ 2006-2007 A1. Μία περιφερειακή συσκευή προκαλεί διακοπή και τοποθετεί στο data bus το δεδομένο 80Η κατά τη διάρκεια του παλμού /ΙΝΤΑ. Η διεύθυνση της υπορουτίνας διακοπής είναι 80Α15Η, ενώ η αρχή του τμήματος μέσα στο οποίο ευρίσκεται η υπορουτίνα είναι 8090Η. Να δοθούν οι διευθύνσεις και τα περιεχόμενα τους στον πίνακα διακοπών για την εξυπηρέτηση της συγκεκριμένης διακοπής. B4. Μία περιφερειακή συσκευή προκαλεί διακοπή και τοποθετεί στο data bus το δεδομένο 41Η κατά τη διάρκεια του παλμού /ΙΝΤΑ. Η διεύθυνση της υπορουτίνας διακοπής είναι 81B2CΗ, ενώ η αρχή του τμήματος μέσα στο οποίο ευρίσκεται η υπορουτίνα είναι 8090Η. Να δοθούν οι διευθύνσεις και τα περιεχόμενα τους στον πίνακα διακοπών για την εξυπηρέτηση της συγκεκριμένης διακοπής. Εκτελείται η εντολή ΙΝΤ 80Η Διεύθυνση διανύσματος διακοπής = 4*n=4*80H=0200H Code segment=8090h Φυσική διεύθυνση=80α15η=80900η+ιρ ΙΡ=0115Η 0200H IP L =15H 0201Η ΙΡ Η =01Η 0202Η CS L =90H 0203H CS H =80H Εκτελείται η εντολή ΙΝΤ 41Η Διεύθυνση διανύσματος διακοπής = 4*n=4*41H=0104H Code segment=8090h Φυσική διεύθυνση=81b2cη=80900η+ιρ ΙΡ=122CΗ 0104H IP L =2CH 0105Η ΙΡ Η =12Η 0106Η CS L =90H 0107H CS H =80H A2. Να μεταφερθούν τα δεδομένα VAR1 ανάμεσα στα δεδομένα του VAR2 (το αποτέλεσμα θα είναι A1234567890B). Το VAR1 είναι μεταβλητού μήκους και το τέλος του σηματοδοτείται από τον κωδικό FF. Το τμήμα δεδομένων είναι: VAR1 DB 1234567890, 0FFH VAR2 DB AB, 100 DUP(0) B2. Να μεταφερθούν τα δεδομένα VAR2 ανάμεσα στα δεδομένα του VAR1 (το αποτέλεσμα θα είναι A1234567890B). Το VAR2 είναι μεταβλητού μήκους και το τέλος του σηματοδοτείται από τον κωδικό AA. Το τμήμα δεδομένων είναι: VAR1 DB AB, 100 DUP(0) VAR2 DB 1234567890, 0AAH

VAR1 DB 1234567890, 0FFH VAR2 DB AB, 100 DUP(0) START: MOV AX,SEG VAR1/VAR2 MOV DS,AX MOV ES,AX MOV BX,OFFSET VAR1/VAR2 ;ΒΧ=Δνση VAR1 MOV CX,0 ABOVE: MOV AL,[BX] CMP AL,0FFH/0AAH ;Χαρακτήρας τέλους JZ NEXT INC BX INC CX JMP ABOVE NEXT: ;CX=0AH (Αριθμός χαρακτήρων VAR1) MOV AL,[VAR2+1]/[VAR1+1] PUSH AX MOV SI,OFFSET VAR1/VAR2 MOV DI,OFFSET VAR2/VAR1 INC DI CLD REP MOVSB POP AX MOV [DI],AL.EXIT 0 END START ;Το «Β» στο σωρό ;Μετακίνηση των χαρακτήρων ;VAR1 από τη θέση του «Β» και μετά ;Ανάκτηση του «Β» από το σωρό ;Αποθήκευση στο τέλος A3. Να απαντηθούν οι παρακάτω ερωτήσεις: α) Η εντολή MOV [BX],AX ευρίσκεται στη διεύθυνση 0114Η και έχει κωδικό 89 07. Η τιμή του καταχωρητή ΒΧ είναι 2001Η και του ΑΧ είναι 0Α24Η. Να περιγραφούν οι κύκλοι μηχανής για την εκτέλεση της εντολής (περιεχόμενα του Address και Data bus). β) Εξηγείστε συνοπτικά πως λειτουργεί η ουρά εντολών και πως επιδρά στην ταχύτητα επεξεργασίας. γ) Να σχεδιαστεί η απόπλεξη του Address από το Data Bus στον 8086. δ) Εκτελείται η εντολή PUSH AX, όπου ΑΧ=0Α24Η και SP=FF82H. Σε πόσες περιόδους ρολογιού θα αποθηκευτεί ο ΑΧ στο σωρό; B3. Να απαντηθούν οι παρακάτω ερωτήσεις: α) Η εντολή MOV [BX],AX ευρίσκεται στη διεύθυνση 0220Η και έχει κωδικό 89 07. Η τιμή του καταχωρητή ΒΧ είναι 15C2Η και του ΑΧ είναι 1A3BΗ. Να περιγραφούν οι κύκλοι μηχανής για την εκτέλεση της εντολής (περιεχόμενα του Address και Data bus). β) Εξηγείστε συνοπτικά πως λειτουργεί η ουρά εντολών και πως επιδρά στην ταχύτητα επεξεργασίας. γ) Να σχεδιαστεί η απόπλεξη του Address από το Data Bus στον 8086. δ) Εκτελείται η εντολή PUSH AX, όπου ΑΧ=052BΗ και SP=FF2CH. Σε πόσες περιόδους ρολογιού θα αποθηκευτεί ο ΑΧ στο σωρό;

α) Η εντολή έχει κωδικό 2 bytes και ξεκινάει από άρτια διεύθυνση. Συνεπώς η ανάγνωσή της από τη μνήμη (FETCH) θα γίνει σε 1 κύκλο διαδρόμου, ο οποίος αποτελείται από 4Τ. Μετά το FETCH, θα ακολουθήσει η εγγραφή στη μνήμη (διευθύνσεις 2001Η και 2002Η) του AL=24Η και AH=0ΑΗ αντίστοιχα. Σε πόσους κύκλους διαδρόμου θα γίνει αυτή η εγγραφή? Επειδή η διεύθυνση είναι περιττή, αυτό θα γίνει σε δύο κύκλους διαδρόμου (δηλαδή πρώτα θα αποθηκευτεί ο AL στη 2001 Η και μετά ο ΑΗ στη 2002 Η) ή σε 8Τ. Συνολικά 3 κύκλοι διαδρόμου ή 12Τ. Στο FETCH Address Bus=0114H και Data Bus=8907H. Στον πρώτο κύκλο μηχανής εγγραφής Address Bus=2001H και Data Bus=24ΧΧΗ. Ο με τοποθετεί τα περιεχόμενα του AL στο περισσότερο σημαντικό του Data Bus επειδή η περιττή μνήμη παίρνει δεδομένα από το D8-D15. Τα D0-D7 πηγαίνουν στην άρτια μνήμη η οποία είναι απενεργοποιημένη. Στον δεύτερο κύκλο μηχανής εγγραφής Address Bus=2002H και Data Bus=ΧΧ0ΑΗ. Ο με τοποθετεί τα περιεχόμενα του AΗ στο λιγότερο σημαντικό του Data Bus επειδή η άρτια μνήμη παίρνει δεδομένα από το D0-D7. Τα D8-D15 πηγαίνουν στην περιττή μνήμη η οποία είναι απενεργοποιημένη. Η εντολή έχει κωδικό 2 bytes και ξεκινάει από άρτια διεύθυνση. Συνεπώς η ανάγνωσή της από τη μνήμη (FETCH) θα γίνει σε 1 κύκλο διαδρόμου, ο οποίος αποτελείται από 4Τ. Μετά το FETCH, θα ακολουθήσει η εγγραφή στη μνήμη (διευθύνσεις 15C2Η και 15C3Η) του AL=3BΗ και AH=1ΑΗ αντίστοιχα. Σε πόσους κύκλους διαδρόμου θα γίνει αυτή η εγγραφή? Επειδή η διεύθυνση είναι άρτια, αυτό θα γίνει σε έναν κύκλο διαδρόμου (δηλαδή ταυτόχρονα θα αποθηκευτεί ο AL στη 15C2 Η και ο ΑΗ στη 15C3 Η) ή σε 4Τ. Συνολικά 2 κύκλοι διαδρόμου ή 8Τ. Στο FETCH Address Bus=0220H και Data Bus=8907H. Στον κύκλο μηχανής εγγραφής Address Bus=15C2H και Data Bus=3B1AΗ. Ο με τοποθετεί τα περιεχόμενα του AL στο περισσότερο σημαντικό του Data Bus επειδή η περιττή μνήμη παίρνει δεδομένα από το D8-D15 και τα περιεχόμενα του AΗ στο λιγότερο σημαντικό του Data Bus επειδή η άρτια μνήμη παίρνει δεδομένα από το D0-D7. β) Η ουρά εντολών στον 8086 είναι 6 bytes στο ολοκληρωμένο του με, τα οποία γεμίζουν με τους κώδικες εντολών και τα δεδομένα που υπάρχουν σε αυτές. Αυτό γίνεται από την ειδική μονάδα προσαρμογής με τις μνήμες (BIU) όταν αυτή δεν χρησιμοποιείται. Έτσι, ο με ευρίσκει αυτά τα δεδομένα (τις περισσότερες φορές) στην ουρά και συνεπώς δεν σπαταλά χρόνο για να τα φέρει από τη μνήμη, αυξάνοντας την ταχύτητα του συστήματος. Αυτό δημιουργεί την τεχνική προόδευσης (pipelining). Όταν η ουρά αδειάζει, η BIU φροντίζει να τη γεμίζει.

γ) AD0-AD7 LATCH A0-A7 ALE D0-D7 CPU D8-D15 DATA BUS D0-D15 ADDRESS BUS A0-A19 AD8-AD15 LATCH A8-A15 A16-A19 δ) Με την εκτέλεση της εντολής, ο ΑΗ θα αποθηκευτεί στη διεύθυνση SP-1=FF81H και ο AL στη διεύθυνση SP-2=FF80H. Σε πόσους κύκλους μηχανής θα γίνει η εγγραφή αυτών των 2 bytes στη μνήμη? Επειδή η διεύθυνση είναι περιττή, θα γίνει σε δύο κύκλους διαδρόμου ή 8 Τ. Με την εκτέλεση της εντολής, ο ΑΗ θα αποθηκευτεί στη διεύθυνση SP-1=FF2ΒH και ο AL στη διεύθυνση SP-2=FF2ΑH. Σε πόσους κύκλους μηχανής θα γίνει η εγγραφή αυτών των 2 bytes στη μνήμη? Επειδή η διεύθυνση είναι περιττή, θα γίνει σε δύο κύκλους διαδρόμου ή 8 Τ. Α4. Ένα πρόγραμμα χρησιμοποιεί μόνο ένα μπλοκ μνήμης 64 ΚΒ για όλα τα τμήματα (CS=DS=ES=SS=81B0 H, SP=0000H). Η διεύθυνση της ΥΕΔ είναι 83C00H. Έστω ότι εκτελούνται οι ακόλουθες εντολές:... 83A13 B8 MOV AX,59H 83A14 59 83A15 00 83A16 CD INT 11H 83A17 11 Υ.Ε.Δ 04 65 ADD AL,65H 27 DAA 50 PUSH AX 58 POP AX C3 IRET α) Να σχεδιαστεί ο χάρτης μνήμης με λογικές και φυσικές διευθύνσεις (Αρχή και τέλος τμήματος, αρχή και τέλος εντολών, αρχή και τέλος υπορουτίνας, αρχή σωρού). β) Να σχεδιαστεί ο σωρός (δηλ. λογικές και φυσικές διευθύνσεις) και τα περιεχόμενά του αμέσως μετά την εκτέλεση της υπορουτίνας. Ποιές θα είναι οι τιμές των καταχωρητών SP και AX; (Ο σωρός λειτουργεί ως εξής: μειώνει αποθηκεύει μειώνει ). Γιατί χρησιμοποιείται η εντολή IRET και όχι η RET για την επιστροφή από την ΥΕΔ;

Β5. Ένα πρόγραμμα χρησιμοποιεί μόνο ένα μπλοκ μνήμης 64 ΚΒ για όλα τα τμήματα (CS=DS=ES=SS=81C2 H, SP=0000H). Η διεύθυνση της ΥΕΔ είναι 83C00H. Έστω ότι εκτελούνται οι ακόλουθες εντολές:... 83A13 B8 MOV AX,54H 83A14 54 83A15 00 83A16 CD INT 15H 83A17 15 Υ.Ε.Δ 04 79 ADD AL,79H 27 DAA 50 PUSH AX 58 POP AX C3 IRET α) Να σχεδιαστεί ο χάρτης μνήμης με λογικές και φυσικές διευθύνσεις (Αρχή και τέλος τμήματος, αρχή και τέλος εντολών, αρχή και τέλος υπορουτίνας, αρχή σωρού). β) Να σχεδιαστεί ο σωρός (δηλ. λογικές και φυσικές διευθύνσεις) και τα περιεχόμενά του αμέσως μετά την εκτέλεση της υπορουτίνας. Ποιές θα είναι οι τιμές των καταχωρητών SP και AX; (Ο σωρός λειτουργεί ως εξής: μειώνει αποθηκεύει μειώνει ). Γιατί χρησιμοποιείται η εντολή IRET και όχι η RET για την επιστροφή από την ΥΕΔ; (α) 00000 H CS=DS=ES=SS=81Β0 H/81C2 H Αρχή προγράμματος 83A13 H=81B00 H+ 1F13 H 83A13 H=81C20 H+ 1DF3 H Εντολή 83A16 H=81B00 H+ 1F16 H 83A16 H=81C20 H+ 1DF6 H Επόμενη Εντολή 83A18 H=81B00 H+ 1F18 H 83A18 H=81C20 H+ 1DF8 H Αρχή υπορουτίνας 83C00 H=81B00 H+ 2100 H 83C00 H=81C20 H+ 1FE0 H Τέλος υπορουτίνας 83C05 H=81B00 H+ 2105 H 83C05 H=81C20 H+ 1FE5 H SP=0000 H MOV AX,59H/54H ΙΝΤ 11H/15 H???????????? ADD AL,65H/79H DAA PUSH AX POP AX ΙRET ΑΡΧΗ SEGMENT 81Β00 H (CS=81Β0 H, IP=0000 H) 81C20 H (CS=81C2 H, IP=0000 H) ΤΕΛΟΣ SEGMENT 91ΑFF H (CS=81B0 H, IP=FFFF H) 91C1F H (CS=81C2 H, IP=FFFF H) FFFFF H

β) 81B0H:FFFFH=91AFFH= FLAGSH 81B0H:FFFEH=91AFEH= FLAGSL 81B0H:FFFDH=91AFDH=CSH=81H 81B0H:FFFCH=91AFCH=CSL=B0H 81B0H:FFFBH=91AFBH=IPH=1FH 81B0H:FFFAH=91AFAH=IPL=18H 81B0H:FFF9H=91AF9H=00H (AH=00H) 81B0H:FFF8H=91AF8AH=24H (Αποτέλεσμα αθροίσματος 59+65=124. Το 1 CF και δεν τοποθετήθηκε στο σωρό) Μετά την εκτέλεση της υπορουτίνας IP=1F18H, SP=0000H, AL=24H. 81C2H:FFFFH=91C1FH=IPH=FLAGSH 81C2H:FFFEH=91C1EH=IPL=FLAGSL 81C2H:FFFDH=91C1DH=CSH=81H 81C2H:FFFCH=91C1CH=CSL=C2H 81C2H:FFFBH=91C1BH=IPH=1DH 81C2H:FFFAH=91C1AH=IPL=F8H 81C2H:FFF9H=91C19H=00H (AH=00H) 81C2H:FFF8H=91C18H=33H (Αποτέλεσμα αθροίσματος 54+79=133. Το 1 CF και δεν τοποθετήθηκε στο σωρό) Μετά την εκτέλεση της υπορουτίνας IP=1DF8H, SP=0000H, AL=33H. παρέμεινε στο παρέμεινε στο Η εντολή IRET χρησιμοποιείται πάντα σαν επιστροφή από ΥΕΔ επειδή ανακαλεί από το σωρό και τα αποθηκευμένα FLAGS. A5. Δύο συμβολοσειρές VAR1 και VAR2 έχουν σε μόνο μία θέση έναν κοινό χαρακτήρα (στο συγκεκριμένο παράδειγμα το 3). Με τη βοήθεια μίας εντολής διαχείρισης συμβολοσειρών, να ευρεθεί η θέση του κοινού χαρακτήρα (π.χ. 5) και να αποθηκευτεί στο VAR3, ενώ ο κοινός χαρακτήρας να αποθηκευτεί στην επόμενη θέση. Το μήκος των δύο συμβολοσειρών δίνεται από τη μεταβλητή LEN. LEN DB 12 VAR1 DB 1A2B3C4D5E6F VAR2 DB 2F9C3D6E1B7A VAR3 DB 00H,00Η B1. Δύο συμβολοσειρές VAR1 και VAR2 έχουν σε μόνο μία θέση έναν κοινό χαρακτήρα (στο συγκεκριμένο παράδειγμα το D). Με τη βοήθεια μίας εντολής διαχείρισης συμβολοσειρών, να ευρεθεί η θέση του κοινού χαρακτήρα (π.χ. 8). Ο κοινός χαρακτήρας να αποθηκευτεί στη θέση VAR3, ενώ η θέση του στο VAR3+1. Το μήκος των δύο συμβολοσειρών δίνεται από τη μεταβλητή LEN. LEN DB 12 VAR1 DB 1A2B7C4D5E6F VAR2 DB 2F9C3E6D1B7A VAR3 DB 00H,00Η

LEN DB 12 VAR1 DB '1A2B3C4D5E6F' VAR2 DB '2F9C3D6E1B7A' VAR3 DB 00H START: MOV AX,SEG LEN MOV DS,AX MOV ES,AX LEA SI,VAR1 LEA DI,VAR2 MOV CL,[LEN] ;CL=12 MOV CH,0 CLD REPNE CMPSB ;Σύγκριση VAR1 (SI)-VAR2(DI) ;Σε ισότητα βγαίνει έξω από την επανάληψη MOV AL,[LEN] ;AL=12 SUB AL,CL ;AL=12 - CL=7 (ξεκίνησε από 12) = 5 MOV [VAR3],AL ;Θέση ίδιου στοιχείου MOV AL,[SI-1] ;Το ίδιο στοιχείο είναι στη δνση SI-1 MOV [VAR3+1],AL ;Αποθήκευση στην επόμενη θέση.exit 0 END START

ΑΠΑΝΤΗΣΕΙΣ ΣΤΑ ΘΕΜΑΤΑ ΤΗΣ Α ΠΕΡΙΟΔΟΥ ΕΑΡΙΝΟΥ 2006-2007 Α1. Το τμήμα δεδομένων έχει την εξής μορφή:.data str db 123456789ABCDEF,0FFH Να γραφτεί πρόγραμμα το οποίο θα αντιστρέφει την παραπάνω συμβολοσειρά στις ίδιες θέσεις μνήμης, χωρίς να χρησιμοποιηθεί καμμία άλλη θέση μνήμης δεδομένων ή σωρού. Ο αριθμός FF δείχνει το τέλος της συμβολοσειράς. B2. Το τμήμα δεδομένων έχει την εξής μορφή:.data str db ABCDEF 12345678, $ Να γραφτεί πρόγραμμα το οποίο θα αντιστρέφει την παραπάνω συμβολοσειρά στις ίδιες θέσεις μνήμης, χωρίς να χρησιμοποιηθεί καμμία άλλη θέση μνήμης δεδομένων ή σωρού. Ο χαρακτήρας $ δείχνει το τέλος της συμβολοσειράς. Τα δύο προγράμματα είναι ίδια. Η σύγκριση γίνεται με τον αντίστοιχο χαρακτήρα τέλους. str start:.data db '123456789ABCDEF',0ffh.code mov ax,@data mov ds,ax mov es,ax mov bx,offset str push bx mov cx,0 above: mov al,[bx] cmp al,0ffh jz next inc cx inc bx jmp above next: mov di,cx dec di shr cx,1 pop bx mov si,0 pali: mov al,[bx+si] mov ah,[bx+di] mov [bx+si],ah mov [bx+di],al ;αρχή buffer ;προσωρινή αποθήκευση ;εύρεση αριθμού χαρακτήρων προς αντιμετάθεση ;στο Β2 είναι cmp al, $ ;cx=0fh ;di=διεύθυνση τελευταίου χαρακτήρα ;αριθμός αντιμεταθέσεων =μήκος/2 (cx=7) ;ο bx δείχνει πάλι την αρχή ;χαρακτήρες από την αρχή ;χαρακτήρες από το τέλος ;αντιμετάθεση ;αντιμετάθεση

inc si dec di loop pali mov ax,4c00h int 21h end start Α2. Υπάρχουν οι δεκαεξαδικοί αριθμοί: 23Η, 1AΗ, 4EH, 3CH. Να δημιουργηθεί τμήμα δεδομένων με αυτούς τους αριθμούς και να γραφτεί πρόγραμμα το οποίο θα τους μετατρέπει σε BCD και θα τους αποθηκεύει στο τμήμα δεδομένων σε μη συνεπτυγμένη μορφή (unpacked BCD). Γράψτε στο τμήμα δεδομένων το αναμενόμενο αριθμητικό αποτέλεσμα. B4. Υπάρχουν οι δεκαεξαδικοί αριθμοί: 4ΕH, 3CH, 23Η, 1ΑΗ. Να δημιουργηθεί τμήμα δεδομένων με αυτούς τους αριθμούς και να γραφτεί πρόγραμμα το οποίο θα τους μετατρέπει σε BCD και θα τους αποθηκεύει στο τμήμα δεδομένων σε μη συνεπτυγμένη μορφή (unpacked BCD). Γράψτε στο τμήμα δεδομένων το αναμενόμενο αριθμητικό αποτέλεσμα..data len db 4 var1 db 23h,1ah,4eh,3ch var2 db 8 dup 0.code start: mov ax,@data mov ds,ax mov es,ax next: mov bx,offset len mov cx,0 mov cl,[bx] inc bx mov di,offset var2 mov dl,10 mov ax,0 mov al,[bx] div dl mov [di],ax inc bx inc di inc di loop next mov ax,4c00h int 21h end start ;αρχικοποίηση ;αριθμός μετατροπών (cl=4) ;ο bx δείχνει τον πρώτο αριθμό ;δείχνει την αρχή του var2 ;εύρεση δεκάδων (στον AL) και μονάδων (στον ΑΗ)

Α3 & Β3 Α3. Να σχεδιαστεί το υλικό σύνδεσης του 8086 με μνήμη 256 ΚWord σε min mode. Από τη φυσική διεύθυνση 2Α520Η και μετά ευρίσκονται αποθηκευμένα τα δεδομένα: 11Η, 22Η, 33Η, 44Η, 55Η, 66Η, 77Η, 88Η. Η τιμή του καταχωρητή τμήματος είναι DS=1FF0H, ενώ ο καταχωρητής ΒΧ περιέχει τη διεύθυνση μετατόπισης του πρώτου δεδομένου. α) Ποιά είναι η τιμή του ΒΧ; β) Εκτελείται η εντολή MOV AX,[BX+1]. Ποιό είναι το περιεχόμενο του καταχωρητή ΑΧ; Σε πόσες περιόδους ρολογιού θα εκτελεστεί; γ) Τοποθετείστε συμβολικά τα δεδομένα στη μνήμη, εξηγείστε βήμα-βήμα πως εκτελείται η εντολή και δικαιολογείστε το αποτέλεσμα. Β3. Να σχεδιαστεί το υλικό σύνδεσης του 8086 με μνήμη 256 ΚWord σε min mode. Από τη φυσική διεύθυνση 2Α5B0Η και μετά ευρίσκονται αποθηκευμένα τα δεδομένα: 11Η, 22Η, 33Η, 44Η, 55Η, 66Η, 77Η, 88Η. Η τιμή του καταχωρητή τμήματος είναι DS=1FF0H, ενώ ο καταχωρητής ΒΧ περιέχει τη διεύθυνση μετατόπισης του πρώτου δεδομένου. α) Ποιά είναι η τιμή του ΒΧ; β) Εκτελείται η εντολή MOV AX,[BX+1]. Ποιό είναι το περιεχόμενο του καταχωρητή ΑΧ; Σε πόσες περιόδους ρολογιού θα εκτελεστεί; γ) Τοποθετείστε συμβολικά τα δεδομένα στη μνήμη, εξηγείστε βήμα-βήμα πως εκτελείται η εντολή και δικαιολογείστε το αποτέλεσμα. Το ζητούμενο Σχήμα είναι το παρακάτω (σημειώσεις θεωρίας): DB0 DB15 DB8 DB15 DB0 DB7 MRDB OE Στατική RAM (256 KB) (even bytes) AB1 AB18 AB1 AB18 OE Στατική RAM (256 KB) (odd bytes) CS WE CS WE AB0 +5V MWRB RDB MRDB MWRB M/IOB AB19 BHEB WRB MWRB

EVEN ODD 2A520H/2A5B0H 11H 33H 55H 77H 22H 44H 66H 88H α) DS=1FF0H BX=2A520H/2A5B0H-1FF00H=A620H/A6B0H β) AX=3322H σε 8 περιόδους ρολογιού γιατί γίνεται ανάγνωση λέξης από περιττή διεύθυνση. γ) Στον πρώτο κύκλο διαδρόμου θα διαβαστεί το 22Η μέσω των DB8-DB15, αφού γίνουν Α0=1 (περιττή διεύθυνση-βχ=α621η/α6β1η) και /ΒΗΕ=0. Στο δεύτερο κύκλο διαδρόμου θα διαβαστεί το 33Η μέσω των DB0-DB7, αφού γίνουν Α0=0 (ζυγή διεύθυνση-βχ=α622η/α6β2η) και /ΒΗΕ=1. Εσωτερικά αντιστρέφονται τα 22Η και 33Η έτσι ώστε ΑΧ=3322Η. Α4. Ένα πρόγραμμα χρησιμοποιεί μόνο ένα μπλοκ μνήμης 64 ΚΒ για όλα τα τμήματα (CS=DS=ES=SS=20A3 H). Έστω ότι εκτελείται υποθετικά η ακόλουθη εντολή:... 219ΑC CD INT 25H 219ΑD 25 α) Εάν η υπορουτίνα διακοπής ευρίσκεται στη φυσική διεύθυνση 2CB50 H, να δοθούν οι διευθύνσεις και τα περιεχόμενά τους στον πίνακα διακοπών για την εξυπηρέτηση της συγκεκριμένης διακοπής. β) Να σχεδιαστεί με λεπτομέρεια ο χάρτης μνήμης με λογικές και φυσικές διευθύνσεις (Πίνακας διακοπών, αρχή-τέλος τμήματος, θέση εντολής, ΥΕΔ, σωρού, κλπ). γ) Εάν SP=F000 H, να σχεδιαστεί ο σωρός (δηλ. λογικές και φυσικές διευθύνσεις) και τα περιεχόμενά του αμέσως μετά την εκτέλεση της εντολής. Ποιο θα είναι το νέο περιεχόμενο του SP; (Ο σωρός λειτουργεί ως εξής: μειώνει αποθηκεύει μειώνει). Β1. Ένα πρόγραμμα χρησιμοποιεί μόνο ένα μπλοκ μνήμης 64 ΚΒ για όλα τα τμήματα (CS=DS=ES=SS=31BE H). Έστω ότι εκτελείται υποθετικά η ακόλουθη εντολή:... 35A0C CD INT 23H 35A0D 23 α) Εάν η υπορουτίνα διακοπής ευρίσκεται στη φυσική διεύθυνση 3FC0A H, να δοθούν οι διευθύνσεις και τα περιεχόμενά τους στον πίνακα διακοπών για την εξυπηρέτηση της συγκεκριμένης διακοπής. β) Να σχεδιαστεί με λεπτομέρεια ο χάρτης μνήμης με λογικές και φυσικές διευθύνσεις (Πίνακας διακοπών, αρχή-τέλος τμήματος, θέση εντολής, ΥΕΔ, σωρού, κλπ). γ) Εάν SP=F000 H, να σχεδιαστεί ο σωρός (δηλ. λογικές και φυσικές διευθύνσεις) και τα περιεχόμενά του αμέσως μετά την εκτέλεση της εντολής. Ποιο θα είναι το νέο περιεχόμενο του SP; (Ο σωρός λειτουργεί ως εξής: μειώνει αποθηκεύει μειώνει).

INT 00 H IPL IPH CSL 00000 H CSH INT 25Η INT 23Η 20H/2AH C1H/E0H A3H/BEH 20H/31H 00094 H 0008CH Πίνακας διακοπών 003FF H CS=DS=ES=SS=20Α3H/31ΒΕΗ ΑΡΧΗ SEGMENT 20Α30H/31ΒΕ0Η Εντολή 219ΑC H=20Α30 H+ 0F7C H 35A0C H=31BE0 H+ 3E2C H SP=F000 H INT 25H/23Η 1 η θέση σωρού YED 2CB50 H=20Α30 H +C120 H 3FC0A H=31BE0 H +E02AH 2FA2F H=20Α30 H+ EFFF H 40BDF H=31BE0 H+ EFFF H ΤΕΛΟΣ SEGMENT 30A2F H=20Α30 H+ FFFF H 41BDF H=31BE0 H+ FFFF H Η μορφή του σωρού είναι: IPL=7EH IPH=0FH CSL=A3H CSH=20H Flags L Flags H IPL=2EH IPH=3EH CSL=BEH CSH=31H Flags L Flags H FFFFF H

ΑΠΑΝΤΗΣΕΙΣ ΣΤΑ ΘΕΜΑΤΑ ΤΗΣ Β ΠΕΡΙΟΔΟΥ ΕΑΡΙΝΟΥ 2006-2007 A1. Στο παρακάτω κύκλωμα, ο 8086 συνδέεται με μνήμη 512 KW. α) Να σημειωθούν όλα τα σήματα του Address και Data bus καθώς επίσης και τα σήματα ελέγχου.επίσης να σημειωθεί ποια μνήμη είναι άρτια και ποια περιττή. β) DS=1ΑF0 H. Από τη φυσική διεύθυνση 1C36A Η και μετά ευρίσκονται αποθηκευμένα τα δεδομένα: 11Η, 22Η, 33Η, 44Η, 55Η, 66Η, 77Η, 88Η. Εάν ο ΒΧ δείχνει το δεδομένο 44Η, ποια είναι η τιμή του; Εκτελείται η εντολή MOV AX,[BX]. Ποιό είναι το περιεχόμενο του καταχωρητή ΑΧ; Σε πόσους κύκλους μηχανής και σε πόσες περιόδους ρολογιού θα εκτελεστεί; Εξηγείστε τους λόγους. α) D0-D15 A16-A19 D8-D15 D0-D7 CPU ALE AD0-AD15 LATCH A0-A15 512 KB /CS 512 KB /CS /BHE A0 Περιττές διευθύνσεις Άρτιες διευθύνσεις β) DS=1AF0H. Φυσική διεύθυνση=1c36ah offset=1c36a-1af00 1 A F 0 0 x x x x 146A (αρχή δεδομένων) 1 C 3 6 A Επειδή ο ΒΧ δείχνει το 44Η ΒΧ=146DH γ) ΑΧ=5544Η. Η αρχική διεύθυνση είναι περιττή μεταφορά του κάθε byte σε έναν κύκλο διαδρόμου, δηλαδή μεταφορά της λέξης σε δύο κύκλους μηχανής ή 8 περιόδους ρολογιού. Ένα διαφορετικό ερώτημα είναι σε πόσο χρόνο θα εκτελεστεί η εντολή. Η εντολή αποτελείται μόνο από τον κωδικό της και επομένως: Κ.Ε.= FETCH+READ MEMORY (44H)+READ MEMORY (55H)=12T. (Στο ερώτημα ζητούσε το χρόνο εκτέλεσης (12Τ) αλλά θεωρήθηκε σωστή και η απάντηση που έδινε το χρόνο μεταφοράς της λέξης (8Τ))

Α2. Με τη βοήθεια της εντολής MOVSB, να μεταφερθούν τα δεδομένα VAR1 μετά τα δεδομένα ABCDE. Το τμήμα δεδομένων είναι: VAR1 DB 1234567890 VAR2 DB ABCDE,10 DUP (0) START: VAR1 DB 1234567890 VAR2 DB ABCDE,10 DUP (0) MOV AX,SEG VAR1 MOV DS,AX MOV ES,AX MOV SI,OFFSET VAR1 ;Δείχνει την αρχή του πρώτου string MOV DI,OFFSEΤ VAR2+5 ;Δείχνει τη θέση προορισμού CLD ;Σημαία κατεύθυνσης (αύξηση) MOV CX, VAR2-VAR1 ;Μήκος μεταθέσεων (δηλαδή 10) REP MOVSB ;Επαναληπτική μετακίνηση byte END START Η εντολή REPNE δεν χρησιμοποιείται με την εντολή MOVSB (διόρθωση σε λύσεις προηγούμενης περιόδου) αλλά θεωρήθηκε σωστή. Α3. Δίνεται το παρακάτω πρόγραμμα (CS=DS=ES=SS=1000H, IP=0130H, SP=0000 H). ORG 0100H MOV AX,4142H INT 04H.EXIT S1 S1 S2 S2 S3 S3 ORG 0200H PROC ADD AX,0001H PUSH AX ENDP ORG 0300H PROC ADD AX,0002H PUSH AX ENDP ORG 0400H ADD AX,0003H PUSH AX ENDP

Στην αρχή της φυσικής μνήμης (00000 Η) ευρίσκονται τα δεδομένα: 00,13,12,44,56,7Α,9Ε,3F,00,02,00,10,08,5E,6E,77,00,03,00,10,56,78,9B,51,00,04,00,10 α) Να σχεδιαστεί ο χάρτης μνήμης και να σημειωθούν οι θέσεις του κυρίως προγράμματος, των διαδικασιών και του σωρού (φυσικές και λογικές διευθύνσεις). β) Ποια διαδικασία θα εκτελεστεί και γιατί; γ) Ποια θα είναι τα περιεχόμενα του σωρού μετά την εκτέλεση; α) INT 00 H IPL=00 IPH=13 CSL=12 CSH=44 00000 H Πίνακας διακοπών 003FF H CS=DS=ES=SS=1000 H ΑΡΧΗ SEGMENT 10000 H (CS=1000 H, IP=0000 H) Αρχή προγράμματος 10100 H=10000 H+ 0100 H Εντολή 10103 H=10000 H+ 0103 H Επόμενη Εντολή 10105 H=10000 H+ 0105 H MOV AX,4142H INT 4 H???????????? PROC1 =10200H PROC2 =10300H PROC1 =10400H SP=0000 H ΤΕΛΟΣ SEGMENT 1FFFF H (CS=1000 H, IP=FFFF H) FFFFF H Σημείωση: Η εντολή MOV AX,4142H αποτελείται από 3 bytes (κώδικας εντολής και τα δεδομένα 42 και 41. Η εντολή ΙΝΤ 4Η αποτελείται από 2 bytes (κώδικας εντολής και το δεδομένο 04Η). β) ΙΝΤ 04Η Interrupt Vector στη διεύθυνση 04Η*4=16 ή 10Η. Μετρώντας από την αρχή των δεδομένων ευρίσκουμε ότι IPL=00H, IPH=03H, CSL=00H, CSH=10H, δηλαδή στη 1000:0300 και επομένως τη διαδικασία S2.

γ) Με την εκτέλεση της ΥΕΔ S2, στο σωρό αποθηκεύονται με τη σειρά τα εξής: 1000:FFFF=FLAGSH 1000:FFFE=FLAGSL 1000:FFFD=CSH=10 1000:FFFC=CSL=00 1000:FFFB=IPH=01 1000:FFFA=IPL=05 Offset επόμενης εντολής του ΙΝΤ 04Η 1000:FFF9=AH=41H 1000:FFF8=AL=44H (42H+02) Α4. Υπάρχουν οι BCD αριθμοί: 23, 18, 10, 49. Να δημιουργηθεί τμήμα δεδομένων με αυτούς τους αριθμούς και να γραφτεί πρόγραμμα το οποίο θα τους μετατρέπει σε HEX και θα τους αποθηκεύει στο τμήμα δεδομένων. Γράψτε το αναμενόμενο αριθμητικό αποτέλεσμα. BCD DB 23H, 18H, 10H, 49H ;Για να περάσουν οι τιμές όπως είναι HEX 4 DUP (0) START: MOV AX,SEG BCD MOV DS,AX MOV SI,OFFSET BCD MOV DI,OFFSET HEX MOV BL,10 MOV CL,04H NEXT: MOV AL,[ SI] MOV DL,AL AND DL,0FH ;οι μονάδες στον DL (DL=03 για το πρώτο) SHR AL,1 SHR AL,1 SHR AL,1 SHR AL,1 ;οι δεκάδες στον AL (AL=02 για το πρώτο) MUL BL ;AL=02*10=20=14H ADD AL,DL ;AL=14H+03H=17H MOV [DI],AL INC SI INC DI LOOP NEXT END START Σημείωση: Απομονώνουμε τις δεκάδες του BCD αριθμού, πολλαπλασιάζουμε επί 10 και προσθέτουμε τις μονάδες.

A5. Δίνεται: VAR RES DB 45H,97H DB 00H,00H Να γραφτεί πρόγραμμα το οποίο θα προσθέτει τα περιεχόμενα του πίνακα VAR (αριθμοί BCD) και θα αποθηκεύει το δεκαδικό αποτέλεσμα στη θέση RES (το MSB πρώτο). START: VAR RES DB 45H,97H DB 00H,00H MOV AX,SEG VAR MOV DS,AX MOV BX,OFFSET VAR MOV AX,0 MOV AL,[BX] ;AL=45H MOV DL,[BX+1] ;DL=97H ADD AL,DL ;AL=DCH DAA ;AL=42 & CF=1 ADC AH,0 ;AH=01H MOV [BX+2],AH MOV [BX+3],AL END START Σημείωση: Η DAA ενεργεί μόνο στον AL και διορθώνει το δεκαεξαδικό αποτέλεσμα σε δεκαδικό. Γι αυτό το λόγο προσθέτει στο C to 6 και προκύπτει 2 και AF=1. Στη συνέχεια προσθέτει D+AF+6 και προκύπτει 4 και CF=1. Το CF δείχνει εκατοντάδες και ενσωματώνεται στον ΑΗ με μία εντολή πρόσθεσης με κρατούμενο.

B1. Υπάρχουν οι BCD αριθμοί: 49, 54, 23, 18, 10, 27. Να δημιουργηθεί τμήμα δεδομένων με αυτούς τους αριθμούς και να γραφτεί πρόγραμμα το οποίο θα τους μετατρέπει σε HEX και θα τους αποθηκεύει στο τμήμα δεδομένων. Γράψτε το αναμενόμενο αριθμητικό αποτέλεσμα. Ίδιο πρόγραμμα με το Α4, μόνο που οι αριθμοί είναι 6 αντί για 4. Β2. Δίνεται: VAR DB 46H,89H RES1 DB 00H RES2 DB 00H,00H Να γραφτεί πρόγραμμα το οποίο θα προσθέτει τα περιεχόμενα του πίνακα VAR (αριθμοί BCD) και θα αποθηκεύει το δεκαεξαδικό αποτέλεσμα στη θέση RES1 και το δεκαδικό αποτέλεσμα στη θέση RES2 (το MSB πρώτο). Πρόγραμμα όμοιο με το Α5. Εδώ αποθηκεύεται και το ενδιάμεσο δεκαεξαδικό αποτέλεσμα. START: VAR DB 46H,89H RES1 DB 00H RES2 DB 00H,00H MOV AX,SEG VAR MOV DS,AX MOV BX,OFFSET VAR MOV AX,0 MOV AL,[BX] ;AL=46H MOV DL,[BX+1] ;DL=89H ADD AL,DL ;AL=CFH MOV [BX+2],AL ;RES1 CFH DAA ;AL=35 & CF=1 ADC AH,0 ;AH=01H MOV [BX+3],AH MOV [BX+4],AL END START B3. Στο παρακάτω κύκλωμα, ο 8086 συνδέεται με μνήμη 512 KW. α) Να σημειωθούν όλα τα σήματα του Address και Data bus καθώς επίσης και τα σήματα ελέγχου.επίσης να σημειωθεί ποια μνήμη είναι άρτια και ποια περιττή. β) DS=2AD7 H. Από τη φυσική διεύθυνση 31FAC Η και μετά ευρίσκονται αποθηκευμένα τα δεδομένα: 11Η, 22Η, 33Η, 44Η, 55Η, 66Η, 77Η, 88Η. Εάν ο ΒΧ δείχνει το δεδομένο 66Η, ποια είναι η τιμή του; Εκτελείται η εντολή MOV AX,[BX]. Ποιό είναι το περιεχόμενο του καταχωρητή ΑΧ; Σε πόσους κύκλους μηχανής και σε πόσες περιόδους ρολογιού θα εκτελεστεί; Εξηγείστε τους λόγους.

α) Ίδιο με το Α1(α). β) DS=2AD7H. Φυσική διεύθυνση=31fach offset=31fac-2ad70 2 A D 7 0 x x x x 723C (αρχή δεδομένων) 3 1 F A C Επειδή ο ΒΧ δείχνει το 66Η ΒΧ=7241H γ) ΑΧ=7766Η. Η αρχική διεύθυνση είναι περιττή μεταφορά του κάθε byte σε έναν κύκλο διαδρόμου, δηλαδή μεταφορά της λέξης σε δύο κύκλους μηχανής ή 8 περιόδους ρολογιού. Ένα διαφορετικό ερώτημα είναι σε πόσο χρόνο θα εκτελεστεί η εντολή. Η εντολή αποτελείται μόνο από τον κωδικό της και επομένως: Κ.Ε.= FETCH+READ MEMORY (44H)+READ MEMORY (55H)=12T. (Στο ερώτημα ζητούσε το χρόνο εκτέλεσης (12Τ) αλλά θεωρήθηκε σωστή και η απάντηση που έδινε το χρόνο μεταφοράς της λέξης (8Τ)) B4. Με τη βοήθεια της εντολής MOVSB, να μεταφερθούν τα δεδομένα VAR1 πριν από τα δεδομένα AAAAA. Το τμήμα δεδομένων είναι: VAR1 DB 1234567890ABCDEF VAR2 DB 16 DUP (0), AAAAA Παρόμοιο με το Α2. START: VAR1 DB 1234567890ABCDEF VAR2 DB 16 DUP (0), AAAAA MOV AX,SEG VAR1 MOV DS,AX MOV ES,AX MOV SI,OFFSET VAR1 ;Δείχνει την αρχή του πρώτου string MOV DI,OFFSEΤ VAR2 ;Δείχνει τη θέση προορισμού CLD ;Σημαία κατεύθυνσης (αύξηση) MOV CX, VAR2-VAR1 ;Μήκος μεταθέσεων (δηλαδή 10) REP MOVSB ;Επαναληπτική μετακίνηση byte END START Η εντολή REPNE δεν χρησιμοποιείται με την εντολή MOVSB (διόρθωση σε λύσεις προηγούμενης περιόδου) αλλά θεωρήθηκε σωστή. B5. Δίνεται το παρακάτω πρόγραμμα (CS=DS=ES=SS=2000H, IP=0130H, SP=0000H). ORG 0100H MOV AX,5152H

INT 03H.EXIT S1 S1 S2 S2 S3 S3 ORG 0200H PROC ADD AX,0001H PUSH AX ENDP ORG 0300H PROC ADD AX,0002H PUSH AX ENDP ORG 0400H ADD AX,0003H PUSH AX ENDP Στην αρχή της φυσικής μνήμης (00000 Η) ευρίσκονται τα δεδομένα: 00,13,12,44,56,7Α,9Ε,3F,00,02,00,20,00,04,00,20,00,03,00,20,56,78,9B,51,00,05,00,20 α) Να σχεδιαστεί ο χάρτης μνήμης και να σημειωθούν οι θέσεις του κυρίως προγράμματος, των διαδικασιών και του σωρού (φυσικές και λογικές διευθύνσεις). β) Ποια διαδικασία θα εκτελεστεί και γιατί; γ) Ποια θα είναι τα περιεχόμενα του σωρού μετά την εκτέλεση; Παρόμοιο με το Α3. Ίδιος χάρτης μνήμης αλλά με διαφορετική τιμή τμήματος (2000Η αντί για 1000Η). Η διαδικασία που θα εκτελεστεί είναι η S3 γιατί το διάνυσμα διακοπής ευρίσκεται στη θέση μνήμης 03Η*4=12=0CH, δηλαδή είναι IPL=00H, IPH=04H, CSL=00H, CSH=20H, δηλαδή στη 2000:0400 και επομένως τη διαδικασία S3. Με την εκτέλεση της ΥΕΔ S3, στο σωρό αποθηκεύονται με τη σειρά τα εξής: 1000:FFFF=FLAGSH 1000:FFFE=FLAGSL 1000:FFFD=CSH=20H 1000:FFFC=CSL=00 1000:FFFB=IPH=01 1000:FFFA=IPL=05 Offset επόμενης εντολής του ΙΝΤ 03Η 1000:FFF9=AH=51H 1000:FFF8=AL=55H (52H+03)