Assembly Programming For All Platforms, Learn To Code
4.1 (72 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
14,487 students enrolled

Assembly Programming For All Platforms, Learn To Code

Assembly is the foundation for all applications, mobile to desktop. It is used in Raspberry Pi, Arm, Intel and much more
4.1 (72 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
14,487 students enrolled
Created by Frahaan Hussain
Last updated 5/2019
English [Auto]
Current price: $139.99 Original price: $199.99 Discount: 30% off
5 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 2 hours on-demand video
  • 7 articles
  • Full lifetime access
  • Access on mobile and TV
  • Assignments
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • Assembly Design & Development
  • Assembly Programming
  • Low Level Coding
  • Raspberry Pi Programming
  • x86 Programming
  • 64 bit Programming
  • Application Programming
  • Cross Platform Development
  • Semantics of General Programming
  • The Format of Coding Applications
  • All The Features of Assembly
Course content
Expand all 53 lectures 02:07:51
+ Introduction
4 lectures 08:49

Introduction to this Assembly course

Preview 02:01

Lets setup our project to code assembly.

Preview 01:46

Let's take a look at the structure and syntax of a basic Assembly application

Example File Code Structure

Learn how to comment your code


Let's start with a simple quiz

Quiz 1 - Introduction
2 questions
+ Registers
7 lectures 18:45

Memory segmentation is the division of a computer's primary memory into segments or sections. In a computer system using segmentation, a reference to a memory location includes a value that identifies a segment and an offset (memory location) within that segment.

Memory Segments

A processor register (CPU register) is one of a small set of data holding places that are part of the computer processor. A register may hold an instruction, a storage address, or any kind of data (such as a bit sequence or individual characters). Some instructions specify registers as part of the instruction.

Preview 03:39

A memory buffer register (MBR), commonly referred to as a memory data register (MDR) is the register in a computer's processor, or central processing unit, CPU, that stores the data being transferred to and from the immediate access storage. It contains the copy of designated memory locations specified by the memory address register. It acts as a buffer allowing the processor and memory units to act independently without being affected by minor differences in operation. A data item will be copied to the MBR ready for use at the next clock cycle, when it can be either used by the processor for reading or writing or stored in main memory after being written.

Data Registers

In computer processor architecture, a pointer register is a register that is used to store a memory address. You may be able to use it for other purposes too, but generally, there are instructions that interpret it as a memory address, and fetch the data located at that address.

Preview 02:03

An index register in a computer's CPU is a processor register used for modifying operand addresses during the run of a program, typically for doing vector/array operations. The contents of an index register is added to an immediate address to form the "effective" address of the actual data.

Index Registers

A control register is a processor register which changes or controls the general behaviour of a CPU or other digital device. Common tasks performed by control registers include interrupt control, switching the addressing mode, paging control, and coprocessor control.

Control Registers

Segment Registers. Segments are specific areas defined in a program for containing data, code and stack. There are three main segments − CodeSegment − It contains all the instructions to be executed. A 16-bit Code Segment register or CS register stores the starting address of the code segment.

Segment Registers

Time to test your knowledge of registers

Quiz 2 - Registers
5 questions
+ Address Modes
6 lectures 14:04

Register Addressing. In this addressing mode, a register contains the operand. Depending upon the instruction, the register may be the first operand, the second operand or both. As processing data between registers does not involve memory, it provides fastest processing of data.

Register Addressing

Immediate Addressing. An immediate operand has a constant value or an expression. When an instruction with two operands uses immediate addressing, the first operand may be a register or memory location, and the second operand is an immediate constant.

Immediate Addressing Mode

Direct Addressing Mode. Direct addressing mode means that the value for a given instruction in assembly programming is pointed to by a given value. This means the value is variable, based on what is stored in memory at a given address.

Preview 01:53

Register direct addressing is the simplest addressing mode in which the source or destination of an operand is a data register or an address register. ... In immediate addressing the actual operand forms part of the instruction.

Direct-Offset Addressing Mode

Indirect Addressing. Indirect addressing is a scheme in which the address specifies which memory word or register contains not the operand but the address of the operand.

Indirect Memory Addressing Mode

MOV instruction is a copy instruction. MOV copies the source operand to the destination operand without affecting the source.

Preview 01:47

Time to test your knowledge of address modes in the Assembly programming language

Quiz 3 - Address Modes
5 questions
+ Variables
4 lectures 11:32

Learn about allocating storage space for initialised data

Allocating Storage Space for Initialised Data

Learn about allocating storage space for uninitialised data

Preview 02:25

Learn how to create multiple variables in your Assembly application

Multiple Variable Definitions

Declaring multiple variables in a single declaration can cause confusion regarding the types of the variables and their initial values. If more than one variable is declared in a declaration, care must be taken that the type and initialised value of the variable are handled correctly.

Preview 03:22

Time to test your knowledge on variables in Assembly

Quiz 4 - Variables
3 questions
+ Constants
3 lectures 07:28

The EQU directive gives a symbolic name to a numeric constant, a register-relative value or a PC-relative value.

EQU Command

Numeric constants are 32-bit integers. You can set them using unsigned numbers in the range 0 to 2^32-1, or signed numbers in the range -2^31 to 2^31 -1. However, the assembler makes no distinction between -n and 2^32-n.

Preview 02:24

In programming, a constant is a value that never changes. The other type of values that programs use is variables, symbols that can represent different values throughout the course of a program. A constant can be. a number, like 25 or 3.6. a character, like a or $

Preview 02:26

Time to test your knowledge on constants

Quiz 5 - Constants
3 questions
+ Arithmetic Instructions
6 lectures 14:35

Increment and decrement operators are unary operators that add or subtract one, to or from their operand, respectively. They are commonly implemented in imperative programming languages. C-like languages feature two versions (pre- and post-) of each operator with slightly different semantics.

Preview 02:07

Increment and decrement operators are unary operators that add or subtract one, to or from their operand, respectively. They are commonly implemented in imperative programming languages. C-like languages feature two versions (pre- and post-) of each operator with slightly different semantics.

Decrement Command (DEC)

The ADD instruction adds a source operand to a destination operand.

Addition Command (ADD)

The SUB instruction subtracts a source operand from a destination operand.

Preview 02:12

A mathematical operation performed on a pair of numbers in order to derive a third number called a product. For positive integers, multiplication consists of adding a number (the multiplicand) to itself a specified number of times. Thus multiplying 6 by 3 means adding 6 to itself three times.

Multiply Command (MUL/IMUL)

Division is splitting into equal parts or groups. It is the result of "fair sharing". Example: there are 12 chocolates, and 3 friends want to share them, how do they divide the chocolates? Answer: They should get 4 each.

Preview 02:40

Time to test your knowledge of Arithmetic Instructions in Assembly

Quiz 6 - Arithmetic Instruction
4 questions
+ Logical Instructions
4 lectures 11:09

The AND instruction is used for supporting logical expressions by performing bitwise AND operation. The bitwise AND operation returns 1, if the matching bits from both the operands are 1, otherwise it returns 0.

Preview 03:47

The OR instruction is used for supporting logical expression by performing bitwise OR operation. The bitwise OR operator returns 1, if the matching bits from either or both operands are one. It returns 0, if both the bits are zero.

OR Instruction

Performs a bitwise exclusive OR (XOR) operation on the destination (first) and source (second) operands and stores the result in the destination operand location. The source operand can be an immediate, a register, or a memory location; the destination operand can be a register or a memory location. (However, two memory operands cannot be used in one instruction.) Each bit of the result is 1 if the corresponding bits of the operands are different; each bit is 0 if the corresponding bits are the same.

XOR Instruction

The binary NOT operation has one input and one output. It is like the NEGATIVE operation which takes one argument (one input) and produces one result (one output).

The input to a binary NOT operation can only be 0 or 1 and the result can only be 0 or 1

The binary NOT operation (also known as the binary NOT function or complement function or bit invert function) will always produce a 1 output if its input is 0 and will produce a 0 output if its input is 1.

NOT Instruction

Time to test your knowledge of logical instructions

Quiz 7 - Logical Instructions
2 questions
+ Conditions
3 lectures 07:34

Compare (cmp) Instruction. The compare (cmp) instruction compares two numeric values. ... Additionally, if the instruction is a signalling comparison form and one or more of the source operands is a quiet NaN, then an invalid operation exception must be generated.

Preview 02:21

Conditional means it may not be followed depending on some condition.Unconditional means that is program flow reaches that point it always will continue at the target. A if and a switch are a conditional jumps.

Unconditional Jump

Conditional Jump. If some specified condition is satisfied in conditional jump, the control flow is transferred to a target instruction. There are numerous conditional jump instructions depending upon the condition and data.

Conditional Jump

Time to test your knowledge on conditions in Assembly

Quiz 8 - Conditions
2 questions
+ Number System
1 lecture 02:04

ASCII (American Standard Code for Information Interchange) is the most common format for text files in computers and on the Internet. In an ASCII file, each alphabetic, numeric, or special character is represented with a 7-bit binary number (a string of seven 0s or 1s). 128 possible characters are defined.

ASCII System
+ Functions
4 lectures 17:36

In programming, a named section of a program that performs a specific task. In this sense, a function is a type of procedure or routine. Some programming languages make a distinction between a function, which returns a value, and a procedure, which performs some operation but does not return a value.

Basic Function

Basic features of Stack. Stack is an ordered list of similar data type. Stack is a LIFO (Last in First out) structure or we can say FILO (First in Last out). push() function is used to insert new elements into the Stack and pop() function is used to remove an element from the stack.

Preview 04:10

Printing numbers is very difficult in Assembly, let's create a function to handle printing numbers.

Function To Print A Number
There is a little problem with the source code from the previous video where we implemented a function to print out a number. It cannot print multi digit numbers, your task is to extend the code to allow printing of multi digit numbers. If you need a hand, you can visit the GitHub source code.
Extending Print Number Function For Multi Digit Numbers
1 question

Recursion in computer science is a method of solving a problem where the solution depends on solutions to smaller instances of the same problem. The approach can be applied to many types of problems, and recursion is one of the central ideas of computer science.

Recursion Using Factorial

Time to test your knowledge on functions

Quiz 9 - Functions
3 questions
  • Passion For Learning Assembly
  • Basic Computer Knowledge and Skills
  • Passion For Programming
  • Basic Knowledge of Computer Science Is Optional

Learn about everything there is to know about Assembly Programming and How To Make Applications. A step by step process is used to explain every facet of these topics.

NOTE: This course includes information on application programming and design!

Gain a good understanding of the following concepts with this course:

  1. What Assembly is?

  2. Assembly Certifications

  3. How to develop using Assembly

  4. Features of the Assembly programming language

  5. Coding semantics

  6. Mobile programming

  7. Design practises of applications

  8. Application programming

  9. Network programming

Assembly powers all applications from iOS, Android, Windows, Raspberry Pi, Intel, Arm and many more platforms. These platforms are developed for by all companies such as Google, Facebook and Microsoft for mobile development. This course will ensure you are not left out as more and more companies request this awesome and powerful language. This course will teach you everything about programming Assembly applications.

You will receive all the knowledge to use and leverage the powerful technology behind these amazing and wonderful platforms.

Over 350,000 students have enrolled on my courses and all of them are extremely satisfied. You will also be satisfied with this course. If you do not like the course, remember that within 30 days you can request a full refundI guarantee you satisfaction.

If you have any questions regarding the topics covered in this course, please feel free to ask. I'm always happy to help those who want to learn.

To summarise this is what you get:

• Lifetime access to HD quality videos. No monthly subscription. Learn at your own pace, whenever you want.

• All videos are downloadable. Learn wherever you want, even without an internet connection!

• Downloadable starter code and final code for each section.

• Free helpful support in the course Q&A when you have questions or get stuck.

• Multiple coding challenges to practice your new skills (solutions included).

Sounds great? Then start this adventure today by clicking the “Take this course" button, and join me in the only Assembly course that you will need!

Who this course is for:
  • Anyone Looking To Learn About Assembly
  • Developers Looking To Learn The Skills Needed To Utilise Assembly Features
  • Mobile Developers
  • Web Developers
  • Applications Programmers
  • Designers
  • People Looking To Learn About Programming
  • Those Seeking To Understand How Assembly Works
  • People Seeking Guidance On How To Create Assembly Based Programs
  • Beginners & Experts In This Field
  • People With a Desire To Improve Their Programming Knowledge