《ASSEMBLY LANGUAGE FOR THE IBM-PC SECOND EDITION》求取 ⇩

1 Introduction1

1.1 Introducing Assembly Language1

Assembly Language Applications3

Machine Language3

1.2 Data Representation4

Binary Numbers4

Converting Binary to Decimal7

Hexadecimal Numbers7

Signed Numbers8

Character Storage9

1.3 Assembly Language: An Introduction10

Assembly Language Instructions10

A Sample Program11

DEBUG Commands13

The PAGE.COM Program14

1.4 Basic Elements of Assembly Language15

Constant15

Statement17

Name18

1.5 Sample HELLO Program19

1.6 Review Questions20

2 Hardware and Software Architecture22

2.1 Components of a Microcomputer22

Video Display22

Keyboard23

Disk Drives23

System Unit23

Intel Microprocessor Family25

2.2 System Architecture26

Central Processing Unit (CPU)26

Registers28

Flags31

Stack32

Instruction Execution Cycle35

2.3 System Software and Memory35

Memory Architecture35

DOS Initialization36

Video Display37

Read-Only Memory (ROM)38

Address Calculation38

Memory Addressing Using Registers39

2.4 Review Questions39

2.5 Programming Exercises41

3 Assembly Language Fundamentals46

3.1 Data Definition Directives46

Define Byte (DB)47

Define Word (DW)49

Define Doubleword (DD)51

DUP Operator51

3.2 Data Transfer Instructions52

MOV Instruction52

Offsets53

XCHG Instruction55

Stack Operations55

3.3 Arithmetic Instructions56

INC and DEC Instructions57

ADD Instruction57

SUB Instruction58

Flags Affected by ADD and SUB58

3.4 Addressing Modes60

Register Operand61

Immediate Operand61

Direct Operand61

Indirect Operand62

Based and Indexed Operands63

Base-Indexed Operand64

Base-Indexed with Displacement64

Summing a List of Numbers65

3.5 Program Structure66

Memory Models67

3.6 Review Questions69

3.7 Programming Exercises73

4 The Macro Assembler76

4.1 The Assembly Process76

A Sample Program77

Assemble the Program78

Link and Run the Program79

4.2 Related Files80

Listing File80

Map File81

Batch Files82

4.3 Equates83

The Equal-Sign Directive83

EQU Directive84

4.4 Operators and Expressions85

Arithmetic Operators85

Boolean Operators86

OFFSET, PTR, and LABEL86

Operands with Displacements88

Other Assembler Operators89

4.5 Transfer-of-Control Instructions91

JMP Instruction91

LOOP Instruction93

4.6 Using the 80386 Processor95

4.7 Debugging Workshop96

Operand Sizes and Addressing Errors97

4.8 Review Questions98

4.9 Programming Exercises103

5 Input-Output Services106

5.1 Procedures107

PROC and ENDP Directives107

Sample Program: SUBS.ASM107

Near and Far Procedures108

5.2 Software Interrupts111

INT Instruction113

Device Names115

5.3 DOS Function Calls116

01h: Console Input With Echo117

02h: Character Output117

05h: Printer Output117

06h: Direct Console Input-Output118

07h: Direct Console Input119

08h: Console Input Without Echo119

09h: String Output119

OAh: Buffered Console Input119

OBh: Get Console Input Status121

OCh: Clear Input Buffer, Invoke Input Function121

BIOS-Level Keyboard Input (INT 16h)121

ASCII Control Characters123

5.4 BIOS-Level Video Control (INT 10h)123

Displays, Modes, and Attributes124

127h: Set Video Mode127

01h: Set Cursor Lines128

02h: Set Cursor Position129

03h: Get Cursor Position130

05h: Set Video Page130

06h, 07h: Scroll Window Up or Down131

08h: Read Character and Attribute132

09h: Write Character and Attribute133

0Ah: Write Character133

0Fh: Get Video Mode133

11h: Load Default ROM Fonts134

5.5 Review Questions134

5.6 Programming Exercises137

6 Conditional Processing141

6.1 Boolean and Comparison Instructions141

The Flags Register141

AND Instruction142

OR Instruction144

XOR Instruction145

NOT Instruction146

NEG Instruction146

TEST Instruction147

CMP Instruction147

6.2 Conditional Jumps148

Conditional Jump Instruction149

Applications Using Conditional Jumps151

6.3 Conditional Loops157

LOOPZ (LOOPE) Instruction157

LOOPNZ (LOOPNE) Instruction158

6.4 High-Level Logic Structures159

IF Statement160

WHILE Structure161

REPEAT ... UNTIL Structure163

CASE Structure164

Offset Table165

6.5 Review Questions166

6.6 Programming Exercises169

7 Arithmetic172

7.1 Shift and Rotate Instructions173

SHL Instruction173

SHR Instruction175

SAL and SAR Instructions176

ROL Instruction176

ROR Instruction177

RCL and RCR Instructions178

7.2 Sample Applications179

Shifting Multiple Bytes179

Multiplication and Division180

Display a Number in ASCII Binary181

Isolate a Bit String182

7.3 Multiple Addition and Subtraction183

ADC Instruction183

SBB Instruction185

7.4 Signed Arithmetic186

7.5 Multiplication and Division187

MUL and IMUL Instructions187

DIV and IDIV Instructions189

Divide Overflow190

7.6 ASCII Arithmetic191

AAA Instruction193

AAS Instruction195

AAM Instruction196

AAD Instruction197

7.7 Packed Decimal Arithmetic197

DAA Instruction198

DAS Instruction198

BCD Addition Example198

7.8 Review Questions201

7.9 Programming Exercises204

8 Numeric Conversions and Libraries208

8.1 Character Translation Using XLAT209

The XLAT Instruction209

Character Filtering210

Character Encoding210

8.2 Binary to ASCII Conversion213

The WRITEINT Procedure214

8.3 ASCII to Binary Conversion218

The READINT Procedure218

8.4 Separately Assembled Modules222

EXTRN Directive223

PUBLIC Directive224

Calling DISPLAYSTR from Another Module224

8.5 Creating External Subroutines226

Individual Subroutine Descriptions227

A Test Program236

More About the Linker237

8.6 Stack Parameters238

Recursion239

8.7 Review Questions242

8.8 Programmming Exercises244

9 String Processing251

9.1 String Storage Methods252

9.2 String Primitive Instructions253

MOVS (Move String)256

CMPS (Compare Strings)258

SCAS (Scan String)260

STOS (Store in String)262

LODS (Load String)263

9.3 A Library of String Routines263

READSTRING Procedure264

STRCHR Procedure265

STRCOMP Procedure266

STRCOPY Procedure267

STRDEL Procedure268

STRLEN Procedure269

STRSTR Procedure270

STRUPR Procedure271

WRITESTRING Procedure272

9.4 Creating a Link Library272

9.5 Application: String Library Demo Program275

9.6 Review Questions278

9.7 Programming Exercises280

10 Macros and Structures285

10.1 Introduction285

Declaring and Calling Macros287

Passing Parameters288

Nested Macros290

LOCAL Directive291

10.2 Special Techniques292

Macros Calling Procedures292

Conditional-Assembly Directives293

EXITM Directive295

10.3 Macro Operators297

10.4 A Macro Library299

10.5 Advanced MACRO Usage303

Defining Repeat Blocks303

Additional Tips307

10.6 Advanced Operators and Directives313

Type Operators313

STRUC Directive314

RECORD Directive316

10.7 Review Questions320

10.8 Programming Exercises323

11 Disk Storage327

11.1 Disk Storage Fundamentals328

Physical and Logical Chacteristics328

Types of Disks329

Disk Formats330

Disk Directory331

Directory Format332

Sample Disk Directory334

File Allocation Table (FAT)335

Reading and Writing Disk Sectors336

11.2 Application: Sector Display Program337

11.3 Application: Cluster Display Program340

11.4 System-Level File Functions345

DOS Error Codes345

Displaying DOS Error Messages346

DOS Error Me sage Handler347

File Specifications350

11.5 Reading the DOS Command Tail350

11.6 Drive and Directory Manipulation352

Set Default Disk Drive (0Eh)353

Get Default Disk Drive (19h)353

Get Disk Free Space (36h)353

Get Current Directory Path (47h)354

Set Current Directory (3Bh)354

Create Subdirectory (39h)355

Remove Subdirectory (3Ah)355

Get Device Parameters (44h)355

11.7 File Manipulation357

Get/Set File Attribute (43h)357

1993《ASSEMBLY LANGUAGE FOR THE IBM-PC SECOND EDITION》由于是年代较久的资料都绝版了,几乎不可能购买到实物。如果大家为了学习确实需要,可向博主求助其电子版PDF文件(由 1993 PRENTICE HALL 出版的版本) 。对合法合规的求助,我会当即受理并将下载地址发送给你。