Free

Assembly

Assembly is the lowest-level programming language and is useful in reverse engineering and malware analysis. It can also be used for direct hardware manipulation or to address critical performance issues. This course requires a background in basic programming concepts and access to a Linux system. Learn Assembly online today!
13
15
M
Time
beginner
difficulty
14
ceu/cpe

Course Content

Tools for Code, Reverse Engineering

9m

C Constructs and Interrupts
Template and Setup

8m

Basic Assembly
Indirect Addressing and Variables Part 1

6m

Indirect Addressing, Stack, Arrays and Strings
ARM Intro

12m

ARM Architecture
Reverse Engineering Process

8m

C Constructs and Interrupts
Indirect Addressing and Variables Part 2

3m

Indirect Addressing, Stack, Arrays and Strings
ARM Template

6m

ARM Architecture
Setup Reverse Engineering Lab

8m

C Constructs and Interrupts
Slack Intro Part 1

7m

Indirect Addressing, Stack, Arrays and Strings
Structures and Unions

5m

C Constructs and Interrupts
Slack Intro Part 2

2m

Indirect Addressing, Stack, Arrays and Strings
Structure Layout

5m

C Constructs and Interrupts
Assembly Template

7m

Basic Assembly
Stack Usage

8m

Indirect Addressing, Stack, Arrays and Strings
Shift Example

7m

ARM Architecture
Simple Function Example

11m

Indirect Addressing, Stack, Arrays and Strings
Structures, Unions and Malloc

10m

C Constructs and Interrupts
Course Description

Prerequisites

This Assembly language course requires a background in basic programming concepts. Students should have access to a Linux system or setup a Linux virtual machine.

Course Goals

By the end of the course, students should be able to:

  • Write Assembly Programs (x86, ARM)
  • Read Assembly Programs
  • Understand Different Data Representations (Binary Hex, 2's Complement)
  • Understand how Functions, Stack and Data Storage Work
  • Programmers who understand and can code with assembly programming have the ability to manipulate a computer’s hardware directly, and can do so with great speed compared to that of high-level languages such as Java or Python.

    People who learn assembly online (also known as ASM) will understand the machine code specific to the machine they’re working on. While high-level languages, such as Python and Java, have gained popularity in recent years among the programming community, assembly language programs are more efficient and operate at a quicker pace.

    What is assembly language?

    Assembly language is a low-level programming language for a computer or programming device. A low-level programming language means the instructions are basic and the computer can easily recognize what it is being told to do. Using assembler, assembly language can be converted into machine language, which is the lowest language.

    Why should programmers learn assembly language programming?

    ASM allows programmers to write a language that is easier for people to read than machine language, which is usually a series of numbers. Assembly language also helps a programmer manipulate the computer with maximum control.

    Assembly language helps optimize the speed of the computer and creates a program that runs quicker than high-level language programs can. Learning assembly programming enables programmers to tell the computer not to just do something, but how to execute the command.

    Assembly language can also be useful in reverse engineering and malware analysis. While assembly language can’t be the only language a programmer knows, it is helpful while debugging.

    Is it still relevant to learn assembly online today?

    In 2020, it is not as common for an entire application to be written in assembly. But understanding and writing some of an application in assembly enables the programmer to give additional functionality. Instead of just telling the computer to do something, assembly allows programmers to tell them how to do it with specific instructions.

    Many programmers prefer high-level languages because they are more portable in a world where cloud-based applications are becoming more and more prevalent. But there are still many benefits to understanding assembly for more traditional programs and more complex applications.

    How do you start assembly language programming?

    Students can learn assembly online by taking this course. Cybrary’s online course allows them to learn at their own pace, making it convenient and easy to add assembly language as a skill in one’s repertoire. To start Cybrary’s Introduction to Assembly Programming course, students need a background in basic programming concepts. Students should also have access to a Linux system.

    Students can complete Cybrary’s assembly language course at their own pace, either taking all the modules consecutively to quickly earn the certification or over the course of a few weeks when they have spare time. At the end of the course, students will be able to write and read assembly programs, understand different data representations, such as Binary, hex, and 2’s compliment. Students will also be able to understand Functions, Stack and Data Storage.

    Students could also learn assembly languaging through books or online blogs, but taking an online course like Cybrary provides interactive modules to help master the language.

    Programmers who receive an assembly certification can increase their ability to address critical computer performance issues, as well as, give the processor specific instructions.

    How do programmers use assembly language?

    Programmers use assembly language when they are trying to directly manipulate computer hardware. Assembly allows programmers to create better algorithms than they can create exclusively using C, which is a high-level language. But the best reason and motivation for using assembly remains speed.

    Assembly language can be used in the system’s boot code, general blocks of data, and in reverse engineering.

    Is assembly programming hard?

    Assembly programming is seen as “bare” and “transparent." There are only a small number of operations, which makes it easier for a programmer to debug it and makes for easier algorithm analysis. While assembly programming is specific to each processor, generally once a student has learned assembly they can transfer this knowledge from one CPU to another.

    Commands used in assembly are simple, such as MOV (move), ADD (add), and SUB (subtract). When taking an online assembly programming course, students will learn these commands and how to execute them.

    This course is part of a Career Path:
    Incident Handler Collection

    This collection focuses on the incident response process – from building an incident response kit and developing an incident response team, to identifying, containing, and recovering from incidents. We cover the traditional “defensive-only” approach, then introduce you to the attacker’s world.

    Instructed by

    Instructor
    Matthew Miller

    I completed a bachelors degree in computer science at the University of Nebraska at Kearney. I received my Masters and Ph.D. at Kansas State University. I have taught Computer Science, assembly and reverse engineering for 7 years at the collegiate level. I have been called as an expert witness on more than a dozen Federal Cases, where he reverse engineered the NIT code provided by the government. My expert declarations have been used by the ACLU in their "Challenging government hacking in criminal cases" guide for attorneys. Lawyers call me in to explain, analyze and help them understand the meaning of digital evidence.

    After I received my Ph.D. I moved to Madison SD to teach at Dakota State University. There I decided to specialize in Reverse Engineering. This is where I learned how to program in Assembly. I enjoyed the challenge end thrill of programming at the lowest level. At DSU I built up the assembly programming class to meet the standards required for Reverse Engineering. After attending many different Cybrary courses, I decided that I could give back to the community by providing a course that provides a great base for Reverse Engineers.

    I enjoy programming in assembly language. The creation of binary programs that can be used in as challenges in capture the flags is very interesting challenge. One of the fun parts of this is trying to hide the true execution of the programmer. For many platforms, I create a variety of different challenge levels. Some easy challenges for first time reverses and then increased difficulty for the more advance crowd. Examples of hiding the true execution include, using return-oriented programming (ROP), string obfuscation and encryption. Each platform requires some knowledge of the architecture and how mnemonics and memory make for fun learning cyber security skills.

    I am married and have 3 kids. They enjoy soccer, baseball, reading and even some Python programming. My wife lets me collect Legos (technic and Star Wars) and build wooden projects out of recycled barn boards. I also enjoy coaching, gardening, teaching and programming as well. Languages that I enjoy programming in include Java, Python, Bash, C, C++ and of course Assembly.

    Provider
    Cybrary Logo
    Certification Body
    Certificate of Completion

    Complete this entire course to earn a Assembly Certificate of Completion