We may earn an affiliate commission when you visit our partners.
Course image
Israel Gbati

Welcome to the x86 Assembly Programming From Ground Up™ course.

Covering x86 Processor History , Architecture and Practical Assembly Programming, this is the most comprehensive x86 assembly course online.

I'll take you step-by-step through engaging and fun video tutorials and teach you everything you need to know to succeed as an x86 developer.

Read more

Welcome to the x86 Assembly Programming From Ground Up™ course.

Covering x86 Processor History , Architecture and Practical Assembly Programming, this is the most comprehensive x86 assembly course online.

I'll take you step-by-step through engaging and fun video tutorials and teach you everything you need to know to succeed as an x86 developer.

By the end of this course you will master the x86 Core Instruction Set, the x86 MMX Extension Instruction Set, the x86 Streaming SIMD Extension (SSE) Instruction Set and the x86 Advanced Vector Extension (AVX ) Instruction Set. You will be able to develop complex Image Processing Algorithms in x86 Assembly. You will be able to develop complex mathematical algorithms in x86 assembly .You will also be able to write robust programs that mix C++ and x86 Assembly files.

Furthermore, you will master every day things like navigating arrays, computing the statistical properties of an array such as computing the mean and standard deviation of each row and column. All of this written in assembly language. There is so much more. Please take a look at the full course curriculum.

REMEMBER : I have no doubt you will love this course. Also it comes with a FULL money back guarantee for 30 days. So put simply, you really have nothing to loose and everything to gain.

Sign up and lets start writing some low level code.

Enroll now

Here's a deal for you

We found an offer that may be relevant to this course.
Save money when you learn. All coupon codes, vouchers, and discounts are applied automatically unless otherwise noted.

What's inside

Learning objectives

  • Master the x86 core instruction set
  • Understand the coding differences between x86-32 and x86 -64
  • Master the x86 mmx extension instruction set
  • Master the x86 streaming simd extension (sse) instruction set
  • Master the x86 advanced vector extension (avx ) instruction set
  • Develop complex image processing algorithms in x86 assembly
  • Develop complex mahtematical algorithms in x86 assembly
  • Be able to understand and apply the ieee- 754 floating point standard
  • Be able to create lookup tables and jump tables in x86 assembly
  • Be able to write robust mixed c/c++ and x86 assembly code
  • Master the masm assembler syntax
  • Show more
  • Show less

Syllabus

Introduction
Getting Started
Setting Up the Development Environment
Coding : Simple Assembly program
Read more
Installing a Syntax Highlighter
x86 Processors & Computer Architectures
Evolution of Intel Processors
Harvard Architecture vs Von Neumann Architecture
The Computing Device
Logic Gates
From Transistors to Operating Systems
Number Systems
The Programmer's Model
Overview of x86 Data Types
Basic x86 Microcomputer Design
x86 Operating Modes
Overview of the x86 Registers
Coding : One Register to Rule Them All
Overview of the x86 Flags
Overview of the Floating Point Unit
Overview of x86 Memory Models
Introduction to x86 Assembly Language
Notice
Overview of x86 Integers
Introduction to Directives and Instructions
Simple x86 Assembly Template
Coding : Declaring Variables in Assembly
Dealing with Data
Endianness
Coding : Mixing C/C++ and Assembly
Data Transfer Instructions
Operand Types
Overview of the MOV Instruction
Understanding Direct - Offset Operands
Memory Addressing Modes
Arithmetic Instructions
The Increment and Decrement Instructions
The Addition and Subtraction Instructions
Data Operators and Directives
Coding : Summing Array Elements
Coding : Scanning an Array
Coding : Using Pointers and Typedef
Conditional Branching
The Jump and Loop Instructions
Logic Instructions
Condition Jump Instructions
Instruction Operands
The Nature of Mixing C/C++ and Assembly
Coding : Computing the Sum of an Array
Coding : Computing Signed Multiplication and Division
Coding : Understanding C/C++ Calling Conventions
Coding : Experimenting with different Addressing Modes
Coding : Declaring Global Variables in C/C++ and using them in Assembly
Coding : Experimenting with Conditional Codes
Working with Arrays
Coding : Iterating through Array Elements
Coding : Array Elements Square
Coding : Working with 2-Dimensional Arrays
Coding : Computing the Sum of Rows and Columns of a 2-Dimensional Array
Working with Strings
Coding : Copying Strings from one Variable to another
Coding :Creating a Character Search Algorithm
Programming with the Floating -Point Unit (FPU) Registers
Overview of the x86 FPU
Overview of the FPU Instruction Set
Case Study - Temperature Conversion
Coding : Writing a temperature conversion program using the FPU
Coding : Developing the Sphere Computation Algorithm
Coding : Processing Floating-Point Arrays with FPU Instructions
Coding : Computing Min and Max of Single-Precision Floating Point Arrays
Coding : Developing Algorithms with x86 FPU Transcendental Instructions
Coding : Developing the Least Squares Algorithm
Programming with the x86 MMX Extensions
Introduction to MMX
Overview of the MMX Instruction Set
Coding : SIMD Arithmetic with Packed Data using MMX Registers (Part I)
Coding : SIMD Arithmetic with Packed Data using MMX Registers (Part II)
Coding : Shift Operations with Packed Data using MMX Registers
Coding : Understanding MMX Multiplication
Programming with the x86 SSE Extentsions
Introduction to SSE
Overview of the SSE Instruction Set
Coding : Understanding SSE Floating-Point Arithmetic
Coding : Developing the Sphere Algorithm using SSE Instructions
Coding : SSE Packed Integer Arithmetic
Programming with the x86 Advanced Vector (AVX) Extensions
History of AVX
The AVX Execution Environment
Coding : Understanding AVX Floating Point Arithmetic
Coding : Understanding AVX Packed Integer Arithmetic
Closing
Closing Remarks

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Teaches x86 assembly language, which is standard in industry
Taught by Israel Gbati, who is recognized for their work in x86 assembly
Multi-modal and includes a mix of videos, readings, and discussions
Offers hands-on labs and interactive materials
Develops professional skills or deep expertise in x86 assembly
Advises students to take other courses first as prerequisites

Save this course

Save x86 Assembly Language Programming From Ground Up™ to your list so you can find it easily later:
Save

Reviews summary

Helpful assembly language primer

According to students, x86 Assembly Language Programming From Ground Up™ is a beginner-friendly course that teaches the basics of assembly programming. Learners appreciate that the course is well-structured and appreciate the coding sessions. However, some students wish the class made more use of visual aids and found that the materials were more clearly explained in the textbook.
This course is a good starting point for learners completely new to assembly programming.
"Good course for complete beginners, learned enough to get started and dig deeper now."
"coding sessions were helpful for fully understanding concepts."
"The course was well-structured and allowed me to progress at my own pace."
The course could benefit from using more visual aids such as charts to explain concepts.
"Would have preferred if the instructor used more visual aids such as charts, etc to illustrate what is going on with the stack, memory, regs, etc especially during the coding sessions."
The textbook does a better job of explaining some concepts compared to the course materials.
"If you look at the book the instructor based the course on, that author explains things in a much clearer manner."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in x86 Assembly Language Programming From Ground Up™ with these activities:
Review x86 Processor History and Architecture
Ensure a strong foundation by reviewing the history and architecture of the x86 processor, which is essential for understanding assembly programming.
Browse courses on Computer Architecture
Show steps
  • Read documentation or online resources about x86 processor history and architecture.
  • Summarize the key concepts in your own words.
Computer Systems: A Programmer's Perspective
Expand your understanding of the underlying principles of computer systems by reviewing a classic text that provides a comprehensive overview of the field.
Show steps
  • Read selected chapters relevant to x86 Assembly Programming.
x86 Core Instruction Set Exercises
Build a solid understanding of the x86 Core Instruction Set by completing a series of exercises that challenge your knowledge.
Show steps
  • Review the x86 Core Instruction Set documentation.
  • Practice writing assembly code using the x86 Core Instruction Set.
  • Test your understanding by solving x86 Core Instruction Set exercises.
Four other activities
Expand to see all activities and additional details
Show all seven activities
x86 Assembly Programming Study Group
Collaborate with fellow learners by forming a study group to discuss concepts, solve problems, and support each other's understanding.
Browse courses on Assembly Language
Show steps
  • Organize a group of peers with similar interests in x86 Assembly Programming.
  • Establish regular meeting times and locations.
  • Prepare topics for discussion and work together to understand complex concepts.
x86 Assembly Programming Workshop
Enhance your practical skills by attending a workshop led by experienced professionals who can provide guidance and hands-on support.
Browse courses on Assembly Language
Show steps
  • Find and register for an x86 Assembly Programming workshop.
  • Actively participate in the workshop, asking questions and completing exercises.
  • Network with other participants to exchange knowledge and learn from their experiences.
x86 Assembly Programming Project
Apply your knowledge and skills by developing a substantial project that demonstrates your proficiency in x86 Assembly Programming.
Browse courses on Assembly Language
Show steps
  • Identify a project idea that aligns with your interests and skill level.
  • Plan and design your project, considering its scope, requirements, and implementation details.
  • Implement your project using x86 Assembly Programming.
  • Test and evaluate your project to ensure it meets the desired outcomes.
  • Document your project and share it with others, showcasing your accomplishments.
x86 Assembly Programming Guide
Solidify your understanding of x86 Assembly Programming by creating a comprehensive guide that covers the core concepts and best practices.
Browse courses on Assembly Language
Show steps
  • Organize your knowledge of x86 Assembly Programming.
  • Write clear and concise explanations of each topic.
  • Provide real-world examples to illustrate the application of x86 Assembly Programming.
  • Share your guide with others to contribute to the community's knowledge.

Career center

Learners who complete x86 Assembly Language Programming From Ground Up™ will develop knowledge and skills that may be useful to these careers:
Software Engineer
As a Software Engineer, you will design, develop, test, and deploy software applications. With a strong foundation in x86 assembly language, you will be able to create efficient and optimized code. This course will equip you with the skills necessary to excel in this role.
Assembly Language Programmer
Assembly Language Programmers specialize in writing code directly in assembly language, giving them complete control over the hardware. With your expertise in x86 assembly language, you will be highly sought-after in fields such as embedded systems and operating system development.
Computer Programmer
Computer Programmers are responsible for writing and maintaining the code that powers computers and software applications. With your mastery of x86 assembly language, you will be able to create high-performance programs that meet the demands of modern computing.
Compiler Engineer
Compiler Engineers design and develop compilers, which translate high-level programming languages into machine code. With your expertise in x86 assembly language, you will have a deep understanding of the compilation process and will be able to create efficient and optimized compilers.
Firmware Engineer
Firmware Engineers design and develop the firmware that controls embedded systems. With your proficiency in x86 assembly language, you will be able to create efficient and reliable firmware that meets the strict requirements of embedded systems.
Embedded Systems Engineer
Embedded Systems Engineers design and develop embedded systems, which are small computers that are embedded into other devices. With your proficiency in x86 assembly language, you will be able to create efficient and reliable embedded systems that meet the specific requirements of the device.
Game Programmer
Game Programmers design and develop video games. With your expertise in x86 assembly language, you will be able to create highly optimized game code that delivers superior performance and graphics.
Systems Programmer
Systems Programmers are responsible for developing and maintaining the operating systems and other core software that run computers. Your knowledge of x86 assembly language will give you a deep understanding of the underlying hardware and operating system, enabling you to create highly optimized and efficient systems.
Data Scientist
Data Scientists analyze and interpret data to extract meaningful insights. Your knowledge of x86 assembly language will give you a strong foundation in computer architecture and optimization, enabling you to develop efficient data processing algorithms.
Computer Architect
Computer Architects design and develop the hardware architecture of computers. Your understanding of x86 assembly language will give you a strong foundation in computer architecture and will enable you to create innovative and efficient hardware designs.
High-Performance Computing Engineer
High-Performance Computing Engineers design and develop high-performance computing systems. Your expertise in x86 assembly language will give you a deep understanding of the hardware and software that power high-performance computing, enabling you to create more efficient and powerful systems.
Robotics Engineer
Robotics Engineers design and develop robots. Your knowledge of x86 assembly language will give you a deep understanding of the hardware and software that control robots, enabling you to create more efficient and intelligent robots.
Machine Learning Engineer
Machine Learning Engineers design and develop machine learning algorithms. Your understanding of x86 assembly language will give you a deep understanding of the hardware and software that power machine learning, enabling you to create more efficient and accurate algorithms.
Information Security Analyst
Information Security Analysts protect computer systems and networks from unauthorized access and cyberattacks. Your understanding of x86 assembly language will give you a deep understanding of the security vulnerabilities of computer systems, enabling you to develop effective security measures.
Quantitative Analyst
Quantitative Analysts use mathematical and statistical models to analyze financial data. Your knowledge of x86 assembly language will give you a strong foundation in computer architecture and optimization, enabling you to develop efficient financial models.

Reading list

We've selected 14 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in x86 Assembly Language Programming From Ground Up™.
A useful text that covers the x86 assembly language using the Linux operating system as context. This text is useful in providing supplemental information on x86 assembly language.
Provides a good overview of the basics of programming and x86 Assembly. A good supplementary read to the course.
Provides a comprehensive overview of x86 assembly language and its relationship with C programming, making it a valuable resource for students starting out with assembly.
This interactive textbook offers a clear and engaging introduction to operating systems concepts, providing context for understanding how x86 assembly language interacts with the underlying system.
This modern text provides a solid introduction to the field and is highly readable.
Provides an in-depth look at computer systems from a programmer's perspective.
Save
Another classic text in computer science, this book can provide additional background on assembly language.

Share

Help others find this course page by sharing it with your friends and followers:
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser