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

Palestra Livello Apprendisti Livello Esperti

Home » Programma il Computer » Tutorial Assembly

Palestra Assembly - Home Page

  Programmare in Assembly

Esercizio n° A016 3/6 [82 di 157] 

               

Analisi del Codice · Lettura Caratteri · Conversione Minus to Maius · Stampa risultato · Conclusioni

Acquisizione Caratteri - Aspetta la digitazione di un stringa e poi la rende MAIUSCOLA
Prima Fase: Lettura dei caratteri da tastiera [1 di 3]

               

bullet Il codice si sviluppa attraverso 3 fasi specializzate, in aggiunta a quelle standard, iniziale (Desktop) e finale (rientro al DOS), date per spiegate:
bulletla prima si occupa della lettura dei Caratteri da tastiera
bulletla seconda provvede alla trasformazione in maiuscolo dei soli ascii letterali
bulletla terza mette a video il risultato

  

bulletVediamo i dettagli di ciascuna di esse:

  

Console - Video & Tastiera

Esercizio FACILE Esercizio
NB: se il testo nell'Area  ti sembra strano
     
installa il  font
Giobe.TTF: clicca qui!!
Mostra l'Effetto Prova l'eseguibile COM Scarica il codice Sorgente ASM

  

bulletLa prima fase è una classica attesa tasti premuti:
bulletprovvede ad avvisare l'utente della necessità di acquisire una stringa, con la stampa di un messaggio
bulletfissa la posizione di stampa iniziale (M_CURSOR 03,01 , riga3, colonna1) e il colore desiderato (M_COLOR 0EH , giallo su nero) per i caratteri della stringa in acquisizione
bulletsi mette in attesa e, dopo la pressione di ogni tasto inserisce il corrispondente carattere ascii nelle locazioni di memoria destinate a conservarli e ne fa eco a video
bulletpone fine all'acquisizione non appena viene rilevata la pressione di Invio

  

bulletSembra un codice scontato...; tuttavia desidero sottolineare alcuni interessanti spunti:
bulletper puntare l'area destinata a conservare i caratteri che stiamo per leggere, uno dopo l'altro, dalla tastiera conviene sempre usare l'istruzione LEA (LEA SI,DEPO)
bulletil compito è quello di affidare ad un registro (SI) il valore associato dall'assemblatore all'etichetta DEPO, cioè l'indirizzo della locazione iniziale di questa zona di memoria
bulletlo stesso compito dell'istruzione LEA può essere svolto dalla MOV SI,OFFSET DEPO, meno compatta nella forma, anche se l'operatore OFFSET consente il risparmio di un byte nella compilazione dei rispettivi codici macchina
bulletè comunque necessario predisporre l'area di memoria DEPO, nella zona destinata ai dati del programma:

  

  

bulletin casi come questo è conveniente l'uso dell'operatore DUP che consente di riservare spazio per una quantità n di dati del tipo e della dimensione indicato dal contenuto delle sue parentesi
bulletnel nostro caso vengono riservate 80 locazioni consecutive, precaricate tutte con spazi
bulletquesta consapevolezza ci consiglia (o meglio, ci obbliga) a limitare a 80 il numero di tasti premuti, altrimenti l'eseguibile continuerà ad immetterne il codice ascii, occupando anche le locazioni successive a quelle destinate a questo scopo
bulletcome puoi vedere in questo caso il rischio è limitato, essendo le locazioni successive occupate dal testo dei messaggi già posti a video, cioè già utilizzate dal programma; ma prova a pensare cosa sarebbe successo se subito dopo fosse cominciato il codice assembly di una procedura o del main program...

  

bulletIn ogni caso:
bulletil codice ascii del tasto premuto (qualunque esso sia, lasciato in AL dalla CALL KEYwait) viene riposto nella stringa di deposito (MOV CS:[SI],AL, metti il valore di AL  nella locazione puntata da CS:[SI]), compreso il codice ascii di Invio, lasciando il puntatore pronto per puntare la locazione successiva (INC SI)
bulletse il tasto appena premuto non è Invio il carattere corrispondente è posto a video, nella posizione di stampa e nel colore corrente

    

Pagina Precedente Palestra Apprendisti Pagina Successiva Esercizio n° A016 3/6   Torna alla Home  della Palestra Assembly Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
82 di 157
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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157

    

PALESTRA » Apprendisti » Es.001 Es.002 Es.003 Es.004 Es.005 Es.006 Es.007 Es.008 Es.009 Es.010 Es.011 Es.012
Es.013 Es.014 Es.015 Es.016 Es.017 Es.018 Es.019 Es.020 Es.021 Es.022 Es.023 Es.024
Es.025 Es.026 Es.027 Es.028 Es.029 Es.030 Es.031 Es.032 Es.033

| Che serve per iniziare | Prima compilazione | Livello Esperti |

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