teo
Πολύ δραστήριο μέλος


Παρουσιαση 1ου προγραμματος σε Assmbly:
title pr2
dosseg
.model small
.stack 100h
.data
nl db 10,13,'$'
mes1 db "Dose enan xaraktira:$"
ch1 db ?
.code
start:
mov ax,@data
mov ds,ax
mov ah,09h
lea dx,mes1
int 21h
mov ah,1
int 21h
mov ch1,al
mov ah,9
lea dx,nl
int 21h
mov dl,ch1
mov ah,02h
int 21h
mov ah,4ch
int 21h
end start
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
fandago
Διακεκριμένο μέλος


Επίσης το πρόγραμμα που έγραψες είσαι σίγουρος ότι είναι καθαρή Assembly;

Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
teo
Πολύ δραστήριο μέλος


Υποδειξεις:
Μεταγλωττιση ενος προγραμματος σε assebly: θα πλητρολογησετε στο cmd την εντολη
masm /v/z/w2/zi FileName(ονομα πηγαιου αρχειου π.χ filename.asm)
Για την συνδεση με τις βιβλιοθηκες θα πλητρολογησετε στο cmd την εντολη
link /co FileName(ονομα αντικειμενου αρχειου-object- π.χ filename.obj)
Για εκτελεση απλα FileName(ονομα αρχειου-filename.exe)
Καλη τυχη

Download Environ:
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Συνημμένα
teo
Πολύ δραστήριο μέλος


Οι καταχωρητες των 8086/88
Ο 8086/88 περιλαμβανει δεκατεσσερεις καταχωρητες των 16bits. Μερικοι απο αυτους ειναι αφιερωμενοι σε ειδικες χρησεις, ενω αλλοι εχουν γενικη χρηση. Τους διακρινουμε σε τεσσερεις διαφορετικες ομαδες οπως φαινεται παρακατω.
Α. Καταχωρητες Γενικης Χρησης
ΑΧ-Συσσωρευτης των 16bits(AH και AL των 8 bits ο καθενας δηλ. εχουμε εναν καταχωρητη των 16bits απο τον οποιο μπορουμε να χρησιμοποιησουμε αμα θελουμε εμεις τα 8 πρωτα bits(AL) ή τα υπολοιπα bits του καταχωρητη(AH))
ΒΧ-BH Και BL-16bits-Βάσης
CX-CH και CL-16Bits Μετρητης
DX-DH και DL-16bits δεδομενων
Θα εξηγησω τωρα με περισσοτερη λεπτομερια αυτους τους παραπανω καταχωρητες γενικης χρησης
-Ο καταχωρητης AX (Accumulator-συσσωρευτης) χρησιμοποιειται συχνα για την εκτελεση αριθμητικων πραξεων. Μερικες πραξεις εκτελουνται γρηγοροτερα αν χρησιμοποιειται ο AX , ενω αλλες, οπως ο πολλαπλασιασμος και η διαιρεση, πρεπει να γινονται στον ΑΧ.
-Ο καταχωρητης BX(Base-Βάσης) εκτός απο τη γενική χρηση του χρήση έχει και την ειδική. Οταν εμφανιζεται σε μια εκφραση της μορφης [BX], ο συμβολομεταφραστης μεταφραζει την τιμη του ΒΧ σε μια ενεργο διευθυνση και οχι σαν ενα δεδομενο. Αυτου του ειδους η χρηση ειναι η περιπτωση εμμεσου τροπου προσδιορισμου μιας διευθυνσης (indirect addressing). Πιο απλα ο ΒΧ δειχνει τη διευθυνση της αρχης (βασης) ενος πινακα δεδομενων.
-Ο καταχωρητης CX (Count-μετρησης) χρησιμοποιειται σαν μετρητης επαναληψεων για τον ελεγχο βροχων και για την επαναλαμβανομενη διακινηση δεδομενων. Φυσικα ειναι διαθεσιμος και για γενικοτερες χρησεις
- Ο καταχωρητης DX (Data-δεδομενων) χρησιμοποιειται για την αποθηκευση δεδομενων γενικοτερης χρησιμοτητας παρ΄ ολο που και αυτος εχει ορισμενες εξειδικευμενες χρησεις. Για παραδειγμα ο DX περιεχει το υπολοιπο των διαιρεσεων που εκτελουνται στον ΑΧ.
Β. Καταχωρητες τμηματων
Η μνημη του 8086/88 ειναι χωρισμενη σε τμηματα χωρητικότητας 64 Kbytes το καθενα. Η ΚΜΕ εχει αμεση προσπελαση σε τεσσερα τετοια τμηματα οταν εκτελει ενα προγραμμα . Αυτα ειναι:
-Το τμημα Κώδικα (Code segment-CS), που περιεχει τον εκτελεσιμο κωδικα. (π.χ εντολες mov)
-Το τμημα δεδομενων(data segment-DS), που περιεχει τα δεδομενα του προγραμματος (μεταβλητες)
-Το τμημα στοιβας (stack segmen-SS). Στοιβα ειναι μια περιοχη της μνημης που χρησιμοποιειται για προσωρινη αποθηκευση δεδομενων κατα τη διαρκεια εκτελεσης ενος προγραμματος
-Το επιπλεον τμημα (extra segment-ES), που περιεχει δεδομενα του προγραμματος που πιθανον να μη χωρουν στο τμημα δεδομενων
Καθενας απο αυτους τους καταχωρητες περιεχει μια τιμη των 16bits, η οποια αντιπροσωπευει τη διευθυνση (γνωστη και ως διευθυνση τμηματος) απο την οποια αρχιζει καποιο τμημα.
Γ. Καταχωρητες Δεικτων
- DI-16bits-Δεικτης προορισμου
-SI-16bits-Δεικτης προελευσης
-SP-16bits- Δεικτης στοιβας
-BP-16bits-Δεικτης βασης
Δ. Δεικτης Εντολων
Ο δεικτης εντολων-IP, δειχνει την επομενη εντολη που θα εκτελεστει απο το προγραμμα.
πηγή: σημειώσεις συγγράμματος του ΤΕΙ Αθηνών.
Τις επομενες ημερες θα εξηγησω αναλυτικα το προγραμμα Assembly που δημιουργησα. Αυτο γιατι δεν εχω τον απαιτουμενο ελευθερω χρονο για να τα κανω ολα μαζι.
Ευχαριστω για την κατανοηση.

Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Skeptikistis
Νεοφερμένος


ο editor toy dos den soy kanei?????/
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
snookeraas
Νεοφερμένος


Σημείωση: Το ποστ προήλθε από το θέμα "[Assembly] Κωδικας για την άσκηση"
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Subject to change
e-steki.gr Founder


Κατα δεύτερον, δεν αναφέρεις πουθενά που έχεις καταλήξει εσύ.
Το ζητούμενο σου είναι μια έτοιμη λύση για να σε βγάλουμε από τον κόπο;

Και τι θα μάθεις έτσι;
Σημείωση: Το ποστ προήλθε από το θέμα "[Assembly] Κωδικας για την άσκηση"
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
snookeraas
Νεοφερμένος


TITLE hello1
DOSSEG
.MODEL SMALL
.STACK 100h
.DATA
msg db "dose ena string","$"
maxlen db 20
store db 20 DUP('')
xar db 13
.CODE
;emfanisi mnmatos
mov ah,09h
lea dx,msg
int 21h
;plhktr. mexri 20 xaraktires
lea dx,maxlen
mov ah,0ah
int 21h
;pernao sti synartisi ti dieuthinsi toy string
mov dl,xar
push dx
mov bx,offset store
push bx
call crypto
pop cx
pop cx
mov ax,4Ch;
int 21h
;------------------------------------
crypto PROC
push bp
mov bp,sp
END
Σημείωση: Το ποστ προήλθε από το θέμα "[Assembly] Κωδικας για την άσκηση"
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Subject to change
e-steki.gr Founder


Δυστυχώς assembly δεν γνωρίζω, οπότε δεν μπορώ να βοηθήσω

Ελπίζω να σε βοηθήσει κάποιος σύντομα

Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Dark_kronos
Επιφανές μέλος


δεν εχω καταλαβει πως θα εισαγω δεδομενα σε εναν πινακα, βασικα το πως θα συμβολισω αυτον τον πινακα, πως θα θεσω ποιες θεσεις μνημης θα εχει, πως θα τον καλεσω... Τα παντα ουσιαστικα..

Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
εμμα_τριντεντ
Πολύ δραστήριο μέλος


.data
msg:.asciiz"Dwste stoixeio gia ton pinaka\n"
msg1:.asciiz "\n"
.align 2
array:.space 120 #akeraios =30x4bytes
.text
main:
la $9,array #fortonei thn dieu8insi tou pinaka a me thn entolh la->load address
addi $18,$0,0 #midenizei ton metriti tou loop me thn entolh addi-> add immediate
addi $19,$0,30 #dinei poses fores 8a ektelestei to loop
l1:
addi $2,$0,4
la $a0,msg
syscall#print dose stoixeio
addi $2,$0,5
syscall# diabase akeraio
add $8,$2,$0
sw $8,0($9) #filakse sti mnimi me thn entolh sw-> store word
addi $9,$9,4 #deikse sto epomeno stoixeio
addi $18,$18,1 #auksise ton metriti tou loop kata 1
bne $18,$19,l1 #telos tou loop elegxos an dosame ola ta stoixeia me thn entolh bne-> branch not equal
li $2,10
syscall#exit
πηγή (λατρεμένος virxen)
+ εντολές
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
εμμα_τριντεντ
Πολύ δραστήριο μέλος


Πχ. τα παραπάνω με ένα google search τα βρήκα και είναι αυτό ακριβώς που θέλεις. Έτσι μαθαίνει κανείς προγραμματισμό κατ'εμέ.
Φιλικά.
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Dark_kronos
Επιφανές μέλος


Ωραια, αν μη τι αλλο, ετσι μπορω να διαβασω οσα στοιχεια θελω και να τα εισαγω στον πινακα. Οταν θελω να τα χρησιμοποιησω ομως; Να κανω πραξεις με αυτα, να τα εκτυπωσω κλπ;
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
εμμα_τριντεντ
Πολύ δραστήριο μέλος


Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Dark_kronos
Επιφανές μέλος



Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Πληροφορικάριος
Δραστήριο μέλος


.data
arr:.word 0 0 0 0 0
.
.
.
εδώ έχει δηλωθεί ένας πίνακας με όνομα arr τύπου word(για αποθήκευση τιμών 32 bit) 5 στοιχεία αρχικοποιημένα με τιμή 0.
στην main
main:
la $t0,arr
η εντολή αυτή κάνει load address δηλαδή φορτώνει την διέυθυνση αρχής του arr στον καταχωρητή $t0.
(η διεύθυνση αρχής ενός πίνακα είναι η διεύθυνση του πρώτου στοιχείου του)
για να φορτώσεις τα περεχόμενα του πρώτου κελιού του arr στον καταχωρητή $t1 :
lw $t1,0($t0)
(load word)
το 0 είναι το offset: πόσα bytes θα απέχει απο την διέυθυνση αρχής του πίνακα. Εδώ θέλουμε το πρώτο κελι άρα 0.
Αν θέλουμε το δέυτερο κελί:
lw $t1,4($t0)
$t0 + 4 bytes
Αντίστοιχα αν θές να αποθηκέυσεις τον καταχωρητή $t1 στο πρώτο κελί του πίνακα χρησιμοποίησε το strore word:
sw $t1,0($t0)
Επίσεις μπορείς να κάνεις τον καταχωρητή $t0 να περέχει την διεύθυνση του δεύτερου κελιού αυξάνοντας το κατα τέσσερα:
addi $t0,$t0,4
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Dark_kronos
Επιφανές μέλος


Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Guest 190013
Επισκέπτης


Σημείωση: Το μήνυμα αυτό γράφτηκε 8 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Χρήστες Βρείτε παρόμοια
-
Φορτώνει...
-
Το forum μας χρησιμοποιεί cookies για να βελτιστοποιήσει την εμπειρία σας.
Συνεχίζοντας την περιήγησή σας, συναινείτε στη χρήση cookies στον περιηγητή σας.