Συνέλευση - Πολλαπλασιασμός με μια σταθερά

Μπορείτε να κάνετε πολλαπλασιασμό χρησιμοποιώντας τις οδηγίες πολυμέσων όπως imul και mul στον κώδικα γλώσσας συναρμολόγησης, ως Mul name_register. Ο επεξεργαστής πολλαπλασιάζει εσωτερικά τους κώδικες προγραμματισμού διαχωρίζοντας τις παραμέτρους των μεγεθών, όπως για τα eax, ax και al, και στη συνέχεια αποθηκεύει το αποτέλεσμα σε eax ή ax ως "χαμηλό" και οδηγεί στο edx ή dx ως "πιο σημαντικό" η τελευταία εγγραφή έχει οριστεί, εάν το πολλαπλάσιο είναι μεγαλύτερο από ένα byte.

Δεδομένου ότι τα αρχεία πολυμέσων είναι τεράστια στη μνήμη, ίσως χρειαστεί να μεταφέρετε τις τιμές στο eax που πολλαπλασιάζονται στο μητρώο και το αποτέλεσμα του καταχωρητή πρέπει να είναι eax, με την προηγούμενη τιμή να αντικαθίσταται. Ωστόσο, αν χρειαστεί να πολλαπλασιάσετε ένα μητρώο με μια σταθερά, βάλτε το αποτέλεσμα στο μητρώο και στη συνέχεια χρησιμοποιήστε μια συντόμευση με την εντολή "lea".

Σύντομη εισαγωγή

Οι γλώσσες συναρμολόγησης είναι γλώσσες χαμηλού επιπέδου για προγραμματισμό υπολογιστών και αναπτύχθηκαν για πρώτη φορά τη δεκαετία του 1950. Είναι κυρίως γνωστά ως γλώσσες προγραμματισμού δεύτερης γενιάς. Ένα σημαντικό χαρακτηριστικό της γλώσσας της Συλλογής είναι ότι έχουν εξαλείψει μεγάλο μέρος των επιθετικών και χρονοβόρων λειτουργιών που απαιτούνται στον προγραμματισμό πρώτης γενεάς.

Πολλαπλασιασμός στη συναρμολόγηση

Στη συναρμολόγηση μπορείτε να πολλαπλασιάσετε δύο αριθμούς χρησιμοποιώντας τις οδηγίες mul (unsigned numbers) και Imul. Χρησιμοποιούνται ως εξής:

 mul name_registry 

Ο επεξεργαστής αυξάνει το περιεχόμενο eax ή ax ή al (ανάλογα με το μέγεθος του μητρώου, το οποίο δίνεται στις παραμέτρους) και στη συνέχεια αποθηκεύει το αποτέλεσμα σε eax, ax, edx ή dx.

Η χρήση του mul είναι αρκετά ενοχλητική γιατί θα πρέπει να μετακινήσετε την πολλαπλασιασμένη τιμή σε eax, η τιμή να πολλαπλασιαστεί σε ένα διαφορετικό μητρώο και το μητρώο που κρατά το αποτέλεσμα πρέπει να είναι eax.

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

 lea destination_registry, [memory_address]. τοποθετήστε memory_address στο register_registration 

Το μεγάλο πλεονέκτημα αυτού είναι ότι, χρησιμοποιώντας μια σταθερά, δεν χρειάζεται να χρησιμοποιήσετε μια επιπλέον διεύθυνση μνήμης. Φανταστείτε ότι θέλετε να πολλαπλασιάσετε το ecx με 7 και να αποθηκεύσετε το αποτέλεσμα σε ebx, η εντολή θα είναι:

 lea ebx, [ecx * 7] 

Σημείωση: Δεν μπορείτε να πολλαπλασιάσετε δύο μητρώα μαζί χρησιμοποιώντας αυτή τη συντόμευση.

Προηγούμενο Άρθρο Επόμενο Άρθρο

Οι Καλύτερες Συμβουλές