D86 (debugger)
   HOME

TheInfoList



OR:

A86 is an
assembler Assembler may refer to: Arts and media * Nobukazu Takemura, avant-garde electronic musician, stage name Assembler * Assemblers, a fictional race in the ''Star Wars'' universe * Assemblers, an alternative name of the superhero group Champions of A ...
for
MS-DOS MS-DOS ( ; acronym for Microsoft Disk Operating System, also known as Microsoft DOS) is an operating system for x86-based personal computers mostly developed by Microsoft. Collectively, MS-DOS, its rebranding as IBM PC DOS, and a few ope ...
which generates code for the
Intel Intel Corporation is an American multinational corporation and technology company headquartered in Santa Clara, California. It is the world's largest semiconductor chip manufacturer by revenue, and is one of the developers of the x86 seri ...
x86 x86 (also known as 80x86 or the 8086 family) is a family of complex instruction set computer (CISC) instruction set architectures initially developed by Intel based on the Intel 8086 microprocessor and its 8088 variant. The 8086 was introd ...
family of
microprocessor A microprocessor is a computer processor where the data processing logic and control is included on a single integrated circuit, or a small number of integrated circuits. The microprocessor contains the arithmetic, logic, and control circu ...
s. Written by Eric Isaacson, it was first made available as
shareware Shareware is a type of proprietary software that is initially shared by the owner for trial use at little or no cost. Often the software has limited functionality or incomplete documentation until the user sends payment to the software developer ...
in June 1986. The assembler is contained in one 32K executable and can directly produce a
COM file A COM file is a type of simple executable file. On the Digital Equipment Corporation (DEC) VAX operating systems of the 1970s, .COM was used as a filename extension for text files containing commands to be issued to the operating system (simi ...
or an
object file An object file is a computer file containing object code, that is, machine code output of an assembler or compiler. The object code is usually relocatable, and not usually directly executable. There are various formats for object files, and the ...
for use with a standard linker. It comes with a
debugger A debugger or debugging tool is a computer program used to software testing, test and debugging, debug other programs (the "target" program). The main use of a debugger is to run the target program under controlled conditions that permit the pr ...
, D86. While supporting expected x86 syntax, A86 allows simpler shorthand in some cases and does not require directives, such as ASSUME, SEGMENT, and PROC, which
Microsoft Macro Assembler The Microsoft Macro Assembler (MASM) is an x86 assembler that uses the Intel syntax for MS-DOS and Microsoft Windows. Beginning with MASM 8.0, there are two versions of the assembler: One for 16-bit & 32-bit assembly sources, and another (ML64) fo ...
and other contemporaries rely on. Speed of assembly is a primary selling point. Isaacson claimed that A86 could assemble 100,000 lines of source per second on a
Pentium II The Pentium II brand refers to Intel's sixth-generation microarchitecture (" P6") and x86-compatible microprocessors introduced on May 7, 1997. Containing 7.5 million transistors (27.4 million in the case of the mobile Dixon with 256  KB ...
or better. A86 and D86 target
16-bit 16-bit microcomputers are microcomputers that use 16-bit microprocessors. A 16-bit register can store 216 different values. The range of integer values that can be stored in 16 bits depends on the integer representation used. With the two mos ...
x86 platforms. Isaacson added 32-bit support in the mid 1990s in the form of A386 and D386. These were not distributed as shareware, but were provided to users who registered A86. The A86 family of products was never ported to Microsoft Windows, but it is possible to use the object files created by A386 with a Windows linker. The assembler does not support 64-bit code.


A86-specific features

Any label consisting of one letter followed by one or more digits is local and can be redefined as needed, with each definition replacing the prior. The manual recommends using through for normal code and through in macros. Branches to local labels are assumed to be backward, but a forward branch can be specified by prefixing the label reference with the greater than symbol (e.g.,). Numbers starting with a zero are hexadecimal, such as , instead of using a custom prefix. A trailing "K" indicates
kibibytes The byte is a unit of digital information that most commonly consists of eight bits. Historically, the byte was the number of bits used to encode a single character of text in a computer and for this reason it is the smallest addressable unit ...
. is the same as 16*1024 or 16384. Multiple registers can be pushed or popped on the same source line. generates one instruction for each of the three operands. There's shorthand for conditionally executing a single instruction. outputs two instructions: a conditional branch followed by the move. If is specified as the label for a conditional branch, it automatically targets a return instruction within the 8-bit branch range (e.g., ). Macros use a different syntax than contemporaneous assemblers.


Code fingerprint

The assembler was designed to use particular instruction encodings which are functionally equivalent, but together create a fingerprint that's embedded in the executable file. This is mentioned in the legal terms section of the manual. The fingerprint makes it possible to tell if code was assembled with A86 and also to distinguish between registered and unregistered versions of the assembler. This analysis requires access to the source code.


References

{{DEFAULTSORT:A86 (software) Assemblers Debuggers DOS software Shareware Assembly language software