|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2002
Città: Lecce
Messaggi: 889
|
Assembler somma
Sto studiando un pò di assembler per l'esame di "Calcolatori Elettronici I"
Paer che quest'anno la parte di assembler sia un pò più ridotta, ma comunque ho preso i vecchi appelli dove in un problema richiedeva di ordinare un vettore inizializzato con valori numerici e fare la somma di tutti questi valori. Ho provato a realizzare qualcosa e l'assemblatore non rileva errori. Il problema credo sia in fase di stampa. In un esempio di somma che ho visto la somma veniva realizzata solo fra due numeri ad una sola cifra e poi se il valore era maggiore di 10 veniva sottratto dieci e stampato un 1 davanti al risultato. In sintesi il programma sembra funzionare, ma al posto del numero stampa quella che forse è la codifica asci raggiunta con la somma Chi mi aiuta? Questo è il proggo MY_STACK SEGMENT STACK DW 40 DUP (?) MY_STACK ENDS MY_DATA SEGMENT VET DB 5 DUP (2 DUP (7),1) SOMMA DB '$$$' MY_DATA ENDS MY_CODE SEGMENT INIZIO PROC FAR ASSUME CS:MY_CODE, DS:MY_DATA, SS:MY_STACK start: MOV AX, MY_DATA MOV DS, AX MOV SI, OFFSET VET ;inizializza si all'offset di vet MOV CX, 14 ;inizializza cx a 14 (le componenti del vettore sono 14) MOV DX, 0 ;pone dx a 0 somm: ADD DX, DS:[SI] ; somma con un ciclo gli elementi del vettore (loop dipende da CX) INC SI ; passa all'elemento del vettore successivo LOOP somm MOV SI, OFFSET SOMMA ;pone in SI l'offset di SOMMA MOV DS:[SI], DX ;pone dx nel primo elemento del vettore somma MOV AX, SEG SOMMA ;pone il segmento di somma in ax MOV DS, AX ;lo copia in ds MOV DX, OFFSET SOMMA ;pone l'offset di somma in dx MOV AH, 09H ;stampa il tutto INT 21H MOV AH, 4CH ;ridà il controllo al dos INT 21H INIZIO ENDP MY_CODE ENDS END start
__________________
I bambini e i saggi sono coloro che hanno il coraggio di dire le stupidaggini che gli adulti pensano solamente - Il nuovo forum di Anime e Manga Athlon XP 2500+ @ 2142 Mhz (209*10,5) , Abit Nf7-s rev 2.0, 512 Mb Corsair Xms PC 3200 Cas2, Ati Radeon 9500pro, HD Western Digital Caviar 80 Gb Buffer 8Mb, Lg L1710B |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 2002
Città: vinci-spicchio
Messaggi: 530
|
ti allego un esercizio simile che ti può essere d'aiuto
__________________
Intel Pentium DualCore E2140 1,60 GHz , Asus P5LD2 R2.0,Sapphire x600xt 128Mb,hauppauge winTV,2x256Mb Ddr2 Vitesta 533Mhz,western digital caviar 160gb, seagate 20gb 5400giri, maxtor 40gb 7200giri, dvd+-rw gigabyte(BTC) 4x,Samsung writemaster dvd duallayer 18x , edimax wireless<-->router D-link G604T. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Sep 2002
Città: Lecce
Messaggi: 889
|
Grazie, vedro che posso fare
__________________
I bambini e i saggi sono coloro che hanno il coraggio di dire le stupidaggini che gli adulti pensano solamente - Il nuovo forum di Anime e Manga Athlon XP 2500+ @ 2142 Mhz (209*10,5) , Abit Nf7-s rev 2.0, 512 Mb Corsair Xms PC 3200 Cas2, Ati Radeon 9500pro, HD Western Digital Caviar 80 Gb Buffer 8Mb, Lg L1710B |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Sep 2002
Città: Lecce
Messaggi: 889
|
Ho letto il programma, ma non sapendo le corrispondenze delle codifiche asci ho avuto qualche problema.
Potresti scrivermi cosa fa il programma e commentare le rghe con la codifica asci? Sempre se non è troppo disturbo! Il problema è che in realtà ho alle spalle solo due lezioni e un'esercitazione che sono (maledetta organizzazione trimestrale) un pò poche!
__________________
I bambini e i saggi sono coloro che hanno il coraggio di dire le stupidaggini che gli adulti pensano solamente - Il nuovo forum di Anime e Manga Athlon XP 2500+ @ 2142 Mhz (209*10,5) , Abit Nf7-s rev 2.0, 512 Mb Corsair Xms PC 3200 Cas2, Ati Radeon 9500pro, HD Western Digital Caviar 80 Gb Buffer 8Mb, Lg L1710B |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Sep 2002
Città: vinci-spicchio
Messaggi: 530
|
Se ti devo dire la verità anche io non sono un grande esperto, faccio quarta Iti informatica e questa era l'esercitazione epr un compito, il fatto è che il programma che ti ho mandato io fa la somma fra due numeri e poi la stampa in output.
Allora prendendo spunto da li dovresti fare un algoritmo del genere Esempio di pseudocodifica: mettiamo che numero sia 125 divido numero per 100 e stampo il risultato quindi 1+48(per via del codice ascii) rimoltiplico il risultato precedente per 100 e lo sottraggo a numero=125 quindi trovo 25 divido numero(25) per 10 e stampo 2+48(sempre per il codice ascii) rimoltiplico il numero 2*10 e lo sottraggo a 25 precedentemente trovato e ottengo 5 ci sommo 48 e lo stampo purtroppo metodi migliori non ne conosco, l'unica soluzione che mi è venuta in mente è questa altrimenti chiedi a qualche prof o compagno
__________________
Intel Pentium DualCore E2140 1,60 GHz , Asus P5LD2 R2.0,Sapphire x600xt 128Mb,hauppauge winTV,2x256Mb Ddr2 Vitesta 533Mhz,western digital caviar 160gb, seagate 20gb 5400giri, maxtor 40gb 7200giri, dvd+-rw gigabyte(BTC) 4x,Samsung writemaster dvd duallayer 18x , edimax wireless<-->router D-link G604T. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Sep 2002
Città: Lecce
Messaggi: 889
|
Grazie, adesso è tutto più charo!
__________________
I bambini e i saggi sono coloro che hanno il coraggio di dire le stupidaggini che gli adulti pensano solamente - Il nuovo forum di Anime e Manga Athlon XP 2500+ @ 2142 Mhz (209*10,5) , Abit Nf7-s rev 2.0, 512 Mb Corsair Xms PC 3200 Cas2, Ati Radeon 9500pro, HD Western Digital Caviar 80 Gb Buffer 8Mb, Lg L1710B |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:29.



















