The purpose of this text is to provide a reference for University level assembly language and systems programming courses. Specifically, this text addresses the x86-64 instruction set for the popular x86-64 class of processors using the Ubuntu 64-bit Operating System (OS). While the provided code more » and various examples should work under any Linux-based 64-bit OS, they have only been tested under Ubuntu 14.04 LTS (64-bit).
The x86-64 is a Complex Instruction Set Computing (CISC) is a CPU design. This refers to the internal processor design philosophy. CISC processors typically include a wide variety of instructions (sometime overlapping), varying instructions sizes, and a wide range of addressing modes. The term was retroactively coined in contrast to Reduced Instruction Set Computer (RISC). « less
This book provides a hands-on approach to learning ARM assembly language with the use of a TI microcontroller. The book starts with an introduction to computer architecture and then discusses number systems and digital logic. The text covers ARM Assembly Language, ARM Cortex Architecture and its components, more » and Hardware Experiments using TILM3S1968. Written for those interested in learning embedded programming using an ARM Microcontroller. « less
Assembly Language for x86 Processors, 7e is intended for use in undergraduate courses in assembly language programming and introductory courses in computer systems and computer architecture. This title is also suitable for embedded systems programmers and engineers, communication specialists, game programmers, more » and graphics programmers. Proficiency in one other programming language, preferably Java, C, or C++, is recommended.
Written specifically for 32- and 64-bit Intel/Windows platform, this complete and fullyupdated study of assembly language teaches students to write and debug programs at the machine level. This text simplifies and demystifies concepts that students need to grasp before they can go on to more advanced computer architecture and operating systems courses. Students put theory into practice through writing software at the machine level, creating a memorable experience that gives them the confidence to work in any OS/machine-oriented environment. « less
32-bit, 64-bit, SSE, and AVX
Modern X86 Assembly Language Programming shows the fundamentals of x86 assembly language programming. It focuses on the aspects of the x86 instruction set that are most relevant to application software development. The book's structure and sample code are designed to help the reader quickly understand more » x86 assembly language programming and the computational capabilities of the x86 platform.
The primary audience for the book is Windows software developers since the sample code will be created using Visual C++ and Microsoft Macro Assembler. Developers targeting non- Windows platforms, however, also can learn from the book since most of the content will be organized and communicated independent of any specific operating system. In order to understand the book's subject material, a background that includes some programming experience using C or C++ will be helpful. Experience with or knowledge of a particular Windows API will not be a prerequisite to benefit from the book. « less
ARM designs the cores of microcontrollers which equip most “embedded systems” based on 32-bit processors. Cortex M3 is one of these designs, recently developed by ARM with microcontroller applications in mind. To conceive a particularly optimized piece of software (as is often the case in the world of more » embedded systems) it is often necessary to know how to program in an assembly language.
This book explains the basics of programming in an assembly language, while being based on the architecture of Cortex M3 in detail and developing many examples.
It is written for people who have never programmed in an assembly language and is thus didactic and progresses step by step by defining the concepts necessary to acquiring a good understanding of these techniques. « less
A Concise Introduction
This book will enable the reader to very quickly begin programming in assembly language. Through this hands-on programming, readers will also learn more about the computer architecture of the Intel 32-bit processor, as well as the relationship between high-level and low-level languages.
- more » presents an overview of assembly language, and an introduction to general purpose registers;
- illustrates the key concepts of each chapter with complete programs, chapter summaries, and exercises; covers input/output, basic arithmetic instructions, selection structures, and iteration structures;
- introduces logic, shift, arithmetic shift, rotate, and stack instructions;
- discusses procedures and macros, and examines arrays and strings;
- investigates machine language from a discovery perspective.
This textbook is an ideal introduction to programming in assembly language for undergraduate students, and a concise guide for professionals wishing to learn how to write logically correct programs in a minimal amount of time. « less
This book is an assembly language programming textbook introducing programmers to 64 bit Intel assembly language. The book is intended as a first assembly language book for programmers experienced in high level programming in a language like C or C++. The assembly programming is performed using the yasm more » assembler (much like the nasm assembler) under the Linux operating system. The book primarily teaches how to write assembly code compatible with C programs.
The reader will learn to call C functions from assembly language and to call assembly functions from C in addition to writing complete programs in assembly language. The gcc compiler is used for C programming. The book starts early emphasizing using the gdb debugger to debug programs. Being able to single-step assembly programs is critical in learning assembly programming. Highlights of the book include doing input/output programming using the Linux system calls and the C library, implementing data structures in assembly language and high performance assembly language programming.
A companion web site has a collection of PDF slides which instructors can use for in-class presentations and source code for sample programs. Early chapters of the book rely on using the debugger to observe program behavior. After a chapter on functions, the user is prepared to use printf and scanf from the C library to perform I/O. The chapter on data structures covers singly linked lists, doubly linked circular lists, hash tables and binary trees. Test programs are presented for all these data structures. There is a chapter on optimization techniques and 3 chapters on specific optimizations. One chapter covers how to efficiently count the 1 bits in an array with the most efficient version using the recently-introduced popcnt instruction.
Another chapter covers using SSE instructions to create an efficient implementation of the Sobel filtering algorithm. The final high performance programming chapter discusses computing correlation between data in 2 arrays. There is an AVX implementation which achieves 20.5 GFLOPs on a single core of a Core i7 CPU. « less
Written specifically for the Intel/Windows/DOS platform, this complete and fully updated study of assembly language teaches students to write and debug programs at the machine level. Based on the Intel processor family, the text simplifies and demystifies concepts that students need to grasp before they more » can go on to more advanced computer architecture and operating systems courses. Students put theory into practice through writing software at the machine level, creating a memorable experience that gives them the confidence to work in any OS/machine-oriented environment. Proficiency in one other programming language, preferably Java, C, or C++, is recommended. « less
Assembly is a low-level programming language that's one step above a computer's native machine language. Although assembly language is commonly used for writing device drivers, emulators, and video games, many programmers find its somewhat unfriendly syntax intimidating to learn and use.
Since 1996, more » Randall Hyde's The Art of Assembly Language has provided a comprehensive, plain-English, and patient introduction to 32-bit x86 assembly for non-assembly programmers. « less
Programming with Linux
The eagerly anticipated new edition of the bestselling introduction to x86 assembly language
The long-awaited third edition of this bestselling introduction to assembly language has been completely rewritten to focus on 32-bit protected-mode Linux and the free NASM assembler. Assembly is the fundamental more » language bridging human ideas and the pure silicon hearts of computers, and popular author Jeff Dunteman retains his distinctive lighthearted style as he presents a step-by-step approach to this difficult technical discipline.
He starts at the very beginning, explaining the basic ideas of programmable computing, the binary and hexadecimal number systems, the Intel x86 computer architecture, and the process of software development under Linux. From that foundation he systematically treats the x86 instruction set, memory addressing, procedures, macros, and interface to the C-language code libraries upon which Linux itself is built.
* Serves as an ideal introduction to x86 computing concepts, as demonstrated by the only language directly understood by the CPU itself
* Uses an approachable, conversational style that assumes no prior experience in programming of any kind
* Presents x86 architecture and assembly concepts through a cumulative tutorial approach that is ideal for self-paced instruction
* Focuses entirely on free, open-source software, including Ubuntu Linux, the NASM assembler, the Kate editor, and the Gdb/Insight debugger
* Includes an x86 instruction set reference for the most common machine instructions, specifically tailored for use by programming beginners
* Woven into the presentation are plenty of assembly code examples, plus practical tips on software design, coding, testing, and debugging, all using free, open-source software that may be downloaded without charge from the Internet. « less