converti da ascii ad alfanumerico
Transcript
converti da ascii ad alfanumerico
CONVERSIONE DAL CODICE ASCII Abbiamo il nostro Pensosi che è in ascolto di un messaggio da parte di un radioamatore che trasmette i suoi messaggi in codice ASCII. Pensosi legge da un display il codice e lo converte in caratteri alfabetici trasmettendoli sulla periferica di uscita. Quando viene trasmessa la sequenza END il programma termina altrimenti prosegue indefinitamente Antonio Santoro ANALISI Abbiamo due tabella: la prima è memorizzata in via Starza Lunga e contiene i codici ascii mentre la seconda è memorizzata in via Cancello e contiene nello stesso ordine i caratteri alfanumerici. La conversione avviene semplicemente facendo avanzare contemporaneamente un puntatore alla prima tabella ed un puntatore alla seconda tabella. Ci si ferma quando nella prima tabella si è incontrato il codice inviato. Il suo corrispondente alfanumerico sarà automaticamente puntato dal secondo puntatore. Per decidere se si è finito si userà un registro che funzionerà da flag: quando vale zero vuol dire che non è ancora iniziata la sequenza END. Appena arriva la E si pone ad 1 il flag. Se arriva una D si controlla il flag: se esso è a 2 vuol dire che la D è l'ultima lettera della sequenza END. Se il carattere ricevuto non è E, né D né N vuol dire che la sequenza non è iniziata o se pur iniziata non si è conclusa e quindi se prima si erano ricevuti E o EN non si trattava della sequenza terminale, perciò il flag va posto a 2. Infine se si riceve N e il flag è pari a 2 forse siamo alla seconda lettera della sequenza finale e poniamo il flag a 2. PSEUDOCODIFICA Inizio: D=0 Ciclo: ascolta la radio Se non c'è un codice salta a ciclo A=codice B=via starza lunga 1 C=via cancello 1 Ciclo2: se A=(B) salta avanti Inc B Inc C Salta a ciclo 2 Avanti: A=(C) Scrivi A sull'unità di uscita Se A diverso da 'E' salta ad avanti2 D=1 Salta a ciclo Avanti2: se A diverso da 'D' salta ad avanti3 Se D diverso da 2 salta ad avanti 4 Fermati Avanti4: D=0 salta a ciclo avanti3: se A diverso da 'N' salta ad avanti5 se D diverso da 1 salta ad avanti6 D=2 Salta a ciclo Avanti6: D=0 Salta a ciclo Avanti5: D=0 Salta a ciclo Si noti come vi siano delle ripetizioni inutili nella flow chart che può essere semplificata portando alla nuova pseudocodifica Inizio: D=0 Ciclo: ascolta la radio Se non c'è un codice salta a ciclo A=codice B=via starza lunga 1 C=via cancello 1 Ciclo2: se A=(B) salta avanti Inc B Inc C Salta a ciclo 2 Avanti: A=(C) Scrivi A sull'unità di uscita Se A diverso da 'E' salta ad avanti2 D=1 Salta a ciclo Avanti2: se A diverso da 'D' salta ad avanti3 Se D diverso da 2 salta ad avanti 5 Fermati avanti3: se A diverso da 'N' salta ad avanti5 se D = 1 salta ad avanti4 avanti5: D=0 Salta a ciclo Avanti4: D=2 Salta a ciclo