| 
      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  | 
      
  |