Turboassembler 1.0 Di Sergio Polini
Total Page:16
File Type:pdf, Size:1020Kb
PROVA Bor/and TurboAssembler 1.0 di Sergio Polini elluglio 1986 la Microsoft stabilì un 'impresa tutt'altro che banale, ma loro peso. Tutti sapevamo che la Bor- un nuovo standard. Acquistando con un simile strumento a disposizione i land non avrebbe dormito su instabili N la versione 4.0 del suo compila- tempi di sviluppo di un programma si allori; ci chiedevamo solo quando avreb- tore C si otteneva il CodeView, un de- sono abbreviati sensibilmente. be fatto la prossima mossa. Bene, ci bugger simbolico di ottimo livello, un Un po' alla volta tutti i compilatori siamo. /I Turbo C 2.0 e il Turbo Pascal decisivo passo in avanti rispetto al "vec- Microsoft, ed anche l'assembler, sono 5. O hanno ora un debugger simbolico chio)) SYMOEB ed anche rispetto ad stati confezionati con il CodeView. È integrato, più o meno analogo a quello altri prodotti analoghi già sul mercato. proprio questo il nuovo standard: nella del QuickC; è possibile però anche ac- Con il CodeView, programmi che dava- prova di un compilatore o di un assem- quistare le versioni "Professional)) dei no risultati pazzi, o programmi che in- bler non si può prescindere dalla com- due compilatori, che comprendono un chiodavano la macchina, cessavano di patibilità con il CodeView o dalla dispo- Turbo Oebugger separato e un Turbo essere un incubo. Non era più necessa- nibilità di un prodotto almeno equivalen- Assembler. Oppure si possono acqui- rio disseminare nei sorgenti decine di te, e ne ha fatto le spese, tra gli altri, stare le versioni "normali)), integrandole istruzioni write o printf, solo per tenere anche la Borland. Un paragone tra il poi con un Turbo Assembler/Oebugger, sotto controllo lo svolgimento delle ope- Pascal della Microsoft e il Turbo Pascal la confezione con le due maggiori no- razioni: se qualcosa non andava per il non si pone nemmeno, tanto è il suc- vità. verso giusto ci pensava il CodeView a cesso che centinaia di migliaia di utenti Il tutto con il consueto stile Borland: il farci eseguire passo passo il program- hanno decretato a favore del secondo. Turbo Oebugger verrà esaminato il me- ma, tenendo costantemente sott'occhio Ben diversamente è andata però per il se prossimo, ma già vi possiamo antici- i valori delle nostre variabili, i registri del C: il debugger simbolico integrato nel pare che ... sarà ora la Microsoft a non microprocessore, qualsiasi locazione di QuickC, il CodeView offerto fin dal C poter dormire sugli allori! Quanto al memoria. Trovare un bug era e rimase 4. O hanno indubbiamente fatto sentire il Turbo Assembler, giudicate voi. TURBO ASSEMBLER· 100 MCmicrocomputer n. 81 - gennaio 1989 PROVA TURBO ASSEMBLER 1.0 Turbo Assembler 1.0 Produttore: Borland International 1800 Green HiIIs Road A cosa serve un assembler? La do- P.O. Box 660001 pacata mente con un esperto e saggio manda sembra banale, ma secondo la Scotts Val/ey, CA 95066-0001 programmatore, che non solo lo intro- Distributore: Borland non lo è. Edia Borland Srl duce piano piano ad un mondo sicura- Può essere utilizzato per scrivere bre- Via Cavalcanti, 5 - 20127 Milano mente ostico per chi vi si accosti per la vi programmi di utilità o applicazioni Telefono: 0212610102 prima volta, ma si preoccupa di metter- complesse, ma anche per ottenere la Prezzo (IVA 9% esclusa): lo in guardia sia dalle «cattive abitudini» Turbo Assembler/Debugger 1.0 L. 249.000 massima efficienza nelle sezioni più cri- che dagli errori in cui è più facile incor- tiche di un programma scritto in un rere. linguaggio di alto livello (quelle che Ecco ad esempio come «il saggio» maggiormente incidono sulle prestazio- spiega perché è meglio scrivere una ni velocistiche del tutto), magari ottimiz- Spesso l'elemento decisivo è l'algorit- label da sola su una riga, rimandando zando «a mano» il codice prodotto dal mo usato, e l'uso di un linguaggio di alla successiva le corrispondenti istru- compilatore. alto livello rende più efficace la ricerca e zioni: «In primo luogo, se mettete ogni In fondo è anche per questo che vi l'implementazione dell'algoritmo mi- label da sola su una riga, è più facile sono diversi assembler sul mercato, tra gliore. usare nomi lunghi per le label senza i quali potremmo includere perfino il In un mercato sempre più competiti- sconvolgere il formato del vostro sor- buon vecchio DEBUG del DOS, vista la vo è poi anche più importante un'altra gente [...l. possibilità di usarlo per produrre brevi velocità: quella dell'attività di program- In secondo luogo, è più facile aggiun- file .COM. mazione; è chiaro che in ogni caso l'uso gere una nuova istruzione subito dopo Tra tutti è comunque sempre emerso di un linguaggio di alto livello consente una label se non vi sono istruzioni sulla il Macro Assembler (MASM) della Mi- tempi di sviluppo più brevi. stessa riga in cui è la label». crosoft: una sintassi relativamente agile Solo in una seconda fase, dopo aver Sono osservazioni che possono risul- ne consente l'uso anche per il piccolo individuato i «colli di bottiglia» del pro- tare banali solo a chi non ha mai scritto cabotaggio, mentre le numerose diretti- gramma finito, è lecito intraprendere più di tre righe in assembler, ma soprat- ve e le potenti macro ne hanno sempre una conversione in assembler delle se- tutto danno un'idea dello spirito con cui fatto lo strumento preferito per la pro- zioni «critiche». il manuale è stato scritto. grammazione «seria». Solo recente- Questo spiega la più evidente diffe- Un altro esempio: ogni testo o ma- mente è apparso un pericoloso concor- renza tra il Turbo Assembler e i compila- nuale sull'assembler 80x86 deve spie- rente: l'OPTASM della SLR Systems tori fratelli: l'assenza di una interfaccia gare a cosa serve e perché è necessaria che, pur non riconoscendo le istruzioni utente «alla Borland». la direttiva ASSUME, l'oggetto forse più specifiche de1l'80386/387, si presenta Il TASM è fatto per essere usato misterioso per i principianti (e non solo come un prodotto di ottima fattura, prevalentemente da un makefile, per la per loro). Bene: nessun dubbio può compatibile con il MASM (nelle sue preparazione di file .OBJ da «Iinkare» restare dopo aver letto le pagine 116- diverse versioni) e espressamente poi a quelli prodotti dai compilatori Ba- 119 della User's Guide. orientato alla programmazione profes- sic, C, Pascal o Prolog. Si potrebbe continuare: si consiglia di sionale, alla produzione di programmi non usare mai la direttiva «.RADIX 16» complessi. I manuali e se ne spiegano con chiarezza gli in- Il mercato è quindi diventato dinami- convenienti; si illustra l'utilità, non a co, si è cioè aperta una corsa alla palma Un'altra evidente differenza è nello tutti evidente, dell'istruzione JCXZ; ci si del «migliore», nella quale i concorrenti stile dei manuali. A parte forse quello sofferma con puntiglio sugli incrementi/ sono subito diventati tre: il Turbo As- del Turbo Prolog, i manuali della Borland decrementi dei registri SI, DI e CX ope- sembler (TASM) della Borland appare non hanno mai preteso di essere dei rati dalle istruzioni di stringa (LODS, avere tutte le intenzioni di dire la sua, tutorial. «Nonostante i molteplici esem- STOS, MOVS, SCAS, CMPS) e sulla anche per la produzione di intere appli- pi, [questo manuale] non vuole essere confusione che possono generare, ecc. cazioni, pur essendo espressamente né un libro di testo né un manuale Manca un capitolo dedicato all'espo- dedicato agli utenti dei compilatori Bor- autodidattico e presume quindi almeno sizione sistematica delle diverse istru- land. Compatibile con il MASM, com- una conoscenza di base del linguag- zioni, proprio perché queste vengono pleto delle istruzioni dell'80386/387, ri- gio»; così cominciavano i manuali delle prima elencate tutte insieme, poi esa- sulta molto interessante per chi voglia prime versioni del Turbo Pasca!. Ora minate una ad una attraverso numerosi usarlo da solo, ma eccelle soprattutto abbiamo una User's Guide e una Refe- esempi, ponendo sempre l'accento sul- come strumento ausiliario. rence Guide; nella seconda si descrivo- l'uso corretto di ognuna. Sembrerebbe che alla Borland creda- no le variabili predefinite, gli operatori, Un indice analitico molto ben fatto fa no (a ragione) che non ha più molto le direttive, la sintassi dell'assembler, le il resto. senso scrivere interi programmi in as- estensioni rispetto al MASM, i program- Dopo le oltre 270 pagine dedicate a sembler: oggi è infatti possibile dispor- mi di utilità (MAKE, TOUCH, TLlNK, questa illustrazione, ben trenta pagine re di compilatori molto potenti, anche TLlB, GREP, OBJXREF, TCREF), i mes- riassumono concisamente gli errori e i per quanto riguarda l'accesso all'hard- saggi d'errore; nella User's Guide, inve- trabocchetti più comuni: un vero e pro- ware e l'interfaccia con il sistema ope- ce, si mostra con estrema gradualità prio tesoro di preziosi consigli. L'unico rativo, e l'esperienza ha ormai insegna- l'uso dell'assembler e delle diverse op- appunto potrebbe riguardare la brevità to che non sempre è vera l'equazione zioni senza nulla dare per scontato. forse eccessiva della sezione dedicata «assembler = codice più veloce». L'utente si trova come a discorrere ai salti condizionali, alla possibile con fu- MCmicrocomputer n. 81 - gennaio 1989 101 PROVA TURBO ASSEMBLER 1.0 Istruzioni lA I segmenti vengono ordinati alfabeticamente nel file oggetto sione tra un JA. ad esempio, ed un JG IB Inclusa solo per compatibilità con il MASM, non ha alcun effetto (da usare il primo per valori «segnati», IC Aggiunge informazioni di «cross reference» al file listato ovvero con il bit più significativo dedica- IO Definisce un simbolo (come con la direttiva =) lE Genera codice compatibile con una libreria di emulazione dell'80x87 to a rappresentare un segno positivo o IH Mostra una schermata di help (anche l?) negativo, il secondo per valori «non Il Specifica un path per i file da includere segnati»).