Salve ragazzi, vorrei chiedervi prima di tutto se sono nella sezione giusta per postare una domanda del genere.
Il prof mi ha detto di creare un programma in Assembler che faccia la divisione tra numeri interi relativi in complemento a 2 in IJVM, con il seguente testo del problema:
Metodo per la divisione dei due valori relativi in modulo e segno al TOS tramite istruzioni IJVM . Il metodo deve implementare il metodo manuale delle divisioni “in colonna” e non semplicemente sottrarre al dividendo il divisore successivamente fino a che diventi minore del divisore stesso.
Ora prima di postarvi il codice, vi dico che solitamente al 99% degli orali che ha fatto non gli andava bene il metodo utilizzato e ne chiedeva un altro del tipo:
"ok come l'hai fatto tu va bene ma ci sarebbe arrivata anche una scimmia.. ora trovami un altro metodo per risolvere il problema, non voglio il codice ma solo la semplice spiegazione di cosa farai..."
capito!!! e se non la sai ti rimanda a posto arrivederci al prossimo appello..
Io l'ho risolto normalmente riproducendo a livello binario lo stesso tipo di procedimento che si mette in atto eseguendo una normale divisione decimale a mano su un foglio di carta. Questo consiste nell'allineare le cifre del divisore a sinistra sotto il dividendo, effettuare una sottrazione per vedere se il divisore e' maggiore del dividendo, segnarsi uno 0 nel caso in cui lo sia e un 1 nel caso in cui non lo sia, dopo di che shiftare il divisore a destra di una posizione e ripetere l'operazione. Gli 0 e gli 1 che si ottengono come risultato della sottrazione si aggiungono mano a mano sulla destra del quoziente facendolo scorrere verso sinistra. Dopo n+1 cicli (dove n e' il numero di spostamenti effettuati all'inizio per allineare il divisore a sinistra) nel quoziente si trova il risultato della divisione, e nel dividendo risulta presente il resto (0 se il divisore e' un sottomultiplo intero del dividendo). Con questo procedimento verranno eseguite al massimo n+1 sottrazioni. E' inutile ricordare che una divisione per zero e' un' operazione impossibile e va assolutamente evitata.
Se mi chiedesse un altro metodo?
Grazie