📄 content.htm
字号:
<HTML><!-- Generated by Harlequin WebMaker 2.2.6 (30-Apr-1996)Macintosh Common Lisp Version 3.0kp2p2 [AppGen 3.0b1kp2p2] --><HEAD> <TITLE>The Art of Assembly Language Programming</TITLE></HEAD><BODY><CENTER><FONT SIZE="3">You are visitor <FONT COLOR="RED"><!--#exec cmd="../../../cgi-bin/Counter/counter.cgi Pasm_ArtAsm" --> </FONT COLOR>as of October 17, 1996.</CENTER></FONT SIZE><!-- TOC --><HR><H2>The Art of Assembly Language Programming<BR><BR><HR></H2><H3><A HREF="fwd/fwd.html">Forward Why Would Anyone Learn This Stuff? </A></H3><A HREF="fwd/fwd.html#61">1 What's Wrong With Assembly Language </A><BR><A HREF="fwd/fwd.html#78">2 What's Right With Assembly Language? </A><BR><A HREF="fwd/fwd.html#109">3 Organization of This Text and Pedagogical Concerns</A><BR><A HREF="fwd/fwd.html#115">4 Obtaining Program Source Listings and OtherMaterials in This Text </A><BR><BR><A NAME="HEADING1-8"></A><HR><H2>Section One: Machine Organization</H2><A NAME="HEADING1-9"></A><HR><DL><DT><A HREF="CH01/CH01-1.html">Art of Assembly Language: ChapterOne</A> <DT><A HREF="CH01/CH01-1.html#HEADING1-30"><B>Chapter One </B>- Data Representation</A><DT><A HREF="CH01/CH01-1.html#HEADING1-32"><B>1.0 </B>- Chapter Overview</A><DT><A HREF="CH01/CH01-1.html#HEADING1-34"><B>1.1 </B>- Numbering Systems</A><DT><A HREF="CH01/CH01-1.html#HEADING1-36"><B>1.1.1 </B>- A Review of theDecimal System</A> <DT><A HREF="CH01/CH01-1.html#HEADING1-46"><B>1.1.2 </B>- The Binary NumberingSystem</A> <DT><A HREF="CH01/CH01-1.html#HEADING1-69"><B>1.1.3 </B>- Binary Formats</A><DT><A HREF="CH01/CH01-1.html#HEADING1-86"><B>1.2 </B>- Data Organization</A><DT><A HREF="CH01/CH01-1.html#HEADING1-88"><B>1.2.1 </B>- Bits</A> <DT><A HREF="CH01/CH01-1.html#HEADING1-93"><B>1.2.2 </B>- Nibbles</A> <DT><A HREF="CH01/CH01-1.html#HEADING1-95"><B>1.2.3 </B>- Bytes</A> <DT><A HREF="CH01/CH01-1.html#HEADING1-107"><B>1.2.4 </B>- Words</A> <DT><A HREF="CH01/CH01-1.html#HEADING1-121"><B>1.2.5 </B>- Double Words</A><DT><A HREF="CH01/CH01-2.html#HEADING2-1"><B>1.3 </B>- The Hexadecimal NumberingSystem</A> <DT><A HREF="CH01/CH01-2.html#HEADING2-26"><B>1.4 </B>- Arithmetic Operationson Binary and Hexadecimal Numbers</A> <DT><A HREF="CH01/CH01-2.html#HEADING2-49"><B>1.5 </B>- Logical Operationson Bits</A> <DT><A HREF="CH01/CH01-2.html#HEADING2-86"><B>1.6 </B>- Logical Operationson Binary Numbers and Bit Strings</A> <DT><A HREF="CH01/CH01-2.html#HEADING2-96"><B>1.7 </B>- Signed and UnsignedNumbers</A> <DT><A HREF="CH01/CH01-2.html#HEADING2-151"><B>1.8 </B>- Sign and Zero Extension</A><DT><A HREF="CH01/CH01-3.html#HEADING3-1"><B>1.9 </B>- Shifts and Rotates</A><DT><A HREF="CH01/CH01-3.html#HEADING3-24"><B>1.10 </B>- Bit Fields andPacked Data</A> <DT><A HREF="CH01/CH01-3.html#HEADING3-34"><B>1.11 </B>- The ASCII CharacterSet</A> </DL>1.12 Summary <BR>1.13 Laboratory Exercises <BR>1.13.1 Installing the Software <BR>1.13.2 Data Conversion Exercises <BR>1.13.3 Logical Operations Exercises <BR>1.13.4 Sign and Zero Extension Exercises <BR>1.13.5 Packed Data Exercises <BR>1.14 Questions <BR>1.15 Programming Projects <BR><BR><A NAME="HEADING1-40"></A><HR><DL><DT><A HREF="CH02/CH02-1.html"><B>Chapter Two </B>- Boolean Algebra</A><DT><A HREF="CH02/CH02-1.html#HEADING1-3"><B>2.0 </B>- Chapter Overview</A><DT><A HREF="CH02/CH02-1.html#HEADING1-8"><B>2.1 </B>- Boolean Algebra</A><DT><A HREF="CH02/CH02-1.html#HEADING1-55"><B>2.2 </B>- Boolean Functionsand Truth Tables</A> <DT><A HREF="CH02/CH02-1.html#HEADING1-77"><B>2.3 </B>- Algebraic Manipulationof Boolean Expressions</A> <DT><A HREF="CH02/CH02-1.html#HEADING1-102"><B>2.4 </B>- Canonical Forms</A><DT><A HREF="CH02/CH02-2.html#HEADING2-1"><B>2.5 </B>- Simplification ofBoolean Functions</A> <DT><A HREF="CH02/CH02-3.html#HEADING3-1"><B>2.6 </B>- What Does This HaveTo Do With Computers, Anyway?</A> <DT><A HREF="CH02/CH02-3.html#HEADING3-3"><B>2.6.1 </B>- CorrespondenceBetween Electronic Circuits and Boolean Functions</A> <DT><A HREF="CH02/CH02-3.html#HEADING3-27"><B>2.6.2 </B>- CombinatorialCircuits</A> <DT><A HREF="CH02/CH02-3.html#HEADING3-56"><B>2.6.3 </B>- Sequential andClocked Logic</A> <DT><A HREF="CH02/CH02-3.html#HEADING3-81"><B>2.7 </B>- Okay, What DoesIt Have To Do With Programming, Then?</A> <DT><A HREF="CH02/CH02-3.html#HEADING3-98"><B>2.8 </B>- Generic BooleanFunctions</A> </DL>2.9 Laboratory Exercises <BR>2.9.1 Truth Tables and Logic Equations Exercises <BR>2.9.2 Canonical Logic Equations Exercises <BR>2.9.3 Optimization Exercises <BR>2.9.4 Logic Evaluation Exercises <BR>2.10 Programming Projects <BR>2.11 Summary <BR>2.12 Questions <BR><BR><A NAME="HEADING1-62"></A><HR><DL><DT><A HREF="CH03/CH03-1.html"><B>Chapter Three </B>- SystemOrganization</A> <DT><A HREF="CH03/CH03-1.html#HEADING1-2"><B>3.0 </B>- Chapter Overview</A><DT><A HREF="CH03/CH03-1.html#HEADING1-7"><B>3.1 </B>- The Basic SystemComponents</A> <DT><A HREF="CH03/CH03-1.html#HEADING1-12"><B>3.1.1 </B>- The System Bus</A><DT><A HREF="CH03/CH03-1.html#HEADING1-15"><B>3.1.1.1 </B>- The Data Bus</A><DT><A HREF="CH03/CH03-1.html#HEADING1-21"><B>3.1.1.2 </B>- The AddressBus</A> <DT><A HREF="CH03/CH03-1.html#HEADING1-25"><B>3.1.1.3 </B>- The ControlBus</A> <DT><A HREF="CH03/CH03-1.html#HEADING1-31"><B>3.1.2 </B>- The Memory Subsystem</A><DT><A HREF="CH03/CH03-1.html#HEADING1-76"><B>3.1.3 </B>- The I/O Subsystem</A><DT><A HREF="CH03/CH03-2.html#HEADING2-1"><B>3.2 </B>- System Timing</A><DT><A HREF="CH03/CH03-2.html#HEADING2-9"><B>3.2.1 </B>- The System Clock</A><DT><A HREF="CH03/CH03-2.html#HEADING2-17"><B>3.2.2 </B>- Memory Accessand the System Clock</A> <DT><A HREF="CH03/CH03-2.html#HEADING2-30"><B>3.2.3 </B>- Wait States</A><DT><A HREF="CH03/CH03-2.html#HEADING2-45"><B>3.2.4 </B>- Cache Memory</A><DT><A HREF="CH03/CH03-3.html#HEADING3-1"><B>3.3 </B>- The 886, 8286, 8486,and 8686 "Hypothetical" Processors</A> <DT><A HREF="CH03/CH03-3.html#HEADING3-4"><B>3.3.1 </B>- CPU Registers</A><DT><A HREF="CH03/CH03-3.html#HEADING3-14"><B>3.3.2 </B>- The Arithmetic& Logical Unit</A> <DT><A HREF="CH03/CH03-3.html#HEADING3-20"><B>3.3.3 </B>- The Bus InterfaceUnit</A> <DT><A HREF="CH03/CH03-3.html#HEADING3-22"><B>3.3.4 </B>- The Control Unitand Instruction Sets</A> <DT><A HREF="CH03/CH03-3.html#HEADING3-37"><B>3.3.5 </B>- The x86 InstructionSet</A> <DT><A HREF="CH03/CH03-3.html#HEADING3-68"><B>3.3.6 </B>- Addressing Modeson the x86</A> <DT><A HREF="CH03/CH03-3.html#HEADING3-102"><B>3.3.7 </B>- Encoding x86Instructions</A> <DT><A HREF="CH03/CH03-3.html#HEADING3-125"><B>3.3.8 </B>- Step-by-StepInstruction Execution</A> <DT><A HREF="CH03/CH03-3.html#HEADING3-192"><B>3.3.9 </B>- The DifferencesBetween the x86 Processors</A> <DT><A HREF="CH03/CH03-4.html#HEADING4-1"><B>3.3.10 </B>- The 886 Processor</A><DT><A HREF="CH03/CH03-4.html#HEADING4-5"><B>3.3.11 </B>- The 8286 Processor</A><DT><A HREF="CH03/CH03-5.html#HEADING5-1"><B>3.3.12 </B>- The 8486 Processor</A><DT><A HREF="CH03/CH03-5.html#HEADING5-4"><B>3.3.12.1 </B>- The 8486 Pipeline</A><DT><A HREF="CH03/CH03-5.html#HEADING5-23"><B>3.3.12.2 </B>- Stalls in aPipeline</A> <DT><A HREF="CH03/CH03-5.html#HEADING5-36"><B>3.3.12.3 </B>- Cache, thePrefetch Queue, and the 8486</A> <DT><A HREF="CH03/CH03-5.html#HEADING5-70"><B>3.3.12.4 </B>- Hazards onthe 8486</A> <DT><A HREF="CH03/CH03-5.html#HEADING5-95"><B>3.3.13 </B>- The 8686 Processor</A><DT><A HREF="CH03/CH03-6.html#HEADING6-1"><B>3.4 </B>- I/O (Input/Output)</A><DT><A HREF="CH03/CH03-6.html#HEADING6-15"><B>3.5 </B>- Interrupts and PolledI/O</A> </DL><BR>3.6 Laboratory Exercises <BR>3.6.1 The SIMx86 Program - Some Simple x86 Programs <BR>3.6.2 Simple I/O-Mapped Input/Output Operations <BR>3.6.3 Memory Mapped I/O <BR>3.6.4 DMA Exercises <BR>3.6.5 Interrupt Driven I/O Exercises <BR>3.6.6 Machine Language Programming & Instruction Encoding Exercises<BR>3.6.7 Self Modifying Code Exercises <BR>3.7 Programming Projects <BR>3.8 Summary <BR>3.9 Questions <BR><BR><A NAME="HEADING1-108"></A><HR><DL><DT><A HREF="CH04/CH04-1.html"><B>Chapter Four </B>- Memory Layoutand Access</A> <DT><A HREF="CH04/CH04-1.html#HEADING1-2"><B>4.0 </B>- Chapter Overview</A><DT><A HREF="CH04/CH04-1.html#HEADING1-8"><B>4.1 </B>- The 80x86 CPUs:AProgrammer's View</A> <DT><A HREF="CH04/CH04-1.html#HEADING1-12"><B>4.1.1 </B>- 8086 General PurposeRegisters</A> <DT><A HREF="CH04/CH04-1.html#HEADING1-23"><B>4.1.2 </B>- 8086 Segment Registers</A><DT><A HREF="CH04/CH04-1.html#HEADING1-31"><B>4.1.3 </B>- 8086 Special PurposeRegisters</A> <DT><A HREF="CH04/CH04-1.html#HEADING1-37"><B>4.1.4 </B>- 80286 Registers</A><DT><A HREF="CH04/CH04-1.html#HEADING1-42"><B>4.1.5 </B>- 80386/80486 Registers</A><DT><A HREF="CH04/CH04-1.html#HEADING1-52"><B>4.2 </B>- 80x86 Physical MemoryOrganization</A> <DT><A HREF="CH04/CH04-1.html#HEADING1-64"><B>4.3 </B>- Segments on the80x86</A> <DT><A HREF="CH04/CH04-1.html#HEADING1-91"><B>4.4 </B>- Normalized Addresseson the 80x86</A> <DT><A HREF="CH04/CH04-1.html#HEADING1-102"><B>4.5 </B>- Segment Registerson the 80x86</A> <DT><A HREF="CH04/CH04-2.html#HEADING2-1"><B>4.6 </B>- The 80x86 AddressingModes</A> <DT><A HREF="CH04/CH04-2.html#HEADING2-4"><B>4.6.1 </B>- 8086 Register AddressingModes</A> <DT><A HREF="CH04/CH04-2.html#HEADING2-23"><B>4.6.2 </B>- 8086 Memory AddressingModes</A> <DT><A HREF="CH04/CH04-2.html#HEADING2-26"><B>4.6.2.1 </B>- The DisplacementOnly Addressing Mode</A> <DT><A HREF="CH04/CH04-2.html#HEADING2-35"><B>4.6.2.2 </B>- The RegisterIndirect Addressing Modes</A> <DT><A HREF="CH04/CH04-2.html#HEADING2-54"><B>4.6.2.3 </B>- Indexed AddressingModes</A> <DT><A HREF="CH04/CH04-2.html#HEADING2-73"><B>4.6.2.4 </B>- Based IndexedAddressing Modes</A> <DT><A HREF="CH04/CH04-2.html#HEADING2-91"><B>4.6.2.5 </B>- Based IndexedPlus Displacement Addressing Mode</A> <DT><A HREF="CH04/CH04-2.html#HEADING2-105"><B>4.6.2.6 </B>- MASM Syntaxfor 8086 Memory Addressing Modes</A> <DT><A HREF="CH04/CH04-2.html#HEADING2-114"><B>4.6.2.7 </B>- An Easy Wayto Remember the 8086 Memory Addressing Modes</A> <DT><A HREF="CH04/CH04-2.html#HEADING2-125"><B>4.6.2.8 </B>- Some FinalComments About 8086 Addressing Modes</A> <DT><A HREF="CH04/CH04-3.html#HEADING3-1"><B>4.6.3 </B>- 80386 RegisterAddressing Modes</A> <DT><A HREF="CH04/CH04-3.html#HEADING3-3"><B>4.6.4 </B>- 80386 Memory AddressingModes</A> <DT><A HREF="CH04/CH04-3.html#HEADING3-5"><B>4.6.4.1 </B>- Register IndirectAddressing Modes</A> <DT><A HREF="CH04/CH04-3.html#HEADING3-16"><B>4.6.4.2 </B>- 80386 Indexed,Base/Indexed, and Base/Indexed/Disp Addressing Modes</A> <DT><A HREF="CH04/CH04-3.html#HEADING3-49"><B>4.6.4.3 </B>- 80386 ScaledIndexed Addressing Modes</A> <DT><A HREF="CH04/CH04-3.html#HEADING3-69"><B>4.6.4.4 </B>- Some Final NotesAbout the 80386 Memory Addressing Modes</A> <DT><A HREF="CH04/CH04-3.html#HEADING3-79"><B>4.7 </B>- The 80x86 MOV Instruction</A><DT><A HREF="CH04/CH04-3.html#HEADING3-113"><B>4.8 </B>- Some Final Commentson the MOV Instructions</A> </DL>4.9 Laboratory Exercises <BR>4.9.1 The UCR Standard Library for 80x86 Assembly Language Programmers <BR>4.9.2 Editing Your Source Files <BR>4.9.3 The SHELL.ASM File <BR>4.9.4 Assembling Your Code with MASM <BR>4.9.5 Debuggers and CodeView<EM>'</EM> <BR>4.9.5.1 A Quick Look at CodeView <BR>4.9.5.2 The Source Window <BR>4.9.5.3 The Memory Window <BR>4.9.5.4 The Register Window <BR>4.9.5.5 The Command Window <BR>4.9.5.6 The Output Menu Item <BR>4.9.5.7 The CodeView Command Window <BR>4.9.5.7.1 The Radix Command (N) <BR>4.9.5.7.2 The Assemble Command <BR>4.9.5.7.3 The Compare Memory Command <BR>4.9.5.7.4 The Dump Memory Command <BR>4.9.5.7.5 The Enter Command <BR>4.9.5.7.6 The Fill Memory Command <BR>4.9.5.7.7 The Move Memory Command <BR>4.9.5.7.8 The Input Command <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -