Sezione |
Indirizzi Base
Registri Interni
|
Libreria GIOBE.ASM |
Raccolta di Procedure ASM |
Dec2Wor [27 di 54] |
|
Aggiornato 13 febbraio 2007 |
Converte fino a 5 caratteri ASCII decimali nel numero binario a 32 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 varie14 utilizzato per inserire la Procedura nella Libreria Giobe.ASM/LIB: |
|
Dec2Wor / varie14 |
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!! |
|
|
Va sottolineato che, nonostante sia assolutamente necessario disporre a un'area di memoria (variabile) composta da 6 bytes (i 5 caratteri e il terminatore 00H), essa può risultare riempita anche parzialmente; è il caso dei programmi che immettono in essa i codici dei tasti numerici premuti. |
|
In questi casi:
|
|
Dunque, se la stringa da convertire non è
nulla e ha meno di 6 caratteri ascii
numerici:
|
|
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 Wor2Asc, progettata per generare la stringa ascii esadecimale corrispondente al valore del byte passatole in AX 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 DX è FFFFH |
|
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 Dec2Wor 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 Dec2Wor, a livello Dec_W1; 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,5 e JG Dec_W8), nell'intento di verificare se il numero lasciato in CX è maggiore di 5. | |
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 | Dec2Wor | |||||||
27 di 54 |
|
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|