Sezione |
Indirizzi Base
Registri Interni
|
Palestra Livello Apprendisti Livello Esperti |
Programmare in Assembly |
Esercizio n° A031 3/4 [149 di 157] |
|
|
||
Aritmetica con Numeri Binari -
DIVISIONE di 2 numeri DECIMALI a 2 cifre Versione Ottimizzata con MACRO |
||
Dettaglio sulla Terza Fase: divisione dei 2 operandi |
|
La terza fase del progetto esegue la sottrazione aritmetica, visualizzando i 2 operandi e la loro differenza. |
|
|
Esercizio |
NB: se il testo nell'Area
ti
sembra strano installa il font Giobe.TTF: clicca qui!! |
|
A ciò sono delegate le 2 Procedure locali, Div1 e Div2, specializzate per rendere al meglio il compito loro affidato, la prima in notazione decimale e la seconda in notazione binaria, con l'aiuto delle 3 nuove Macro locali, M_Chr_, M_ByDec e M_BytAsc descritte in questa pagina. |
|
La prima, Div1, organizza la proposta in notazione decimale del dividendo, del divisore, del loro quoziente e del resto: |
|
|
La seconda, Div2, propone il dividendo, il divisore, il loro quoziente e il resto in notazione binaria: |
|
|
Per la divisione si utilizza l'istruzione DIV che esegue l'operazione tra operandi ritenuti interi senza segno; il dividendo è assunto da AX (numero a 16 bit) e il divisore da BH; il risultato (quoziente) è lasciato in AL e il resto in AH. |
|
La divisione è un'operazione aritmetica particolare: il processore si ribella se gli operandi non sono coerenti, eseguendo una speciale procedura di sistema che termina il programma in esecuzione e segnala un errore di "overflow di divisione"; questa accade se il divisore è nullo o se il dividendo è più piccolo del divisore. |
|
Nel primo caso è sempre utile confrontare il divisore con 0 (con CMP divisore,0) prima di eseguire ogni divisone, ma questo semplice programma non se ne occupa, limitandosi a scambiare gli operandi quando si presenta il secondo caso. |
|
Palestra Apprendisti | Esercizio n° A031 3/4 | |||||||
149 di 157 |
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|