Description

Book Synopsis

The long-awaited x64 edition of the bestselling introduction to Intel assembly language

In the newly revised fourth edition of x64 Assembly Language Step-by-Step: Programming with Linux, author Jeff Duntemann delivers an extensively rewritten introduction to assembly language with a strong focus on 64-bit long-mode Linux assembler. The book offers a lighthearted, robust, and accessible approach to a challenging technical discipline, giving you a step-by-step path to learning assembly code that's engaging and easy to read.

x64 Assembly Language Step-by-Step makes quick work of programmable computing basics, the concepts of binary and hexadecimal number systems, the Intel x86/x64 computer architecture, and the process of Linux software development to dive deep into the x64 instruction set, memory addressing, procedures, macros, and interface to the C-language code libraries on which Linux is built.

You'll also find:

  • A set of free and open-source

    Table of Contents

    Introduction xxix

    Chapter 1 It’s All in the Plan 1

    Another Pleasant Valley Saturday 1

    Had This Been the Real Thing 5

    Assembly Language Programming As a Square Dance 5

    Assembly Language Programming As a Board Game 6

    Chapter 2 Alien Bases 11

    The Return of the New Math Monster 11

    Octal: How the Grinch Stole Eight and Nine 16

    Hexadecimal: Solving the Digit Shortage 20

    From Hex to Decimal and from Decimal to Hex 24

    Practice. Practice! PRACTICE! 27

    Arithmetic in Hex 28

    Binary 34

    Hexadecimal as Shorthand for Binary 38

    Prepare to Compute 40

    Chapter 3 Lifting the Hood 41

    RAXie, We Hardly Knew Ye 41

    Switches, Transistors, and Memory 43

    The Shop Supervisor and the Assembly Line 54

    The Box That Follows a Plan 58

    What vs. How: Architecture and Microarchitecture 63

    Enter the Plant Manager 67

    Chapter 4 Location, Location, Location 73

    The Joy of Memory Models 73

    The Nature of Segments 80

    Segment Registers 87

    The Four Major Assembly Programming Models 95

    64-Bit Long Mode 101

    Chapter 5 The Right to Assemble 103

    The Nine and Sixty Ways to Code 103

    Files and What’s Inside Them 104

    Text In, Code Out 115

    The Assembly Language Development Process 123

    Linking the Object Code File 130

    Taking a Trip Down Assembly Lane 134

    Chapter 6 A Place to Stand, with Access to Tools 143

    Integrated Development Environments 143

    Introducing SASM 146

    Linux and Terminals 153

    Using Linux Make 164

    Debugging with SASM 172

    Chapter 7 Following Your Instructions 175

    Build Yourself a Sandbox 176

    Instructions and Their Operands 178

    Source and Destination Operands 178

    Rally Round the Flags, Boys! 186

    Signed and Unsigned Values 195

    Implicit Operands and MUL 200

    Reading and Using an Assembly Language Reference 205

    NEG Negate (Two’s Complement; i.e., Multiply by −1) 208

    Chapter 8 Our Object All Sublime 213

    The Bones of an Assembly Language Program 213

    Last In, First Out via the Stack 223

    Using Linux Kernel Services Through Syscall 231

    Designing a Nontrivial Program 235

    Going Further 248

    Chapter 9 Bits, Flags, Branches, and Tables 251

    Bits Is Bits (and Bytes Is Bits) 251

    Shifting Bits 258

    Bit-Bashing in Action 262

    Flags, Tests, and Branches 270

    X64 Long Mode Memory Addressing in Detail 279

    Character Table Translation 290

    Tables Instead of Calculations 298

    Chapter 10 Dividing and Conquering 299

    Boxes within Boxes 300

    Calling and Returning 309

    Local Labels and the Lengths of Jumps 325

    Building External Procedure Libraries 330

    The Art of Crafting Procedures 352

    Simple Cursor Control in the Linux Console 356

    Creating and Using Macros 364

    Chapter 11 Strings and Things 377

    The Notion of an Assembly Language String 378

    REP STOSB, the Software Machine Gun 387

    The Semiautomatic Weapon: STOSB Without REP 392

    MOVSB: Fast Block Copies 397

    Storing Data to Discontinuous Strings 402

    Command-Line Arguments, String Searches, and the Linux Stack 408

    The Stack, Its Structure, and How to Use It 414

    Chapter 12 Heading Out to C 423

    What’s GNU? 424

    Linking to the Standard C Library 429

    Formatted Text Output with printf() 438

    Data In with fgets() and scanf() 442

    Be a Linux Time Lord 448

    Understanding AT&T Instruction Mnemonics 456

    Generating Random Numbers 460

    How C Sees Command-Line Arguments 472

    Simple File I/O 474

    Conclusion: Not the End, But Only the Beginning 489

    Appendix A The Return of the Insight Debugger 493

    Insight’s Shortcomings 494

    Opening a Program Under Insight 495

    Setting Command-Line Arguments with Insight 496

    Running and Stepping a Program 496

    The Memory Window 497

    Showing the Stack in Insight’s Memory View 498

    Examining the Stack with Insight’s Memory View 498

    Learn gdb! 500

    Appendix B Partial x64 Instruction Reference 501

    What’s Been Removed from x64 502

    Flag Results 502

    Size Specifiers 503

    Instruction Index 505

    ADC: Arithmetic Addition with Carry 507

    ADD: Arithmetic Addition 509

    AND: Logical AND 511

    BT: Bit Test 513

    CALL: Call Procedure 515

    CLC: Clear Carry Flag (CF) 517

    CLD: Clear Direction Flag (DF) 518

    CMP: Arithmetic Comparison 519

    DEC: Decrement Operand 521

    DIV: Unsigned Integer Division 522

    INC: Increment Operand 524

    J??: Jump If Condition Is Met 525

    JECXZ: Jump if ECX=0 527

    JRCXZ: Jump If RCX=0 528

    JMP: Unconditional Jump 529

    LEA: Load Effective Address 531

    LOOP: Loop Until CX/ECX/RCX=0 532

    LOOPNZ/LOOPNE: Loop Until CX/ECX/RCX=0 and ZF=0 534

    LOOPZ/LOOPE: Loop Until CX/ECX/RCX=0 and ZF=1 535

    MOV: Copy Right Operand into Left Operand 536

    MOVS: Move String 538

    MOVSX: Copy with Sign Extension 540

    MUL: Unsigned Integer Multiplication 542

    NEG: Negate (Two’s Complement; i.e., Multiply by −1) 544

    NOP: No Operation 546

    NOT: Logical NOT (One’s Complement) 547

    OR: Logical OR 548

    POP: Copy Top of Stack into Operand 550

    POPF/D/Q: Copy Top of Stack into Flags Register 552

    PUSH: Push Operand onto Top of Stack 553

    PUSHF/D/Q: Push Flags Onto the Stack 555

    RET: Return from Procedure 556

    ROL/ROR: Rotate Left/Rotate Right 558

    SBB: Arithmetic Subtraction with Borrow 560

    SHL/SHR: Shift Left/Shift Right 562

    STC: Set Carry Flag (CF) 564

    STD: Set Direction Flag (DF) 565

    STOS/B/W/D/Q: Store String 566

    SUB: Arithmetic Subtraction 568

    SYSCALL: Fast System Call into Linux 570

    XCHG: Exchange Operands 571

    XLAT: Translate Byte Via Table 572

    XOR: Exclusive OR 573

    Appendix C Character Set Charts 575

    Index 579

x64 Assembly Language StepbyStep

Product form

£45.00

Includes FREE delivery

RRP £50.00 – you save £5.00 (10%)

Order before 4pm tomorrow for delivery by Sat 27 Dec 2025.

A Hardback by Jeff Duntemann

15 in stock


    View other formats and editions of x64 Assembly Language StepbyStep by Jeff Duntemann

    Publisher: John Wiley & Sons Inc
    Publication Date: 23/10/2023
    ISBN13: 9781394155248, 978-1394155248
    ISBN10: 1394155247

    Description

    Book Synopsis

    The long-awaited x64 edition of the bestselling introduction to Intel assembly language

    In the newly revised fourth edition of x64 Assembly Language Step-by-Step: Programming with Linux, author Jeff Duntemann delivers an extensively rewritten introduction to assembly language with a strong focus on 64-bit long-mode Linux assembler. The book offers a lighthearted, robust, and accessible approach to a challenging technical discipline, giving you a step-by-step path to learning assembly code that's engaging and easy to read.

    x64 Assembly Language Step-by-Step makes quick work of programmable computing basics, the concepts of binary and hexadecimal number systems, the Intel x86/x64 computer architecture, and the process of Linux software development to dive deep into the x64 instruction set, memory addressing, procedures, macros, and interface to the C-language code libraries on which Linux is built.

    You'll also find:

    • A set of free and open-source

      Table of Contents

      Introduction xxix

      Chapter 1 It’s All in the Plan 1

      Another Pleasant Valley Saturday 1

      Had This Been the Real Thing 5

      Assembly Language Programming As a Square Dance 5

      Assembly Language Programming As a Board Game 6

      Chapter 2 Alien Bases 11

      The Return of the New Math Monster 11

      Octal: How the Grinch Stole Eight and Nine 16

      Hexadecimal: Solving the Digit Shortage 20

      From Hex to Decimal and from Decimal to Hex 24

      Practice. Practice! PRACTICE! 27

      Arithmetic in Hex 28

      Binary 34

      Hexadecimal as Shorthand for Binary 38

      Prepare to Compute 40

      Chapter 3 Lifting the Hood 41

      RAXie, We Hardly Knew Ye 41

      Switches, Transistors, and Memory 43

      The Shop Supervisor and the Assembly Line 54

      The Box That Follows a Plan 58

      What vs. How: Architecture and Microarchitecture 63

      Enter the Plant Manager 67

      Chapter 4 Location, Location, Location 73

      The Joy of Memory Models 73

      The Nature of Segments 80

      Segment Registers 87

      The Four Major Assembly Programming Models 95

      64-Bit Long Mode 101

      Chapter 5 The Right to Assemble 103

      The Nine and Sixty Ways to Code 103

      Files and What’s Inside Them 104

      Text In, Code Out 115

      The Assembly Language Development Process 123

      Linking the Object Code File 130

      Taking a Trip Down Assembly Lane 134

      Chapter 6 A Place to Stand, with Access to Tools 143

      Integrated Development Environments 143

      Introducing SASM 146

      Linux and Terminals 153

      Using Linux Make 164

      Debugging with SASM 172

      Chapter 7 Following Your Instructions 175

      Build Yourself a Sandbox 176

      Instructions and Their Operands 178

      Source and Destination Operands 178

      Rally Round the Flags, Boys! 186

      Signed and Unsigned Values 195

      Implicit Operands and MUL 200

      Reading and Using an Assembly Language Reference 205

      NEG Negate (Two’s Complement; i.e., Multiply by −1) 208

      Chapter 8 Our Object All Sublime 213

      The Bones of an Assembly Language Program 213

      Last In, First Out via the Stack 223

      Using Linux Kernel Services Through Syscall 231

      Designing a Nontrivial Program 235

      Going Further 248

      Chapter 9 Bits, Flags, Branches, and Tables 251

      Bits Is Bits (and Bytes Is Bits) 251

      Shifting Bits 258

      Bit-Bashing in Action 262

      Flags, Tests, and Branches 270

      X64 Long Mode Memory Addressing in Detail 279

      Character Table Translation 290

      Tables Instead of Calculations 298

      Chapter 10 Dividing and Conquering 299

      Boxes within Boxes 300

      Calling and Returning 309

      Local Labels and the Lengths of Jumps 325

      Building External Procedure Libraries 330

      The Art of Crafting Procedures 352

      Simple Cursor Control in the Linux Console 356

      Creating and Using Macros 364

      Chapter 11 Strings and Things 377

      The Notion of an Assembly Language String 378

      REP STOSB, the Software Machine Gun 387

      The Semiautomatic Weapon: STOSB Without REP 392

      MOVSB: Fast Block Copies 397

      Storing Data to Discontinuous Strings 402

      Command-Line Arguments, String Searches, and the Linux Stack 408

      The Stack, Its Structure, and How to Use It 414

      Chapter 12 Heading Out to C 423

      What’s GNU? 424

      Linking to the Standard C Library 429

      Formatted Text Output with printf() 438

      Data In with fgets() and scanf() 442

      Be a Linux Time Lord 448

      Understanding AT&T Instruction Mnemonics 456

      Generating Random Numbers 460

      How C Sees Command-Line Arguments 472

      Simple File I/O 474

      Conclusion: Not the End, But Only the Beginning 489

      Appendix A The Return of the Insight Debugger 493

      Insight’s Shortcomings 494

      Opening a Program Under Insight 495

      Setting Command-Line Arguments with Insight 496

      Running and Stepping a Program 496

      The Memory Window 497

      Showing the Stack in Insight’s Memory View 498

      Examining the Stack with Insight’s Memory View 498

      Learn gdb! 500

      Appendix B Partial x64 Instruction Reference 501

      What’s Been Removed from x64 502

      Flag Results 502

      Size Specifiers 503

      Instruction Index 505

      ADC: Arithmetic Addition with Carry 507

      ADD: Arithmetic Addition 509

      AND: Logical AND 511

      BT: Bit Test 513

      CALL: Call Procedure 515

      CLC: Clear Carry Flag (CF) 517

      CLD: Clear Direction Flag (DF) 518

      CMP: Arithmetic Comparison 519

      DEC: Decrement Operand 521

      DIV: Unsigned Integer Division 522

      INC: Increment Operand 524

      J??: Jump If Condition Is Met 525

      JECXZ: Jump if ECX=0 527

      JRCXZ: Jump If RCX=0 528

      JMP: Unconditional Jump 529

      LEA: Load Effective Address 531

      LOOP: Loop Until CX/ECX/RCX=0 532

      LOOPNZ/LOOPNE: Loop Until CX/ECX/RCX=0 and ZF=0 534

      LOOPZ/LOOPE: Loop Until CX/ECX/RCX=0 and ZF=1 535

      MOV: Copy Right Operand into Left Operand 536

      MOVS: Move String 538

      MOVSX: Copy with Sign Extension 540

      MUL: Unsigned Integer Multiplication 542

      NEG: Negate (Two’s Complement; i.e., Multiply by −1) 544

      NOP: No Operation 546

      NOT: Logical NOT (One’s Complement) 547

      OR: Logical OR 548

      POP: Copy Top of Stack into Operand 550

      POPF/D/Q: Copy Top of Stack into Flags Register 552

      PUSH: Push Operand onto Top of Stack 553

      PUSHF/D/Q: Push Flags Onto the Stack 555

      RET: Return from Procedure 556

      ROL/ROR: Rotate Left/Rotate Right 558

      SBB: Arithmetic Subtraction with Borrow 560

      SHL/SHR: Shift Left/Shift Right 562

      STC: Set Carry Flag (CF) 564

      STD: Set Direction Flag (DF) 565

      STOS/B/W/D/Q: Store String 566

      SUB: Arithmetic Subtraction 568

      SYSCALL: Fast System Call into Linux 570

      XCHG: Exchange Operands 571

      XLAT: Translate Byte Via Table 572

      XOR: Exclusive OR 573

      Appendix C Character Set Charts 575

      Index 579

    Recently viewed products

    © 2025 Book Curl

      • American Express
      • Apple Pay
      • Diners Club
      • Discover
      • Google Pay
      • Maestro
      • Mastercard
      • PayPal
      • Shop Pay
      • Union Pay
      • Visa

      Login

      Forgot your password?

      Don't have an account yet?
      Create account