********************************************************************* Source code from the book: Mastering Turbo Assembler by Tom Swan (Hayden,1989) *********************************************************************** PART I Programming with the Turbo Assembler -1- Intro -2- First steps FF.asm - sends form feed to printer COMSHELL.asm - shell for *.COM files EXESHELL.asm - shell for *.EXE files PR132.asm - selects compressed 132-character printer output -3- A bit of binary -4- Using Turbo Assembly language instructions These are used with the Turbo Debugger as detailed in the book. MOV.asm - MOV demo PUSHPOP.asm - PUSH/POP demo ADDSUB.asm - ADD/SUB/INC/DEC demo MULDIV.asm - MUL/DIV/IMUL/IDIV demo ANDORXOR.asm - AND/OR/XOR demo SHIFT.asm - SHIFT demo SUBDEMO.asm - Subroutine demo -5- Simple data structures STRINGS.asm - string procedures STRIO.asm - string i/o procedures ECHOSTR.asm - string read test MAIN/MODULE.asm - simplified external example -6- Complex data structures STRUC.asm - structure demo for Turbo DEBUGGER VERSION.asm - automatic program version demo BINASC.asm - binary to ascii conversion routines EQUIP.asm - displays PC equipment information CONVERT.asm - converts binary/hexadecimal/decimal numbers -7- Input and Output FILTER.asm - filter shell SCREEN.asm - memory mapped video screen output routines CHARS.asm - displays character/attribute reference KEYBOARD.asm - keyboard input routines KEYS.asm - displays key values -8- Macros and conditional turbo assembly DOSMACS.asm - subset of DOS Macros for Turbo Assembler (Ideal mode) -9- Disk file processing DISKERR.asm - disk error handler PARAMS.asm - parse DOS command-line parameters SHOWPARAM.asm - display " " " " KOPY.asm - copy input to output DR.asm - display disk directory -10- Interrupt handling SLOWMO.asm - slow motion interrupt generator (to slow PC for games) DIV286.asm - 80286/386 divide-fault ISR installer DIVFAULT.asm - divide-fault demo ASYNCH.asm - asychronous serial communications module TRM.asm - terminal emulator w/control-code debugging SINGLE.asm - single-step (trap) demo -11- Advanced topics A. Binary Coded Decimals (popular in business applications). BCD.asm - bcd routines B. Processing tables. TABLE.asm - using tables for gaining speed BOXCHAR.asm - uses table to map ALT keys to give box drawing characters C. Using Segments in programs HARDSHEL.asm - shell for *.EXE files with Unsimplified Segments COLDBOOT.asm - performs reboot D. Programming the 80286 BOUND286.asm - bound test (to be used ONLY on 80286/386 systems!) PART II Multi-Language programming -12- Optimizing "PASCAL" PASSHELL.asm - shell for TurboPascal *.OBJ modules PASDEMO.asm - a crazy demo of how to pass code/data between PASCAL/TASM PASDEMO.pas - " " " " " " FILLSTR.asm - external pascal string filler function FILLSTR.pas - " " " STR.pas - string conversion STR.asm - " " -13- Optimizing "C" TALLY.c - short example of in-line assembly code UPDOWN.c - in-line assembly code function demo CSHELL.asm - shell for Turbo C *.obj modules CFILLSTR.c - calling assembly language functions from Turbo C demo CFILLSTR.asm - " " " PART III Reference -14- 8086/88, 80286, 80386 Reference Guide -15- Turbo Assembler Reference Appendix 1 - Bibliography Appendix 2 - Answers to Exercises _____________________________________________________________________________ Also ... ----------------------------------------------------------------------------- NOTE: Now available on a public BBS near you is the program ASMED. This program is great in that it adds the Turbo Pascal/Turbo C Interactive Environment to TASM !!!!!!!!!!!!!!!!! (well not quite but NICE try !) NOTE about TURBO ASSEMBLER's Ideal mode (from page 7 of book): "Turbo Assembler is actually two assemblers in one. Normally, Turbo Assembler processes programs written in the popular MASM syntax. For assembling programs downloaded from bullein boards, copied from time-share systems, or gleaned from MASM books, this is the method to use. (ALL ASM) Examples in this book use Turbo Assembler's IDEAL MODE, which I believe to be superior to MASM syntax-especially for writing stand-alone assembly language programs. With IDEAL mode, programs assemble faster and are less prone to developing bugs that can result from MASM's many known quirks and syntactical freedoms. (The Turbo Assembler User's Guide spells out the difference between MASM & Ideal mode instructions.) In addition to extra speed and the absence of Quirky behavior, Ideal mode offers other advantages. Structures (similar to Pascal records or C structures) can repeat member field names. Assembler directives are easier to remember and use. Equated symbols and expressions always have predictable values. And formats for various memory-addressing modes must conform to generally recognized guidelines. If you don't yet grasp the significance of some of these items, you'll have to trust my opinion: Ideal mode is what PC programmer's have needed for years. Don't be concerned that, by learning Ideal mode, you'll be shut out from using thousands of lines of MASM code in the public domain. After learning Ideal mode, you'll be able to read and understand MASM-mode programs with Little effort. Most differences between the two modes of programming are subtle-a spelling change here, an operand reversal there. I regularly read & work in both syntaxes without difficulty, but I prefer using Ideal mode for new projects." NOTE: this book comes with a handy Reference Card that contains all the instructions for the 8086/8088/80286/80386 processors and it comes with numerous Exercises at the end of each chapter with answers for the exercises in the Appendix. ***********************************************************************