Προς το περιεχόμενο

Ασκηση assembly 8086!!!!!!!!


mikemar

Προτεινόμενες αναρτήσεις

  • Απαντ. 33
  • Δημ.
  • Τελ. απάντηση
Δημοσ.

Απλά βήματα επειδή είμαι σίγουρος ότι είσαι έξυπνο παιδι και μπορείς να τα καταφέρεις:

 

1) Διάβασε πως υλοποιείται το seleciton sort.

2) Διάβασε το manual και το instruction set του emulator.

3) Γράψε τον κώδικα σε C και κάντο compile για να δείς τι τηα παράγει.

4) Ξαναγράψτο χρησιμοποιώντας ώς αναφορά την asm που θα παράγει ο Compiler.

5) Ρώτα στο insomnia εάν κολλήσεις κάπου συγκεκριμένα μετά από σοβαρή προσπάθεια.

Δημοσ.

"Έχω μια εργασία να γραψω κάτι σε asm αλλά θέλω να το βρώ κάπου έτοιμο γιατί θεωρώ ότι το να ασχοληθώ με την δουλειά μου είναι βλακώδες..." μάλιστα.. σου επενθυμίζω πως οι δουλειές στο δημόσιο δεν είναι και τόσο καλές πια.

Δημοσ.
Δεν ειναι δουλεια μου...Ειναι ενα μαθημα στο τει αυτοματισμου(για μενα που δεν με ενδιαφερει η assembly αχριστο) που ελαχιστοι περναν καθε χρονο...Δεν ειχα σκοπο να παρεξηγηθω μεσα σε αυτο το θεμα..Απλα ρωτησα μηπως εχει καποιος κατι παρομιο...Παντως αν πληρωσω καποιον κ την κανει στο μελλον γιατι μαλλον αυτο βλεπω να κανω αν το αντεχει η τσεπη μου,θα ανεβει απο μενα στο ιντερνετ..τσαμπα....;)

 

Ναι μωρέ προχώρα ακάθεκτος, δίκιο έχεις, πλήρωνε και τελείωνε. Άντε με τους μ@λ@κες τους @σχετους καθηγητές που σας μαθαίνουν ASSEMBLY! Άκου εκει, άχρηστα πράγματα!

Δημοσ.

Το θέμα φίλε δεν είναι αν σε ενδιαφέρει η assembly ή όχι. Το θέμα είναι ότι το αντικείμενο των σπουδών σου απαιτεί να κατέχεις έστω από assembly. Καλομάθαμε βέβαια τα τελευταία χρόνια με τις γλώσσες προγραμματισμού που μας τα δίνουν όλα στο πιάτο αλλά άλλο είναι να είσαι σε σχολή πληροφορικής και να έχεις να κάνεις με προγράμματα για linux/windows κοκ και άλλο σε σχολή αυτοματισμού και να έχεις να κάνεις με ΣΑΕ κλπ. Οπότε κάτσε καλύτερα και κάνε την εργασία σου μόνος σου και ας σου βγει ο πάτος. Στην τελική, πίστεψέ με, θα είσαι πάντα ένα βήμα μπροστά από τους υπόλοιπους δεδομένου ότι καλή η C/C++ αλλά η assembly είναι άλλο πράγμα τελείως.

Δημοσ.

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

Δημοσ.

Υποθετικά πάντα : ΤΕΙ/ΑΕΙ σου μαθαίνουν γενικά λίγο από όλα …με την λογική αυτή δεν θα έπρεπε να κάνουμε πολλά μαθήματα… αλλά το θέμα δεν είναι αυτό ,είναι να μάθουμε να σκαφτόμαστε για να κάνουμε κάτι, εάν ήταν έτσι θα κάναμε μονό προγραμματισμό- για τους προγραμματιστές, μαθηματικά για τους μαθηματικούς, δίκτυα για τους δικτυακές… κλπ…..

Όσο για το αν το μάθημα το κάνουν να φαίνεται δύσκολο σε αυτό φταίνε οι καθηγητές!!!θα έπρεπε να έχεις διευκρινήσεις –σημειώσεις-βιβλία!!!!

Αν πάλι δεν έχεις τίποτα από όλα αυτά…. Καλό ψάξιμο!!!!

Δημοσ.

Επίσης για να καταλάβει κανείς πώς φτάσαμε στο σημείο να προγραμματίζουμε ΣΑΕ (συστήματα αυτομάτου ελέγχου) με χρήση της C δεν θα πρέπει πρώτα να μάθει πώς ξεκίνησε όλο το παραμύθι (βλέπε assembly);

 

thanantypas η assembly είναι εκ των ουκ άνευ στα τμήματα αυτοματισμού.

Δημοσ.

Πληροφορική σπουδάζω και έχω κάνει και εγώ assembly..δεν θα διαφωνήσω μαζί σου αν και δεν υπήρξα πότε κάλος φοιτητής , για να κανείς κάτι ---πρέπει να το κανείς μόνος σου και όχι copy-paste..αλλά αυτό είναι ένα άλλο θέμα !!! πολύ μεγαλο…

  • 2 εβδομάδες αργότερα...
Δημοσ.

Και φυσικα εφοσων περασα ατελιωτες ωρες μαθαινοντας οντως κατι αχρηστο ειπα να σας παραθεσω τισ λυσεις..Αντε...τωρα που χαλαρωσα ειρωνευτητε οσο θελετε...

 

Selection sort

 

Org 100h

 

cld

lea di,pin2

add di,13h

ar: lea si,PIN

mov max,00h

mov cx,14h

et1: lodsb

cmp al,max

jb et2

mov max,al

et2: loop et1

mov bl,00h

mov bl,max

mov [di],bl

dec di

lea si,PIN

et3: lodsb

cmp al,max

je et4

jmp et3

et4: mov bl,00h

mov [si-1],bl

inc met

cmp met,14h

ja STARTPRDEC

jmp ar

 

STARTPRDEC: mov cx,14h

lea si,pin2

prnt:lea dx,ke

mov ah,09h

int 21h

lodsb

MOV AH,00h

MOV BL,0Ah

DIV BL

PUSH AX

MOV AH,00h

DIV BL

PUSH AX

MOV AH,0Eh

ADD AL,30h

INT 10h

POP AX

MOV AL,AH

ADD AL,30h

MOV AH,0Eh

INT 10h

POP AX

MOV AL,AH

ADD AL,30h

MOV AH,0Eh

INT 10h

loop prnt

mov ah,4ch

int 21h

ret

 

PIN DB 2,5,8,34,77,86,33,4,101,222,1,200,13,24,244,145,12,201,202,33

pin2 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

ke db " $"

max db 00h

met db 00h

 

---------- Προσθήκη στις 15:09 ---------- Προηγούμενο μήνυμα στις 15:07 ----------

 

Και επισης η ιδια ακριβως ασκηση κ σε bubble sort..

 

 

data segment

array db 2,5,8,34,77,86,33,4,101,222,1,200,13,24,244,145,12,201,202,33

len db $-array

array1 db 20 dup(?)

en db "Pinakas (min-max):$"

ke db " $"

data ends

 

code segment ;;;

assume cs:code,ds:data ;;;

start: mov ax,data ;antigrafei ston ax to periexomeno tou data

mov ds,ax ;>> sto ds to ax

mov cl,len ;>> sto cl to len

dec cl ;meionei kata 1 to cl

mov dh,0 ;antigrafei to 0 sto dh

up2:lea si,array ;bazei ton si na deixnei tin proti thesi tou array

mov ch,cl ;metaferei to meiwmeno cl ston ch

mov dl,0 ;metaferei to 0 ston dl

up1:mov al,[si] ;antigrafei ston al ta periexomena tis thesis tou pinaka pou deixnei o si

cmp al,[si+1] ;sygkrinei ton al me ton arithmo pou briskete stin epomeni thesi tou pinaka

jbe nochange ;paei sto nochange an i sigkrisi pio pano einai isi i mikroteri

xchg al,[si+1] ;antalasei ton arithmo pou vrisketai sti thesi si+1 me ton arithmo pou exei o al

mov [si],al ;metaferei ton arithmo pou pire o al sti thesi mnimis pou deixnei o si

mov dl,1 ;metaferei to 1 sto dl

nochange:inc si ;ayxanei ton si kata 1

dec ch ;meionei ton ch kata 1

jnz up1 ;paei sto up1 an to ch den einai 0

inc dh ;ayxanei ton dh kata 1

cmp dl,0 ;sygkrinei to dl me to 0

je last ;paei sto last an i apo tin sigkrisi bgoun oi dyo arithmoi isoi

dec cl ;meiwnei ton cl

jnz up2 ;paei sto up2 an to ch den einai 0

last:lea si,array ;bazei ton si na dixnei tin proti thesi tou array

lea di,array1 ;>> >> di >> >> >> >> >> >> array1

mov cl,len ;vazei ton counter cl na einai isos me ta stoixeia tou array

mov ch,0 ;vazei ston ch to 0

add si,cx ;prosthetei stin thesi pou dixnei o si to periexomeno tou cx

dec si ;meionei ton si kata 1

up3:mov al,[si] ;metaferei ta periexomena apo ti thesi mnimis pou deixnei o si ston al

mov [di],al ;metaferei ta periexomena tou al sti thesi mnimis pou deixnei o di

inc di ;ayxanei to periexomeno tou di kata 1

dec si ;meionei to periexomeno tou si kata 1

dec cl ;meionei to cl kata 1

jnz up3 ;paei sto up3 an to cl einai 0

lea dx,en ;bazei ston dx to periexomeno tou en

mov ah,09h ;metaferei to 09h sto ah giati xreiazete gia na typosei to minima pou einai sto dx to int 21h

int 21h ;to int 21h

mov cx,14h ;metafere ston counter cx to 14h-->20dekadiko (oses kai oi theseis tou pinaka mou)

lea si,array1 ;Steile ton Si stin prwti grammi tou array1 kai metaferei ston si to periexomeno tis protis thesis tou.

add si,13h ;prosthetei to 13h sto si gia na paei stin teleytea thesi tou pinaka

std ;kanei 1 to direction flag oste i entoli lodsb na meionei kathe fora kata 1 ton si

prnt:lea dx,ke ;steile ton dx sto ke kai fortwse to string

mov ah,09h ;vale ston ah tin timi 09h wste na ektelestei to interrupt ah=09h/int21

int 21h ;to inter ah=09h/int21 ektypwnei to string

lodsb ;metaferei to periexomeno tis thesis mnimis pou dixnei o si ston al kai meionei kata 1 to si

;PROGRAMMA PRINT DEKADIKOS ARITHMOS

MOV AH,00h ;

MOV BL,0Ah ;

DIV BL ;dierei ton al me ton bl

PUSH AX ;metaferei ston soro to periexomeno tou ax

MOV AH,00h ;

DIV BL ;

PUSH AX ;

MOV AH,0Eh ;

ADD AL,30h ;prostheti 30h ston al

INT 10h ;me tin parametro 0eh ston ah typonei ena psifio stin othoni

POP AX ;pernei apo ton soro kai bazei ston ax

MOV AL,AH ;

ADD AL,30h ;

MOV AH,0Eh ;

INT 10h ;

POP AX ;

MOV AL,AH ;

ADD AL,30h ;

MOV AH,0Eh ;

INT 10h ;

loop prnt ;kanei loopa os pou to cx na ginei 0

mov ah,4ch ;

int 21h ;to int 21h me parametro 4ch termatizei to programma

ret

 

 

code ends

end start

 

Καλη εξεταστικη...Κ καλο καλοκαιρι..

Αντε στην υγεια μας...κ οι ξερολες μακρια μας...

Αρχειοθετημένο

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

  • Δημιουργία νέου...