From: raymoon@ms1.dgsys.com (Raymond Moon)
Newsgroups: alt.lang.asm,comp.lang.asm.x86,news.answers,alt.answers,comp.answers
Subject: x86 Assembly Language FAQ
Supersedes: <6rk75g$k83$1@news.dgsys.com>
Followup-To: alt.lang.asm,comp.lang.asm.x86
Date: 22 Sep 1998 21:44:32 GMT
Organization: MoonWare
Lines: 800
Approved: news-answers-request@MIT.EDU
Distribution: world
Expires: Tue, 20 Oct 1998 23:59:59 GMT
Message-ID: <6u95o0$ot7$1@news.dgsys.com>
Reply-To: raymoon@moonware.dgsys.com
Posting-Frequency: monthly (21st of every month)
Last-modified: 1998/8/20
------------------------------
Subject: 1. Introduction and Intent
This is the x86 Assembly Language FAQ for the comp.lang.asm.x86 and alt.lang.asm newsgroups. This FAQ is posted monthly on or about the 21st of the month on both newsgroups and news.answers, alt.answers and comp.answers. It also is archived at the normal FAQ archival sites and the SimTel mirror sites in the msdos/info directory. Lastly, the current version is available from my web page as: As text files: http://www2.dgsys.com/~raymoon/faq/asmfaq.zip As html documents: http://www2.dgsys.com/~raymoon/faq/asmfaqh.zip Currently, this FAQ is broken into six sections. The following are the section filenames and the scope of each section of the FAQ. assembly-language/x86/general/part1 - This is the basic portion of the FAQ that contains information of interest to all assembly language programmers. In general, the information contained in this portion of the FAQ is not specific to any particular assembler. assembly-language/x86/general/part2 - This is a continuation of the above FAQ. assembly-language/x86/general/part3 - This is a continuation of the above FAQ. assembly-language/x86/microsoft - This portion of the FAQ contains information specific for the Microsoft MASM. assembly-language/x86/borland - This portion of the FAQ contains information specific for the Borland TASM. assembly-language/x86/a86 - This portion of the FAQ contains information specific for the Shareware A86 Assembler and D86 Debugger. The scope and content of this FAQ is to go beyond just answering the frequently asked questions. I am including pointers to assembly language treasure troves that are hidden out on the Internet. I believe that this will enhance the FAQ's value not only to the novices but also to the old hands. For the ease of determining what has changed since the last FAQ, the Table of Contents will have "REVISED" at the end of the subject line for all revised subjects. If more than one FAQ revision has been missed, the "Last Changed:" entry at the end of each subject can be used to determine which subjects have been revised during the intervening time frame. The information in this FAQ is free for all to use as long as you acknowledge the source. This FAQ can be reproduced in part or in its entirety as long as the copyright is included. This FAQ can be made available on public servers, like ftp, gopher or WWW servers. Please do not modify the file, such as converting it into some other format, without prior permission of the author. All references to files and locations are in Uniform Resource Locators (URLs) format. Some web browser will be able to use these URLs directly as hot links. If the format is not clear to you, get RFC 1738. It is available from: ftp://ds.internic.net/rfc/rfc1738.txt Suggestions for changes and comments are always welcome. They can be posted to either newsgroup or e-mailed directly to the me. Author: Raymond Moon, raymoon@moonware.dgsys.com Copyright 1997 - Raymond Moon ALL RIGHTS RESERVED Last Changed: 6 Jan 97 Return to the Table Of Contents
[General][MASM][TASM][A86/D86]------------------------------
To the Table Of Contents------------------------------
Subject: 3. Charters For comp.lang.asm.x86 and alt.lang.asm Newsgroups
To know whether or not these newsgroups will meet your needs, the purpose for which they were created are given below. 3.1 COMP.LANG.ASM.X86 comp.lang.asm.x86 was created based upon voting on a Request for Discussion (RFD). The RFD for this newsgroup is: The moderated newsgroup comp.lang.asm.x86 will be open to discussions on all topics related to assembly language and low-level programming on any machine using an x86 processor or its clones. Appropriate topics would include, but not be limited to,: Assembly language code tips, tricks, and techniques. MASM, TASM, and other commercial assemblers NASM, and other non-commercial assemblers Graphics, sound, and other hardware programming Assembly language related utilities commercial/share/free-ware Linking assembly language with other languages Inline x86 programming utilizing assembly emulators in higher level languages Propagation of non-commercial Internet x86 resources Any question/discussion of the direct programming of the x86 Etc... Topics that will be filtered are: Flames about "{Language X} is {better/worse} than ASM" Flames like "{Assembler 1} is {better/worse} than {Assembler 2}" Flames, personal attacks, insults, etc. HLL code, except when used for low-level hardware programming. Product comparisons except when presented in an unbiased fashion. Advertisements unrelated to assembly programming or utilities. Posts in languages other than English will be examined for approval if any of the moderators can read the language in question. There is no guarantee of approval for a post in any language other than English. Posting to comp.lang.asm.x86, a moderated newsgroup, is not any different for you as posting to an unmoderated newsgroup. When you are finished composing your post just send it as you normally do. Your ISP's news server will send the post to the moderator's e-mail address. Once approved, the moderator will post it. Therefore, you will not see your postings immediately in the newsgroup. It should take no longer than a day or so to see it. 3.2 ALT.LANG.ASM Alt newsgroups are initiated with a Proposal posting to the alt.config newsgroup. The proposal for alt.lang.asm is: alt.lang.asm will address the problems of machine language programmers out there in Internet land. It will be a forum for discussion of coding techniques and efficiency problems related to machine language. The scope will be broad. We will not discriminate by machine architecture, race or sex. Contributors: Raymond Moon, raymoon@moonware.dgsys.com Last changed: 9 Dec 97 Return to the Table Of Contents------------------------------
Subject: 4. What Is Assembly Language
4.1 WHAT IS MACHINE LANGUAGE? Although programmers tend to use C or C++ or Pascal these days, the language closest to the PC hardware is machine language. Not one second during a PCS powered on lifetime passes where the computer is not executing machine language. 4.2 ASSEMBLY LANGUAGE OR MACHINE LANGUAGE To word this simply, you can say that say that assembly language is a human-readable text, and machine language is machine-readable binary code. When you program in assembly language, you are programming on the machine language level. To program directly in machine language is tedious, so you use assembly language instead, and use an assembler to produce the actual machine code. 4.3 WHEN TO USE ASSEMBLY LANGUAGE I personally think that except as a learning exercise it's a waste of time writing something in asm that can be written acceptably fast in a high-level language. Assembly language fits for the following: * Low level control. When you need to change the flags, or the control registers of the processor, as when entering protected mode. * Speed. Programs written in machine language execute fast! It can execute 10-100 times the speed of BASIC, and about twice as fast as a program written in C or Pascal. * Time Critical Code. Critical sections of programs written in higher level languages, can be written in assembly to speed up sections. * Small program size. When you write a TSR for example this is very useful. Writing interrupt handlers is where assembly language shines. Assembly language is very flexible and powerful, anything that the hardware of the computer is capable of doing can be done in assembly. Contributor: Patrik Ohman, patrik@astrakan.hgs.se Last changed: 10 Jan 95 Return to the Table Of Contents------------------------------
Subject: 5. List Of x86 OpCodes
5.1 x86 OPCODES The best source of OpCodes up to and including the Pentium Pro processor is in the Intel Architecture Software Developer's Manual, Volume 2: Instruction Set Reference Manual. It is available in .pdf format from Intel's Web Site: http://developer.intel.com/design/pro/MANUALS/243191.htm 5.2 MMX OPCODES Intel has a chapter covering these new OpCodes in the MMX Technology Programmer's Reference Manual. This chapter is Chapter Five - Intel Architecture MMX Instruction Set. http://developer.intel.com/drg/mmx/Manuals/prm/PRM_CHP5.HTM 5.3 OTHER SOURCES OF THESE DOCUMENTS These manuals are available on the Intel Developer's CD-ROM, see Subject #16. You also can find these manuals on Robert Collins' Web Site: http://www.x86.org/intel.doc/IntelDocs.html Contributor: Raymond Moon, raymoon@moonware.dgsys.com Last changed: 8 Mar 97 Return to the Table Of Contents------------------------------
Subject: 6. What Is HELPPC and Where Is It Available
HELPPC is a Quick Reference Utility for the intermediate to advanced programmer. It is a shareware program written by David Jurgens. The latest version is 2.10 The topics distributed in an easy database format are: BIOS interrupts; DOS interrupts and DOS functions; EMS and Mouse functions; BIOS and DOS data structures; diagnostic codes; DOS commands; 80x86 assembler instructions; standard and vendor specific C functions; and various hardware specifications. HELPPC is customizable by users. The documentation describes how users can incorporate their own information into the help file format. These user help files then can be incorporated into the database and accessed via HELPPC application. HELPPC comes in two versions. The first is a DOS command line program. The second is a TSR. The TSR supports context sensitive help within many editors. Only 32K is taken by the TSR version. HELPPC requires: DOS 2.0 or greater; 64K of RAM for DOS Command Line or 32K for TSR; and hard disk recommended. HELPPC is available specifically from: ftp://ftp.simtel.net/pub/simtelnet/msdos/info/helppc21.zip HELPPC also is available from any site that mirrors the SimTel directory. Contributor: Raymond Moon, raymoon@moonware.dgsys.com Last changed: 28 Dec 94 Return to the Table Of Contents