Προς το περιεχόμενο

Άσκηση σε Assemply


Sermac

Προτεινόμενες αναρτήσεις

Δημοσ.

Αν γνωρίζει κάποιος αυτήν την ριμάδα την γλώσσα ας μου πει:

 

Έχω έναν μονοδιάστατο πίνακα 8μπιτων αριθμών.

Βρήκα το sum (άθροισμα στοιχείων πίνακα) και ξέρω και το v (μέγεθος πίνακα).

 

Γίνεται να υπολογίσω τα:

 

sum/v (δηλ. την μέση τιμή)

&

sum^2/v - (sum/v)^2 (διακύμανση)

 

Με τόσες διαιρέσεις και δυνάμεις άντε να βρώ άκρη στους καταχωρητές.

Δημοσ.

Για τί επεξεργαστή μιλάμε;

 

Για 80x86 χρησιμοποίησε DIV και MUL. Αν θες και άλλο χώρο χρησιμοποίησε την στοίβα ή μια θέση στη μνήμη.

 

Μήπως κάτι μου διαφεύγει; Γιατί μου φαίνεται απλό.

Δημοσ.

Thanks για την απάντηση.

Ο επεξεργαστής είναι ο 8088 (ίδιο σχεδόν με τον 8086).

 

Το τετράγωνο πώς θα το βρω;

Να βάλω πχ στον καταχωρητή ΑΧ το sum/v και να κάνω MUL ΑΧ;

Δημοσ.

Για 8 bit ποσότητα, βάζεις την τιμή στον al και κάνεις mul al.

Το αποτέλεσμα πάει στον ax και φυσικά είναι 16 bit.

 

Για 16 bit ποσότητα, βάζεις την τιμή στον ax και κάνεις mul ax.

Το αποτέλεσμα πάει σε δύο καταχωρητές, dx:ax, και φυσικά είναι 32 bit.

 

Δες και κανά online manual: http://www.olemiss.edu/courses/EE/ELE_485/Fall2001/Handouts/8088_instruction_set_summary_rev.htm

Δημοσ.

Αυτό πιστεύω θα βοηθήσει αν το χρειάζεσαι ακόμα... πολλαπλασιάζει δύο δεκαεξαδικές λέξεις, δημιουργεί το τετράγωνο της πρώτης και τον κύβο της δεύτερης...

post-652-129062948172_thumb.jpg

Δημοσ.

Οσο για το πρώτο μέρος της ασκησης σου κατι τετοιο είναι, χωρις να το έχω testari...

>.MODEL
.STACK
.DATA
   COUNT   EQU    10           ;Tope8etoume enan counter = ME ARI8MO STIXION
   ARRAY   DW 3,8,17,66,32,58,10,49,73,24     ;topo8etoume ta noumera
   piliko     Dw    00
   ypolipo    dw   00
   sinolo DW 00   
.CODE
       MOV AX, SEG ARRAY     ;.startup
       MOV DS,AX
       MOV ES,AX
       LEA SI,ARRAY        
       MOV CX,[COUNT]      ;o metritis mpeni ston cx           
START:    MOV AX,ARRAY[sI]    ;tope8etoume to proto stixio tou pinaka ston AH  
       DEC CX              ;mionume ton metriti -1 
       ADD BX,ARRAY[sI]
       INC SI              ;af3anoume to si +1        
       INC SI              ;af3anoume to si +1 AFOU KA8E ARI8MOS 2 BYTES
       JCXZ FIN            ;elenxoume an o counter ine 0 
       JMP START           ;pigeni stin arxi         
FIN:    mov [sINOLO],bx     ;APO8IKEVOUME TO SINOLO
       MOV Ax,bx           ;
       mov bx,[count]
       DIV BX             ;kanei ax/bx to ypolipo ston dx to piliko ston ax
       mov [piliko],ax    ;MESOS OROS
       mov [ypolipo],dx
       .EXIT 0            ;.exit
END        

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...