|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#41 |
|
Member
Iscritto dal: Sep 2005
Città: Barcelona
Messaggi: 200
|
Probabilmente qualnque ambiente di sviluppo C lo fa, senza necessità di utilizzare strumenti cosi costosi.
Sicuramente è corretto... se no nn funzionerebbe Se nn riesci direttamente in assembly, potresti usarlo come utlima risorsa o cmq per confrontare quello che scrivi tu con quello scritto dalla macchina.
__________________
Code without tests is broken by design. |
|
|
|
|
|
#42 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Ultima modifica di cionci : 22-10-2005 alle 09:49. |
|
|
|
|
|
|
#43 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Conta che l'io ci sarebbero le chiamate a funzione...e quindi sarebbe ancora meno confrontabile... |
|
|
|
|
|
|
#44 | |
|
Senior Member
Iscritto dal: May 2002
Messaggi: 2370
|
Quote:
|
|
|
|
|
|
|
#45 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Allora non ho ancora capito cosa deve fare il codice... Creare l'algoritmo di moltiplicazione binaria (in tal caso non devi usare l'istruzione MUL visto che applica già l'algoritmo sui due registri) o fare la moltiplicazione fra due numeri (con l'istruzione MUL) ?!?!?
Chiarisciti con lei e poi ne riparliamo... |
|
|
|
|
|
#46 | |
|
Senior Member
Iscritto dal: May 2002
Messaggi: 2370
|
Quote:
|
|
|
|
|
|
|
#47 | |
|
Senior Member
Iscritto dal: May 2002
Messaggi: 2370
|
Quote:
5 = 00000101 * ---> primo INPUT 2 = 00000010 = ---> secondo INPUT _________ 10 = 00000110 ----> stampo 10 come risultato Cioè il programma deve convertire in binario i due operandi, moltiplicare con i numeri binari (sempre a livello binario) e stampare a video il numero decimale a sua volta convertito da binario a decimale |
|
|
|
|
|
|
#48 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
infatti noi abbiamo dovuto implementare l'operatore MUL .. se poi devi fare pure tu quello allora è stato cionci a nn avere capito un kakkio km al solito! ![]() (Ora s'inkazza e mi banna!
__________________
|
|
|
|
|
|
|
#49 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
cmq provo a interpretare quello ke hai scritto e dimmi se ho interpretato bene.... mov ax,word ptr [_val1] sposta nel registro ax il primo operando movzx ebx,word ptr [_val2] la movzx non l'ho mai vista... ... meno male ke c'è santo google )mov cx,1h mette nel registro cx il valore 1h (nell'assembly x86 era possibile assegnare un valore in maniera immediata in questo modo? nn lo sapevo proprio..pensavo lo facessero solo i 68000 kn uno dei loro TANTI modi di indirizzamento.. )xor edx,edx ??? e questa? ![]() loop_mul confronta ax e cx.... se sono uguali va in no_add_mul (quindi esce dal ciclo) loop_mul: test ax,cx je no_add_mul add edx,ebx somma i registri edx e ebx mettendo il risultato nel primo....(al primo ciclo copia il contenuto di ebx in edx dato ke edx è 0 se nn ho capito male...) no_add_mul: add ebx,ebx somma ebx con se stesso... add cx,cx somma cx con se stesso... (non ci sto capendo più un kakkio.. non doveva essere add cx, 1h??? )jne loop_mul ritorna all'inizio del ciclo... non mi kiedere in base a cosa fa il confronto che non ho la minima idea..... forse sempre ax e cx???? mov dword ptr [_result],edx mette il risultato in edx.... ora.. se non ho capito male praticamente stai facendo la somma ax volte di ebx... praticamente per fare 12 X 10 sommi 12 volte 10 a se stesso... io quando avevo implementato l'operazione avevo usato un'altra tecnica... ad esempio... per moltiplicare un numero per le potenze di due shiftavamo il numero a sinistra di un numero di bit pari alla potenza di due per cui veniva moltiplicato.... praticamente... 3=011 2=010 3*2=6=110 --> ottenuto shiftando a sinistra 011 di un bit 3=011 4=010 3*4=12=1100 --> ottenuto shiftando a sinistra 011 di due bit 5=0101 4=0010 5*4=20=10100 -->ottenuto shiftando a sinistra 0101 di due bit e così via... per moltiplicare numeri ke non siano potenze di due avevamo trovato un metodo abbastanza simile.... sola ke ora km ora mi sfugge... e questo è sicuramente + efficiente ke sommare il num per sè stesso x n volte... ma scommetto ke ovviamente lo sapevi già e hai scritto quel codice poco efficiente solo per vedere se qualcuno si prendeva la briga di controllare.. ![]() se è ks visto ke c 6 ricordami km si procedeva x moltiplicare numeri qualsiasi ke non siano potenze di due ks intanto io faccio riposare un pò i miei neuroni stanki
__________________
Ultima modifica di ^TiGeRShArK^ : 23-10-2005 alle 01:50. |
|
|
|
|
|
|
#50 | ||||||
|
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
supponi di voler moltiplicare 21.167 * 18.529. In notazione binaria avremo: 101001010101111 * (21167) 100100001100001 = (18529) ------------------- noterai ce 18529 ha settati a 1 solo i bit 14,11,6,5,0, da cui si evince che: 18529=2^14+2^11+2^6+2^5+2^0, da cui: 21167 * 18529= 21167*(2^14+2^11+2^6+2^5+2^0) da cui: 21167 *18529= 21167*2^14 + 21167*2^11 + 21167*2^6 +21167*2^5+21167*2^0 da cui: 21167 * 18529= 21167 shift a sinistra di 14 + 21167 shift a sinistra di 11 + 21167 shift a sinistra di 6 + 21167 shift a sinistra di 5 + 21167 shift a sinistra di 0 da cui: 21167 * 18529 = 346800128 + 43350016 + 1354688 + 677344 + 21167 = 392203343 L'algoritmo in assembly x86 fa esattamente questo (chiaramente per qualsiasi valore degli operando). Spero sia chiaro. Ultima modifica di repne scasb : 23-10-2005 alle 10:11. |
||||||
|
|
|
|
|
#51 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
|
|
|
|
|
#52 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
l'implementazione in assembly mi devo mettere con calma per capirla.... ci provo pomeriggio
__________________
|
|
|
|
|
|
|
#53 | |
|
Senior Member
Iscritto dal: May 2002
Messaggi: 2370
|
Quote:
ma per usare i numeri binari, che istruzione devo usare? Come andrebeb strutturato il codice???
|
|
|
|
|
|
|
#54 | |
|
Senior Member
Iscritto dal: May 2002
Messaggi: 2370
|
Quote:
|
|
|
|
|
|
|
#55 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
no no... io sono semplicemente masochista!
era da un pò ke non toccavo l'assembly e volevo cercare di ricordarmi qualkosa
__________________
|
|
|
|
|
|
#56 | |
|
Senior Member
Iscritto dal: May 2002
Messaggi: 2370
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:42.




















