A86/A386 and D86/D386 features

©2006 --- A86 main page --- Eric's home page --- E-mail Eric

A86/A386 Features

The following features make A86 and A386 the best:

  • A86 is blazingly fast -- many times faster than any competing assembler. On a typical computer (Pentium II or better, with source files already disk-cached) A86 assembles at a rate of over 100,000 lines per second. That's per second. NOT per minute, per second.
  • A86 is simple to use. You can feed it a program containing just machine instructions, without the red tape (NAME, ASSUME, SEGMENT PARA PUBLIC, PROC, ENDP, END, PUBLIC, EXTRN, etc. etc.) necessary with other assemblers. The output of A86 can be a .COM file, ready to execute immediately. You don't have to go through a linker. Or, if you want to go through a linker, A86 will produce a correct .OBJ file even if no red tape directives are given-- the default settings are compatible with most high-level languages. (If you have programs written for another assembler containing the red tape directives, you may leave them in: A86 knows about them, and is programmed to act upon them when assembling .OBJ files, and ignore them if assembling .COM files.)
  • In spite of its simplicity, A86 encourages modular programming, even in its .COM mode, with separately-developed source files. This is because A86 assembles multiple source files in its invocation line; and because A86 assembles source files faster than other people's linkers can link their object files. You get all the advantages of relocation/linkage systems (building up libraries of reliable program modules that you can piece together), without the disadvantages (excessive, time-and-source-code-wasting, confusing red tape).
  • A86 has ample capacity for large programming projects. Its symbol table capacity is approximately 3000 10-letter symbols, plus room for 15K bytes of compressed macro definition text. (10 letters is an average symbol length; A86 recognizes up to 127 letters in a symbol.) Plus, A86's generic local label facility effectively doubles your symbol table capacity.
  • A86 has language extension features that, once you start using, you'll never want to do without. These include multiple operands to PUSH and POP; conditional returns; MOV from one segment register to another; assembly time assertion checking; based structures; and IF (flag) (statement).
  • A86's macro processor is the best, achieving an optimal balance between ease of use and raw power. Its looping and text concatenation abilities let you define sophisticated macros, whose calls look just like the machine instructions that surround them; without the clumsy invocation syntax required by other macro processors of A86's power.
  • A86 provides clear, English error messages, given right at the point in the source code where A86 detected the error. The messages are actually inserted into your source file, where you can read them and correct your code at the same time. You can remove the messages yourself, or A86 will remove them for you when it reassembles the file. (Fear not: your original source is preserved in x.OLD if you want it. Or you can disable this feature and send error messages to a .ERR file.)
  • A86 provides a full complement of assembly time expression arithmetic operators, compatible with Intel/IBM assemblers. A86 also provides 4-function floating point arithmetic in assembly time expressions used for floating point initializations (an A86-exclusive feature).
  • A86 assembles the floating point instruction set of the 8087/287/387/IIT coprocessors, and the extended instruction set of the 186/286/NEC series, including the NEC-unique instructions. The 32-bit version, A386, assembles all the new instructions through the Pentium III and AMD Athlon processors.
  • A86 has a built-in source file library feature. Any undefined procedures or macros in your program are automatically searched for in a special library file A86.LIB, and the associated source files are automatically assembled. This makes access to library routines as effortless as it is in the "C" programming language. A sample A86.LIB file is included in the shareware version of the package. Only registered users should have the tool A86LIB, with which you can create your own library files.
  • A86 has a powerful listing facility, allowing you complete flexibility over the format of your listings, and including an extremely sophisticated algorithm for automatically generating page breaks at sensible places.
  • A86 works with an associated symbolic debugger, D86, to make the finest development environment available for the PC.
  • Click here for purchase information.


    D86/D386 Features

    The primary design criterion for D86/D386 is ease of use. This is reflected in the most notable features of D86 and D386:

  • You don't need to ask D86 what the values of registers and flags are. They are there, automatically, at a fixed location on the screen.
  • You don't need to ask D86 where in your program you are stopped. A disassembly is always generated, at another fixed location on the screen. The disassembly gives a hefty chunk of your program, not just the single instruction you are at. A cursor next to the disassembly marks the current location. The disassembly chunk remains fixed as you step though it, allowing you to follow the flow of the program much more easily. If you wrote the program using A86, the disassembly is symbolic, giving instruction operands by name, and labelling disassembly locations when possible.
  • You don't need to ask D86 what is on the machine stack. A display of the top elements of the stack is always generated, at yet another fixed location on the screen.
  • You can set up windows into memory, displaying memory contents in a variety of types. The types can even be mixed, to display complicated structures. The windows will stay at the same location until you turn them off, allowing you to watch what your program is doing to those memory locations.
  • D86 will generate complete window of the state of the floating-point coprocessor. The values of the stack elements are in a readable decimal format, with suppression of unneccessary zeroes, and scientific notation only if necessary. The 32-bit version D386 also includes display Windows for the MMX registers, SIMD registers, and 3DNow packed values, whenever it is running on a processor that supports any of those features.
  • You can, at any time, enable a help-window, to guide you through debugger commands. You will be astounded by the sophistication of this help-facility, especially since other debuggers offer no on-line help whatsoever.
  • All of the above-mentioned windows, except for the last two, exist on the screen at the same time. You don't have to switch between them.
  • You can single-step your program with single keystrokes, rather than sequences of arcane commands. There are several flavors of single-step keys, clustered together on the function-keypad. This, combined with the automatic nature of the display, allows you to single-step very quickly. You feel like you are actually watching your program run.
  • Much of D86's command language is simply the A86 assembly language itself. You can type in any A86 instruction, to be executed immediately. You use this to set registers and variables, perform arithmetic, jump to another location, etc. The immediate-execution feature makes D86 the most effective tool available for teaching 86 architecture: the student can watch the effects of instructions on registers, flags, and memory.
  • You can patch programs in memory, using the full power of the A86 assembly language.
  • Click here for purchase information.


    A86 main page --- Eric's home page --- E-mail Eric