σχετικα με cmp σε 8086

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

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

Απάντηση
Άβαταρ μέλους
halkis_13
Δημοσιεύσεις: 13
Εγγραφή: 21 Μαρ 2006 13:12
Τοποθεσία: irakleio

σχετικα με cmp σε 8086

Δημοσίευση από halkis_13 » 20 Οκτ 2010 02:22

καλησπέρα..θέλω βοήθεια..θέλω να με βοηθήσετε σχετικά με την σύγκριση.. έχω δυο 16 bit αριθμούς (έστω χωρίς πρόσημο) κατ’ αύξουσα σειρά σε θέσεις μνήμη που θα ορίσω εγώ.. Εάν ο πρώτος αριθμός είναι μεγαλύτερος από τον δεύτερο τότε οι
δύο αριθμοί θα εναλλάσσονται στη μνήμη. Εάν ο πρώτος είναι ίσος ή μικρότερος από τον
δεύτερο θα παραμείνουν όπως είναι.
Στο τέλος, σε θέση μνήμης που θα ορίσω εγώ, ανάλογα με το αποτέλεσμα της σύγκρισης
να βάζω της παρακάτω τιμες:
0h εάν ο πρώτος είναι μικρότερος από τον δεύτερο.
1h εάν οι δύο αριθμοί είναι ίσοι.
2h εάν ο πρώτος είναι μεγαλύτερος από τον δεύτερο.

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

σχετικα με cmp σε 8086

Δημοσίευση από LightForce » 21 Οκτ 2010 01:49

Hi,
Nα ένας τρόπος, x86 πλατφόρμα η σύνταξη σε FASM.

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

            mov cx, 02h
            mov ax, [num1]
            mov bx, [num2]
            cmp ax, bx          ; σύγκρινε τις τιμές   
            jbe @1              ; εάν num1<=num2 jump @1
            xchg ax, bx         ; αλλιώς xchg num1,num2
            mov &#91;num1&#93;, ax      ;
            mov &#91;num2&#93;, bx      ;
            jmp @2
       @1&#58;  sbb cx, 0           ; cx=cx-CARRY &#40;κρατούμενο υπήρξε μόνο εάν num1<num2&#41;
            dec cx              ; cx=cx-1
       @2&#58;  mov &#91;num3&#93;, cx

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

            num1 dw 10
            num2 dw 20
            num3 dw ?

Απάντηση

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

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

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