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
|
|
|
|
|
|
|
## Summary
|
|
|
|
|
|
|
|
- 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:20:03 +00:00
|
|
|
## Detail
|
|
|
|
|
|
|
|
### Example instruction
|
|
|
|
|
|
|
|
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_.
|
|
|
|
|
|
|
|
### Assemblers
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
## Relation to instruction set architectures
|
|
|
|
|
|
|
|
## Applications
|
|
|
|
|
|
|
|
## Related notes
|
|
|
|
|
|
|
|
[[Hexadecimal_number_system]], [[Instruction_set_architectures]]
|
|
|
|
|
2024-03-14 14:00:03 +00:00
|
|
|
Summary, My Insight, Applications, Related Not
|