sos!!! γλώσσα μηχανης ξέρει κανείς να βοηθήσει

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

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

Απάντηση
Nataly_
Δημοσιεύσεις: 2
Εγγραφή: 30 Μαρ 2009 23:10

sos!!! γλώσσα μηχανης ξέρει κανείς να βοηθήσει

Δημοσίευση από Nataly_ » 30 Μαρ 2009 23:36

1η ασκηση

.data
str: .asciiz " the"

.text
main:

add $8,$0,$0
arxh: addi $2,$0,5
syscall
add $4,$2,$0

addi $2,$0,1
syscall
add $8,$4,$8

bne $4,$0,arxh

add $4,$8,$0

addi $2,$0,1
syscall
la $4,str
addi $2,$0,4
syscall
θέλω να βρώ τη βγάζει το παραπάνο πρόγραμμα δλδ οι καταχωρητές 2$,$4,$8. Όποιος γνωρίζει έστω και λιγα πραγματάκια ας με βοη8ήσει οσο μπορεί.


2η ασκηση

Να δηλώσω μια μεταβλητή και να διαβάζω νούμερα από το πληκτρολόγιο το οποίιο θα αποθηκεύται στη μεταβλητή στη μνήμη και μετά απο αυτή την μεταβλητή με lw να τυπώνουμε στην console.


Παρακαλώ όποιος\α γνωρίζει να με βοηθήσει έστω και λίγο!!!!

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

sos!!! γλώσσα μηχανης ξέρει κανείς να βοηθήσει

Δημοσίευση από ThyClub » 31 Μαρ 2009 00:33

Υπομονή και θα μπεί κάποια στιγμή ο lightforce ή κάποιος άλλος. :D

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

sos!!! γλώσσα μηχανης ξέρει κανείς να βοηθήσει

Δημοσίευση από LightForce » 31 Μαρ 2009 02:53

Nataly_, αν μελετήσεις το παρακάτω παράδειγμα, το οποίο εξηγείται πολύ αναλυτικά, δεν θα συναντήσεις ιδιαίτερη δυσκολία να λύσεις την 1 σου άσκηση.
Καλή τύχη.

http://www.csd.uoc.gr/~hy225/02a/exer02.html

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

sos!!! γλώσσα μηχανης ξέρει κανείς να βοηθήσει

Δημοσίευση από virxen75 » 31 Μαρ 2009 11:12

Γεια σου
είδα τον κώδικα της άσκησης 1 και παρακάτω σου αναλύω τι κάνει η κάθε εντολή

Γενικά είναι ένα πρόγραμμα που σου ζηταει ακέραιους αριθμούς από το πληκτρολόγιο
που τους τυπώνει αμέσως μετά την εισαγωγή τους από το πληκτρολόγιο
αυτό επαναλαμβάνεται μέχρι ο χρήστης να εισάγει μηδέν
όταν εισάγουμε το 0 εκτυπώνεται το άθροισμα των αριθμών που έβαλα από το
πληκτρολόγιο και το string str=" the"

Αν κάτι δεν καταλαβαίνεις πες το να το εξηγήσω περαιτέρω.

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

.data
str: .asciiz " the"

.text
main:

add $8,$0,$0      # βάζω στον $8=$0+$0=0
arxh: addi $2,$0,5 # βάζω στον $2=$0+5=0+5=5,υπηρεσία input integer
syscall #εκτέλεση του input integer,διαβάζω τον ακέραιο από πληκτρολόγιο
add $4,$2,$0  #βάζω στον $4=$2+0=$2=ακέραιος που έβαλα στο πληκτρολόγιο

addi $2,$0,1 #βάζω στον $2=0+1=1,υπηρεσία print integer
syscall # τύπωσε τον ακέραιο που βρίσκεται στο $4= ακέραιος που έβαλα στο πληκτρολόγιο
add $8,$4,$8 #$8=$4+$8=ακέραιος που έβαλα στο πληκτρολόγιο+$8,το άθροισμα των #ακεραίων αριθμών που έχω εισάγει μέχρι τώρα

bne $4,$0,arxh #αν $4!=$0=0 πήγαινε στην arxh(διάβασμα ακεραίου) επαναλαμβάνει το #input integer μέχρι να δώσω 0

add $4,$8,$0 #$4=$8+$0=$8=άθροισμα των ακεραίων αριθμών που έχω εισάγει
addi $2,$0,1 #$2=$0+1=0+1=1 ,υπηρεσία print integer
syscall # τύπωσε τον ακέραιο που βρίσκεται στο $4=άθροισμα των ακεραίων αριθμών

la $4,str #βάλε στον $4 την θέση στην μνήμη του string str=" the"
addi $2,$0,4 #επέλεξε την συνάρτηση print string
syscall #εκτέλεσε την συνάρτηση print string

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

sos!!! γλώσσα μηχανης ξέρει κανείς να βοηθήσει

Δημοσίευση από virxen75 » 31 Μαρ 2009 11:47

Σου έφτιαξα αυτό που κατάλαβα από αυτά που ζητάς.
Αν κάτι δεν κατάλαβα σωστά πες μου να το διορθώσω

φτιάχνω ουσιαστικά έναν πίνακα ακεραίων 8 θέσεων ,γεμίζω τον πίνακα
και τυπώνω τα στοιχεία του από το τελευταίο στο πρώτο

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

.data

str_n: .asciiz "Dose akeraio:"
str_nea_grami:.asciiz "\n"
.align 2
a: .space 32


.text
.globl main
.globl  Loop1
.globl  Loop2

main:
           la $9,a #fortonei thn dieu8insi tou pinaka a
           addi $18,$0,0 #midenizei ton metriti tou loop
           addi $19,$0,8 #dinei poses fores 8a ektelestei to loop

Loop1: addi $2,$0,4
           la $4,str_n
           syscall  #mhnyma dose akeraio
           addi $2,$0,5
           syscall# diabase akeraio
           add $8,$2,$0
           sw $8,0($9) #filakse sti mnimi
           addi $9,$9,4 #deikse sto epomeno stoixeio
           addi $18,$18,1 #auksise ton metriti tou loop kata 1
           bne $18,$19,Loop1 #telos tou loop1 elegxos an dosame 8 akeraious

           addi $18,$0,0
           addi $19,$0,8 
           addi $9,$9,-4 #deikse sto teleutaio stoixeio tou pinaka

Loop2: add $8,$2,$0
           lw $16,0($9) #fortose apo ti mnimi
           addi $2,$0,1#υπηρεσία print integer
           add $4,$0,$16
           syscall
           addi $2,$0,4#υπηρεσία print string
           la $4,str_nea_grami          
           syscall  #nea grammi

           addi $10,$0,4
           sub $9,$9,$10 #epomeno stoixeio pinaka (a[i*4-4])
           addi $18,$18,1 #metritis loop
           bne $18,$19,Loop2 #telos tou loop2



Nataly_
Δημοσιεύσεις: 2
Εγγραφή: 30 Μαρ 2009 23:10

sos!!! γλώσσα μηχανης ξέρει κανείς να βοηθήσει

Δημοσίευση από Nataly_ » 01 Απρ 2009 00:44

eyxaristw para polu gia th help na ste kala. ta exw melethsei alla 8elw ligo akoma na empedwsw kalhtera kapoia shmeia an xreiastw kati pereterw paidia 8a sas enhmerwsw. kai pali eyxaristw!!!!

Απάντηση

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

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

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