Assembly Language Definition

What Is an Assembly Language?

An assembly language is a type of low-level programming language that is intended to communicate directly with a computer’s hardware. Unlike machine language, which consists of binary and hexadecimal characters, assembly languages are designed to be readable by humans.

Low-level programming languages such as assembly language are a necessary bridge between the underlying hardware of a computer and the higher-level programming languages—such as Python or JavaScript—in which modern software programs are written.

Key Takeaways

  • An assembly language is a type of programming language that translates high-level languages into machine language.
  • It is a necessary bridge between software programs and their underlying hardware platforms.
  • Today, assemble languages are rarely written directly, although they are still used in some niche applications such as when performance requirements are particularly high.

How Assembly Languages Work

Fundamentally, the most basic instructions executed by a computer are binary codes, consisting of ones and zeros. Those codes are directly translated into the “on” and “off” states of the electricity moving through the computer’s physical circuits. In essence, these simple codes form the basis of “machine language”, the most fundamental variety of programming language.

Of course, no human would be able to construct modern software programs by explicitly programming ones and zeros. Instead, human programmers must rely on various layers of abstraction that can allow themselves to articulate their commands in a format that is more intuitive to humans. Specifically, modern programmers issue commands in so-called “high-level languages”, which utilize intuitive syntax such as whole English words and sentences, as well as logical operators such as “And”, “Or”, and  “Else” that are familiar to everyday usage.

Ultimately, however, these high-level commands need to be translated into machine language. Rather than doing so manually, programmers rely on assembly languages whose purpose is to automatically translate between these high-level and low-level languages. The first assembly languages were developed in the 1940s, and although modern programmers spend very little time dealing with assembly languages, they nevertheless remain essential to the overall functioning of a computer. 

Components of Assembly Language

Syntax

Label

Operators

Also referred to as commands, operators are logical expressions that occur after the label field. In addition, it must be preceded by at least one white-space character. Operators can either be opcode or directive. Opcode correspond directly to machine instructions, and the operation code includes any register name associated with the instruction. Alternatively, directive operation codes are instructions known by the assembler.

Instruction

Directive

Macro

Mnemonic

High-Frequency Trading

Today, assembly languages remain the subject of study by computer science students, in order to help them understand how modern software relates to its underlying hardware platforms. In some cases, programmers must continue to write in assembly languages, such as when the demands on performance are especially high, or when the hardware in question is incompatible with any current high-level languages.

One such example that is relevant to finance are the high-frequency trading (HFT) platforms used by some financial firms. In this marketplace, the speed and accuracy of transactions is of paramount importance in order for the HFT trading strategies to prove profitable. Therefore, in order to gain an edge against their competitors, some HFT firms have written their trading software directly in assembly languages, thereby making it unnecessary to wait for the commands from a higher-level language to be translated into machine language.

Advantages and Disadvantages

Assembly language can usually be executed faster than high level languages. It's relatively easy to insert of delete components of assembly language code, and assembly language usually requires fewer instructions to complete a task when compared against other types of languages.

Assembly languages are also often used by programmers wanting greater control over their computers as assembly languages allow you to directly manipulate your hardware. Because of its speed and importance, some programs are specifically written using assembly language as the code can usually remain smaller.

Assembly languages do tend to have several drawbacks. Long programs written using assembly language usually require heavier computing power and can not be run on small computers. Some may find the syntax of assembly language more difficult to remember, and it may take some longer to code using assembly language as it is more complex. In addition, assembly language is usually not portable between different makes of different computers.

Pros
  • Execution may be more simple compared to other languages

  • Execution is usually faster compared to other languages

  • Allows for direct control over hardware

  • Code may remain smaller compared to other languages

Cons
  • Programming may be more challenging to pick up compared to high-level languages

  • Syntax of assembly languages is difficult

  • Not portable between machines

Types of Assemblers

Assembly language must be translated into machine language using an assembler. There are two primary types of assemblers.

A single-pass assembler scans a program one time and makes an equivalent binary program. This type of assembler validates assembly language code by looking the code up in a mnemonic code table. A single-pass assembler is often faster than a multi-pass assembler, and there is usually no need to construct any intermediate code.

A multi-pass assembler means the assembler uses more than one pass. Multi-pass assemblers create a table with every symbol and each of their values in the first pass, then use the table in future passes to generate new code. Each separate pass usually handles a different specific task. Though usually slower, multi-pass assemblers with modular structures can often be reused for different machines.

Example of Assembly Language

What Is an Example of an Assembly Language?

The most commonly used assembly languages include ARM, MIPS, and x86.

Is C++ an Assembly Language?

C++ is not comprised of assembly code. The C++ computing language consists of C++ code which a compiler translates into an executable machine code.

Is Python an Assembly Language?

Python is more advanced than assembly languages. Assembly languages are considered a low level language, while high-level languages such as C, Java, or Python use 0's and 1's instead of numbers, symbols, and abbreviations.

How Are Assembly Languages Used Today?

Though considered lower level languages compared to more advanced languages, assembly languages are still used. Assembly language is used to directly manipulate hardware, access specialized processor instructions, or evaluate critical performance issues. These languages are also used to leverage their speed advantage over high level languages for time-sensitive activities such as high frequency trading.

The Bottom Line

Take the Next Step to Invest
×
The offers that appear in this table are from partnerships from which Investopedia receives compensation. This compensation may impact how and where listings appear. Investopedia does not include all offers available in the marketplace.
Service
Name
Description