2024-03-12 07:20:03 +00:00
|
|
|
---
|
|
|
|
id: 2v5c
|
|
|
|
title: Assembly
|
2024-03-12 07:30:03 +00:00
|
|
|
tags: [CPU]
|
2024-03-12 07:20:03 +00:00
|
|
|
created: Tuesday, March 12, 2024
|
|
|
|
---
|
|
|
|
|
|
|
|
# Assembly
|
2024-03-14 14:00:03 +00:00
|
|
|
|
|
|
|
- Assembly is one level up from machine code and provides a more human-friendly
|
|
|
|
abstraction layer
|
|
|
|
|
2024-03-14 14:10:03 +00:00
|
|
|
- An assembly instruction is a _mneumonic_ that comprises an "op code" plus
|
|
|
|
operands
|
|
|
|
|
2024-03-14 14:30:03 +00:00
|
|
|
- It is translated back to machine code by an assembler for the computer to
|
|
|
|
execute.
|
|
|
|
|
2024-04-09 07:30:04 +01:00
|
|
|
## Example instruction
|
2024-03-14 14:20:03 +00:00
|
|
|
|
|
|
|
We can translate the machine instruction `e3a07004` into the assembly
|
|
|
|
instruction `mov r7, #4`. This translates to: _move the value number 4 to the
|
|
|
|
register r7_.
|
|
|
|
|
2024-04-09 07:30:04 +01:00
|
|
|
## Assemblers
|
2024-03-14 14:20:03 +00:00
|
|
|
|
|
|
|
Although assembly is useful for humans, computers still work at the level of
|
|
|
|
machine code. Therefore you need an **assembler** to translate the assembly code
|
|
|
|
to machine code. An assembly language text file is fed into an assembler and a
|
|
|
|
binary object file containing machine code is returned.
|
|
|
|
|
2024-03-14 14:30:03 +00:00
|
|
|
A disassembler does the opposite: translate machine code into assembly.
|
|
|
|
|
2024-04-09 07:30:04 +01:00
|
|
|
## Relation to instruction set architectures
|
2024-03-14 14:30:03 +00:00
|
|
|
|
|
|
|
- the ISA defines the hardware capabilities and the instructions that can be run
|
|
|
|
on the hardware
|
|
|
|
- machine code is a binary representation of these instructions and can be
|
|
|
|
directly executed by the CPU
|
|
|
|
- humans use an assembly language version of the machine code which is then
|
|
|
|
translated back to machine code for the computer to execute.
|
2024-03-14 14:20:03 +00:00
|
|
|
|
|
|
|
## Related notes
|
|
|
|
|
2024-03-14 14:30:03 +00:00
|
|
|
[[Hexadecimal_number_system]], [[Instruction_set_architectures]],
|
|
|
|
[[CPU_architecture]]
|