Sezione

Indirizzi Base Registri Interni
Area Comunicazione BIOS Funzioni BIOS Funzioni DOS
Prefazione Capitolo 1 Capitolo 2 Schede
Libreria ASM Libreria MAC Palestra Progetti ASM
Info Download INDICE

Libreria GIOBE.ASM

Home » Programma il Computer » Tutorial Assembly

Raccolta di Procedure

  Raccolta di Procedure ASM

INstrin [23 di 54] 

    

bulletRimane in attesa di una Stringa di caratteri nella posizione di stampa corrente.

 

bulletLa Procedura si chiama in questo modo:

               

  

bulletIn ingresso bisogna predisporre:
bulletDX con l'indirizzo di Offset del Buffer d'acquisizione, la struttura del quale è piuttosto particolare (vedi sotto)

 

bulletLa seguente Area di Testo mostra il Modulo varie05 utilizzato per inserire la Procedura nella Libreria Giobe.ASM/LIB:

               

INstrin / varie05

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

               

bulletL'analisi del codice mette in evidenza che, contrariamente a tutte le altre Procedure della Libreria, questa lavora a livello DOS; chiama infatti la Funzione DOS 0CH dell'INT 21H, con il compito di vuotare il Buffer (area di memoria) puntato in ingresso da DS:DX e poi di attivare la una seconda Funzione DOS, specificata dal numero inserito in ingresso in AL.
bulletPoichè la Procedura predispone il valore 0AH, la struttura chiamata è la Funzione DOS 0AH dell'INT 21H, cui spetta il compito vero: quello di leggere una stringa di caratteri dal dispositivo standard d'ingresso, cioè dalla tastiera, facendone ECO a video, finchè non risulta premuto Invio.
bulletCome in tutte le attività promosse a livello BIOS non esiste la possibilità di colorare i caratteri in acquisizione: essi  verranno stampati con i colori di default del DOS (di solito bianco su nero)
bulletPerchè la Procedura ( e le Funzioni DOS) funzioni correttamente il Buffer deve essere costruito ad arte; la seguente Area di Testo mostra un modo elegante di definirlo:

               

               

bulletL'analisi del suo contenuto suggerisce alcune considerazioni:
bulletesso va definito nella zona detta area destinata ai dati del programma, con la pseudooperazione DB
bulletla prima etichetta, associa il nome Buffer al primo byte dell'area ad esso dedicata
bulletla costante PRE_LEN, definita dal programma chiamante nella zona destinata alle costanti del programma con PRE_LEN EQU 10, rende dinamica la struttura: basta infatti cambiare il valore (nell'esempio 10) ad essa affidato per obbligare il compilatore a riservare automaticamente l'adeguato nuovo numero di bytes..
bulletil suo primo byte (definito MAX_LEN) deve specificare la lunghezza della stringa attesa da tastiera (incluso il codice 0DH associato alla pressione finale di Invio), quindi PRE_LEN+1
bulletil secondo byte (definito STR_LEN) viene scritto direttamente dal DOS con il numero dei caratteri effettivamente acquisiti (escluso il codice 0DH associato alla pressione finale di Invio)
bulleti caratteri sono posti nel Buffer a partire dalla sua terza locazione  (definita STRINGA) (incluso il codice 0DH associato alla pressione finale di Invio)

               

bulletPer esempio, se la costante è stata predisposta al valore PRE_LEN EQU 4:
bulletdopo aver premuto i tasti "1", "2" e invio nell'area di memoria destinata al buffer c'è:  5,2,'12♪  '
bulletdopo aver premuto i tasti "1", "2" , "3" , "4" e invio nell'area di memoria destinata al buffer c'è:  5,4,'1234♪'
bulletla variabile STR_LEN viene effettivamente caricata dal DOS con i valori, rispettivamente, 2 e 4
bulletla zona dei valori immessi :
bulletè comunque ampia 5 caratteri (come indica il contenuto di MAX_LEN =PRE_LEN+1=5)
bulletè riempita d'ufficio con altrettanti spazi (5 spazi)
bulletcontiene sempre la sequenza dei caratteri immessi, più il carattere "", che rende in forma visiva il valore 0DH di Invio, comunque inserito
bulletse il numero dei caratteri immessi è inferiore a quello massimo, dopo il carattere "", sono sempre presenti spazi

               

bulletCon PRE_LEN EQU 10:
bulletdopo aver premuto i tasti da "0" a "34" e invio nell'area di memoria destinata al buffer c'è:  11,5,'01234♪     '
bulletdopo aver premuto i tasti da "0" a "9" e invio nell'area di memoria destinata al buffer c'è:  11,10, '0123456789♪'

 

bulletIl corretto funzionamento di questa Procedura potrebbe essere opportuno fissare anche le coordinate della posizione di stampa (con M_CURSOR), sebbene questa informazione non sia strettamente necessaria:
bulletse non si specificano le coordinate la procedura collocherà il carattere nella posizione di stampa corrente (là dove lampeggia il cursore)

               

bulletPer esempio, per acquisire la stringa nel punto di coordinate riga=10 e colonna=20, si deve scrivere questa sequenza di istruzioni:

               

    

Pagina Precedente Libreria GiobeASM Pagina Successiva INstrin   Torna alla Home  del Capitolo3 del "Tutorial" Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
23 di 54
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54

    

Giobe.ASM » SET_cur | VIA_cur | RIP_cur | BIOScls| BIOSchr |BIObeep |Acapo| BIOchr1| STAsp| BIOSmsg
Byt2Asc | Wor2Asc | Asc2Byt | Asc2Wor | Byt2Dec | Wor2Dec | Dec2Byt | Dec2Wor
Delay | DelMicro | Del_2000 | Del1500 | Del_1000 | Del_100 | Del_1 | Del500Mi | Del200Mi
Del100Mi | Del010Mi | RIEMPI | KEYwait | Random | INstrin | CambiaCol | MODEtest
RAMchr | RAMcur | RAMmes | RAMcls | RAMcorn | RAMpiu | RAMrecup | RAMbyte | RAMword
TUTORIAL » Indirizzi Base | Registri Interni | Area Comunicaz. BIOS | Funzioni BIOS | Funzioni DOS
Prefazione | CAP 1 | CAP 2 | Schede | Palestra
Libreria ASM | Libreria MAC | Progetti ASM | Download | Info | Indice
Home 
Pascal|Manuali|Tabelle|Schede
Tutorial Assembly|Palestra Assembler
Aggiungi Giobe®2000 ai preferiti  
Motore
Ricerca
  Rendi Giobe®2000 pagina di Default
© 2001-2010  -  Studio Tecnico ing. Giorgio OBER
Tutti i diritti sono riservati