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

    £47.50

    Includes FREE delivery

    RRP £50.00 – you save £2.50 (5%)

    Order before 4pm today for delivery by Fri 19 Jun 2026.

    A Hardback by Jeff Duntemann

    1 in stock

      Trusted by thousands of customers. See 2,385+ Customer Reviews

      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

      © 2026 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