Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 A86-specific features  





2 Code fingerprint  





3 References  














A86 (software)






Deutsch
Español
 

Edit links
 









Article
Talk
 

















Read
Edit
View history
 








Tools
   


Actions  



Read
Edit
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Cite this page
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 
















Appearance
   

 






From Wikipedia, the free encyclopedia
 

(Redirected from D86 (debugger))

A86
Developer(s)Eric Isaacson
Stable release

4.05 / 14 January 2000

Operating systemMS-DOS
Platformx86
TypeAssembler
LicenseProprietary
Websiteeji.com/a86

A86 is an assembler for MS-DOS which generates code for the Intel x86 family of microprocessors. Written by Eric Isaacson, it was first made available as shareware in June 1986. The assembler is contained in one 32K executable and can directly produce a COM file or an object file for use with a standard linker. It comes with a debugger, D86.[1][2]

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 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 or better.[3]

A86 and D86 target 16-bit x86 platforms. Isaacson added 32-bit support in the mid 1990s in the form of A386 and D386.[1][2] 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.[4] The assembler does not support 64-bit code.

A86-specific features

[edit]

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 L1 through L9 for normal code and M1 through M9inmacros. 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.,>L2).

Numbers starting with a zero are hexadecimal, such as 00FF, instead of using a prefix such as "0x" or "$". A trailing "K" indicates kibibytes.[5] 16K is the same as 16*1024 or 16384.

Multiple registers can be pushed or popped on the same source line. push eax, edx, ebp generates one instruction for each of the three operands.

There's shorthand for conditionally executing a single instruction. if z mov ax,bx outputs two instructions: a conditional branch followed by the move.

Ifret is specified as the label for a conditional branch, it automatically targets a return instruction within the 8-bit branch range (e.g., jz ret).

Macros use a different syntax than contemporaneous assemblers.

Code fingerprint

[edit]

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.[6]

References

[edit]
  1. ^ a b Isaacson, Eric (2008). "A86/A386 assembler and D86/D386 debugger". Archived from the original on 2 July 2008. Retrieved 2008-07-02.
  • ^ a b Randall Hyde. "Which Assembler is the Best?". Archived from the original on 15 May 2008. Retrieved 2008-05-18.
  • ^ Isaacson, Eric (2006). "A86/A386 and D86/D386 features".
  • ^ Isaacson, Eric (2006). "A386 and Win32 Programming".
  • ^ Hague, James (July 20, 2008). "Kilobyte Constants, a Simple and Beautiful Idea that Hasn't Caught On". Programming in the 21st Century.
  • ^ El-Khalil, Rakan; Keromyti, Angelos D. (2004). "Hydan: Hiding Information in Program Binaries" (PDF). In Lopez, Javier; Qing, Sihan; Okamoto, Eiji (eds.). Information and communications security: 6th International Conference, ICICS 2004, Malaga, Spain, October 27–29, 2004 : Proceedings. Lecture Notes in Computer Science. Vol. 3269. Springer. p. 190. ISBN 3-540-23563-9.

  • Retrieved from "https://en.wikipedia.org/w/index.php?title=A86_(software)&oldid=1216631478"

    Categories: 
    Assemblers
    Debuggers
    DOS software
    Shareware
    Assembly language software
    Hidden categories: 
    Articles with short description
    Short description is different from Wikidata
     



    This page was last edited on 1 April 2024, at 04:20 (UTC).

    Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



    Privacy policy

    About Wikipedia

    Disclaimers

    Contact Wikipedia

    Code of Conduct

    Developers

    Statistics

    Cookie statement

    Mobile view



    Wikimedia Foundation
    Powered by MediaWiki