Sezione |
Indirizzi Base
Registri Interni
|
Libreria GIOBE.ASM |
Raccolta di Procedure ASM |
Dec2Byt [26 di 54] |
|
Aggiornato 13 febbraio 2007 |
Converte fino a 2 caratteri ASCII decimali nel numero binario a 8 bit che corrisponde loro. |
|
La Procedura si chiama in questo modo: |
|
|
In
ingresso bisogna predisporre:
|
|
|
In uscita lascia:
|
|
La seguente Area di Testo mostra il Modulo varie13 utilizzato per inserire la Procedura nella Libreria Giobe.ASM/LIB: |
|
Dec2Byt / varie13 |
NB: se il testo contenuto nell'Area
ti
sembra strano (cioè se contiene caratteri inconsueti) non hai ancora installato il font Giobe.TTF : clicca qui!! |
|
L'analisi del codice
mette in evidenza la seguente sequenza di operazioni:
|
|
Di solito questa Procedura
viene attivata subito dopo aver acquisito la
stringa da tastiera, con una procedura attenta a filtrare ogni
carattere non autorizzato e, possibilmente, in grado di gestire al meglio
l'acquisizione con i giusti accorgimenti:
|
|
La procedura non provvede alla stampa del risultato; se si desidera questo servizio basta chiamare la Procedura Byt2Asc, progettata per generare la stringa ascii esadecimale corrispondente al valore del byte passatole in AL e poi porla a video con il colore precedentemente predisposto in CS:[ATTRIB], nella posizione di stampa corrente. |
|
Prima della stampa del risultato è comunque opportuno provvedere alla verifica di eventuali errori, controllando se il valore di AL è FFH | |
Il nostro progetto si occupa di tutto, come puoi vedere nella prossima pagina. |
|
Una simile procedura è stata progettata per la Libreria Pascal (Giobe.TPU), con il nome di INexad. |
La Libreria
Giobe.ASM/LIB mette a
disposizione anche la Procedura
che provvede alla conversione opposta:
|
|
NB: La procedura Dec2Byt presente nella libreria Giobe.ASM [Giobe.LIB] contiene una lieve imprecisione, per altro praticamente irrilevante |
|
Desidero fare questa precisazione, per amore della correttezza: mi sono accorto [febbraio 2007] di una incongruenza logica nella Dec2Byt, a livello Dec_B1; in questo punto del codice la procedura effettua un controllo sul numero dei caratteri ASCII decimali effettivamente predisposti nella stringa da convertire; per operare questo controllo la versione presente in libreria utilizza le istruzioni CMP CX,2 e JG Dec_B2), nell'intento di verificare se il numero lasciato in CX è maggiore di 2. | |
Il problema sta nel fatto che, a rigor di logica, l'istruzione JG dovrebbe esser sostituita da JA, come mostrato nel listato corretto presente in questa pagina. | |
In fatti il numero da controllare (presente in CX) è decisamente un intero senza segno, per cui la seconda [JA (Above, "superiore a")] è logicamente più propria rispetto alla prima [JG (Great, "maggiore di", "più grande di")], destinata al controllo di numeri interi con segno. |
|
Tuttavia, il fatto che il processore sia chiamato ad interpretarlo (da JG invece che da JA) come numero con segno è praticamente irrilevante, essendo il numero da controllare comunque positivo e praticamente molto piccolo, quindi identico ad un numero senza segno. | |
Per questa ragione ho ritenuto di non intervenire sul codice presente nella libreria Giobe.ASM [Giobe.LIB], assolutamente funzionante anche senza questo dettaglio intellettuale, anche per non creare differenze con le migliaia di copie già scaricate, sulle quali è ovviamente impossibile intervenire... |
|
Libreria GiobeASM | Dec2Byt | |||||||
26 di 54 |
|
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|