Βοήθεια σε άσκηση EMULATOR8086

συζητήσεις για assembly

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Sattamassagana
Δημοσιεύσεις: 5
Εγγραφή: 14 Απρ 2011 11:37

Βοήθεια σε άσκηση EMULATOR8086

Δημοσίευση από Sattamassagana » 12 Μάιος 2011 23:35

Γειά σας παιδιά.Έχω μία μία άσκηση την οποία παιδεύω

"Να γραφεί πρόγραμμα το οποίο να αναζητεί και να αποθηκεύει στην θέση 0400h το μέγιστο από ένα πίνακα byte.Το μέγεθος του πίνακα είναι 10 θέσεις και οι τιμές είναι
[ 12,5,8,34,77,86,33,4,101,222] "

Έχω καταφέρει μέχρι στιγμής να καταλαβαίνει οτί το 222 είναι ο μεγαλύτερος αριθμός αλλα δεν ξέρω πως να σταματήσει το πρόγραμμα όταν κάνει όλες τις συγκρίσεις και γενικά νομίζω ότι δεν είναι μόνο εκεί το πρόβλημα. Νά τι έχω φτιάξει μέχρι τώρα.
org 100h


lea si,Pin
mov dl,[si]

start:
inc si
mov al,[si]
cmp al,dl

jb et1

et1: mov [0400h],dl
inc si
mov al,[si]
cmp al,dl
jb et1

ja et2


et2: mov [0400h],al
mov dl,al
loop start


int 20h


Pin db 12,5,8,34,77,222,33,4,101,38

Sattamassagana
Δημοσιεύσεις: 5
Εγγραφή: 14 Απρ 2011 11:37

Βοήθεια σε άσκηση EMULATOR8086

Δημοσίευση από Sattamassagana » 12 Μάιος 2011 23:38

θα μπορούσα να χρησιμοποιήσω τον CX για μετρητή αλλά έχω κολλήσει στο πώς

Sattamassagana
Δημοσιεύσεις: 5
Εγγραφή: 14 Απρ 2011 11:37

Βοήθεια σε άσκηση EMULATOR8086

Δημοσίευση από Sattamassagana » 13 Μάιος 2011 00:19

Το κατάφερα τελικά ήταν πιό απλό απλά το παραθέτω γιά όποιον έχει να κάνει επισημάνσεις/παρατηρήσεις
org 100h

lea si,pin
mov dl,[si]
mov cl,0Ah

max:

inc si
mov al,[si]
cmp al,dl

jb et1

mov [0400h],al
mov dl,al

loop max

et1: mov [0400h],dl
loop max


end:int 20h

pin db 12,5,8,222,77,86,33,4,101,34

LightForce
WebDev Moderator
Δημοσιεύσεις: 3812
Εγγραφή: 13 Απρ 2003 23:49

Βοήθεια σε άσκηση EMULATOR8086

Δημοσίευση από LightForce » 14 Μάιος 2011 02:02

Hi Sattamassagana καλώς ήρθες,

Μπορείς να αφαιρέσεις ένα loop, π.χ ξεκινώντας με τιμή 0 στην θέση 400h

Κώδικας: Επιλογή όλων

    .A:
mov al, [si]
cmp al, [0400h]
jbe .B
mov [0400h], al
    .B:
inc si
loop .A

Sattamassagana
Δημοσιεύσεις: 5
Εγγραφή: 14 Απρ 2011 11:37

Βοήθεια σε άσκηση EMULATOR8086

Δημοσίευση από Sattamassagana » 14 Μάιος 2011 14:16

To ξαναέκανα με λίγη βοήθεια ..Αυτό μοιάζει καλύτερο.

Κώδικας: Επιλογή όλων

org 100h

lea si,Pin
Mov dl,[si]
Mov [0400h],Dl
Mov cl,0ah

Max: inc si
     Mov al,[si]
     Cmp al,dl
     
     ja change
     
dec cl
Jne max
jmp end

change:
Mov dl,al
mov [0400h],al
dec cl

jne max

end:int 20h

pin db 12,5,8,222,77,86,33,4,101,34     


Στο προηγούμενο πρόγραμμα που παράθεσα , κάποιες φορές δε σταματάει να τρέχει . Π.χ σήμερα το έτρεξα, έπαιξε κανονικά και επειτα άλλαξα κάποιες τιμές και "χάλασε".Γιατί μπορεί να γίνεται αυτό?

Sattamassagana
Δημοσιεύσεις: 5
Εγγραφή: 14 Απρ 2011 11:37

Βοήθεια σε άσκηση EMULATOR8086

Δημοσίευση από Sattamassagana » 14 Μάιος 2011 14:45

ααα lightforce ευχαριστώ,ωραία λύση :D

Απάντηση

Επιστροφή στο “Assembly”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης