πως να ηλοποιήσω έναν ατέρμονο βρόχο επαναλίψεων σε assemply

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

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

Απάντηση
tommai
Δημοσιεύσεις: 73
Εγγραφή: 18 Ιαν 2008 03:46

πως να ηλοποιήσω έναν ατέρμονο βρόχο επαναλίψεων σε assemply

Δημοσίευση από tommai » 14 Σεπ 2009 20:57

πως να ηλοποιήσω έναν ατέρμονο βρόχο επαναλίψεων σε assemply?

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

πως να ηλοποιήσω έναν ατέρμονο βρόχο επαναλίψεων σε assemply

Δημοσίευση από dva_dev » 14 Σεπ 2009 21:13

Σε ποιά assembly αναφέρεσαι;
Πάντως βάζεις κάπου ένα label και λίγο πιο κάτω (εκεί που θέλεις να είναι ο βρόχος) ένα jump (ή jump always - αναλόγως πως το ονομάζει).
Π.χ. σε Χ86

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

loop:
(διάφορες εντολές)
jmp loop

tommai
Δημοσιεύσεις: 73
Εγγραφή: 18 Ιαν 2008 03:46

πως να ηλοποιήσω έναν ατέρμονο βρόχο επαναλίψεων σε assemply

Δημοσίευση από tommai » 14 Σεπ 2009 21:25

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

[init] ; αρχή κυρίως προγράμματος
...
; ατέρμων βρόχος, εκτελείται συνεχώς
[loop] ; αρχή βρόχου
...
ljmp loop ; τέλος βρόχου
; τέλος κυρίως προγράμματος
λογικά αυτο θα λές και εσύ ε φίλε dva_dev

μπορείς να μου γράψεις ένα παράδειγμα με ότι εντολές θέλεις??απλά να τρέχει και να μήν σταματάει ποτέ??π.χ να εμφανίζει ένα μήνυμα συνέχεια επί το άπυρο??

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

πως να ηλοποιήσω έναν ατέρμονο βρόχο επαναλίψεων σε assemply

Δημοσίευση από LightForce » 14 Σεπ 2009 22:41

Hi tommai, καλώς ήρθες.
Σε Intel x86 16 bit αρχιτεκτονική δύο μικρά παραδείγματα που τρέχουν στον Emulator 8086 -και σε FASM αρκεί να αφαιρεθεί η λέξη 'OFFSET'-

Ατέρμων βρόγχος, τυπώνει συνέχεια 'tommai'.

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

            org 100h

_A:
            call print
            jmp _A

            int 20h             ; Intruction pointer never gets here, you have to kill the program


print:
            mov ah, 09h
            mov dx, OFFSET text
            int 21h
            ret


            text db "tommai",13,10,"$"
Τυπώνει 10 φορές 'tommai' και σταματάει.

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

            org 100h

            mov cx, 10     

_A:
            call print
            loop _A         	; Decrease CX, jump to label if CX not zero


            int 20h         	; Back to DOS


print:
            mov ah, 09h
            mov dx, OFFSET text
            int 21h
            ret


            text db "tommai",13,10,"$"

tommai
Δημοσιεύσεις: 73
Εγγραφή: 18 Ιαν 2008 03:46

πως να ηλοποιήσω έναν ατέρμονο βρόχο επαναλίψεων σε assemply

Δημοσίευση από tommai » 14 Σεπ 2009 23:29

ευχαριστώ πάρα πολύ LightForce
WebDev Moderator είμαι πραγματικά νέος στην γλώσσα αλλα θέλω να την μάθω και καλά...πιστεύω οτι είμαι σε ενα καλο αρχικό στάδιο...αλλα η βοήθεια του site είναι πολύτιμη ΣΥΓΧΑΡΗΤΗΡΙΑ για την δουλεία και τον κόπο και τον χρόνο που προσφέρετε σε εμας τους νέους του προγραμματισμού....!!!

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

πως να ηλοποιήσω έναν ατέρμονο βρόχο επαναλίψεων σε assemply

Δημοσίευση από LightForce » 15 Σεπ 2009 00:54

Τίποτα, νάσαι καλά tommai . Ποιον Assembler τρέχεις, σε τι πλατφόρμα?

tommai
Δημοσιεύσεις: 73
Εγγραφή: 18 Ιαν 2008 03:46

πως να ηλοποιήσω έναν ατέρμονο βρόχο επαναλίψεων σε assemply

Δημοσίευση από tommai » 15 Σεπ 2009 19:13

x86 Windows 32Bit OS , 8086

Απάντηση

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

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

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