|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Mar 2007
Messaggi: 15
|
ASSEMBLER, Media di 5 numeri
ciao, mi dite se ho fatto bene questo esercizio in assembler, devo fare la media di 5 valori presi dalla memoria
.text .globl main main: lb $t0, val1 #carico con lb il valore della locazione di memoria val1 nel registro $t0 lb $t1, val2 #carico con lb il valore della locazione di memoria val2 nel registro $t1 lb $t2, val3 #carico con lb il valore della locazione di memoria val3 nel registro $t2 lb $t3, val4 #carico con lb il valore della locazione di memoria val4 nel registro $t3 lb $t4, val5 #carico con lb il valore della locazione di memoria val5 nel registro $t4 li $t5, 5 #carico con li il valore 5 nel registro $t5 add $t6,$t0,$t1 #sommo con add i contenuti dei registri $t0 e $t1 e metto il risutato nel registro $t6 add $t6,$t6,$t2 #sommo con add i contenuti dei registri $t6 e $t2 e metto il risutato nel registro $t6 add $t6,$t6,$t3 #sommo con add i contenuti dei registri $t6 e $t3 e metto il risutato nel registro $t6 add $t6,$t6,$t4 #sommo con add i contenuti dei registri $t6 e $t4 e metto il risutato nel registro $t6 div $t7,$t6,$t5 #divido il contenuto del registro $t6, ovvero la somma dei cinque valore per 5, per avere la media sb $t7,result #memorizzo il valore del registro $t7, media dei cinque valori, nella locazione di memoria result .data val1: .byte 3 val2: .byte 6 val3: .byte 4 val4: .byte 9 val5: .byte 8 result: .byte 0 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
|
a occhio si direbbe corretto
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quando parli di assembly dovresti sempre specificare per quale famiglia di processori. A "vista" direi che non è x86 e nemmeno 68xxx, forse per MIPS?
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
|
|
|
|
|
|
|
#5 | ||
|
Senior Member
Iscritto dal: Mar 2000
Città: Bari-Brindisi-Lecce e prov
Messaggi: 424
|
Non sapendo il set di istruzioni che supporta il processore da utilizzare posso abbozzare un paio di soluzioni alternative.
Prima modifica per utilizzare un numero inferiore di registri del processore: Quote:
add $t0,$t0,$t1 # $t0 + $t1 -> $t0 add $t0,$t0,$t2 # $t0 + $t2 -> $t0 add $t0,$t0,$t3 # $t0 + $t3 -> $t0 add $t0,$t0,$t4 # $t0 + $t4 -> $t0 li $t5, 5 #carico con li il valore 5 nel registro $t5 div $t0,$t0,$t5 # valore media in $t0 Seconda versione: Quote:
lb $t0, val1 # copio val1 in $t0 add $t0,$t0,val2 # sommo val2 a val1, risultato in $t0 add $t0,$t0,val3 # sommo val3 a val2+val1, risultato in $t0 add $t0,$t0,val4 # sommo val4 a val3+val2+val1, risultato in $t0 add $t0,$t0,val5 # sommo val5 a val4+val3+val2+val1, risultato in $t0 li $t1, 5 #valore 5 nel registro $t1 div $t0,$t0,$t1 # valore della media in $t0 In questo modo hai ridotto il numero di registri utilizzati a solo $t0 e $t1
__________________
VoIp Gratis - Adsl senza canone telecom Ho trattato con: adarkar,Bobosassa, matrix866,M@t,k|o, percky,s5otto, Rospaccio, CluRaCaN, Igor,Zizziry, bokkakesballa, Pex,freewilly, Umbyboy,DAVO, nathbigga, fabiuxx ed altri. Diffidate di quinnuxxa Ultima modifica di stefano_ba : 30-03-2007 alle 14:24. |
||
|
|
|
|
|
#6 |
|
Junior Member
Iscritto dal: Mar 2007
Messaggi: 15
|
si, è mips 2000
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:52.




















