Assembly language
Dan Tobias (Talk | contribs) (→Links) |
(Added sample files) |
||
(6 intermediate revisions by 2 users not shown) | |||
Line 2: | Line 2: | ||
|formattype=Languages | |formattype=Languages | ||
|subcat=Programming Languages | |subcat=Programming Languages | ||
− | |extensions={{ext|asm}} | + | |extensions={{ext|asm}}, {{ext|s}}, {{ext|a}} |
}} | }} | ||
− | |||
'''Assembly language''' is the programming language that is one step above [[machine language]]. Its commands (op-code mnemonics, with their operands) directly correspond to the low-level machine instructions, but are expressed in the form of human-readable strings instead of the raw binary of the machine codes themselves. So, for instance, an assembly mnemonic '''MOV''' might correspond to a machine language op-code that moves data between a memory location and a processor register, with the op-code itself being a byte which can be expressed in binary or hexadecimal. Traditionally, three-letter identifiers are often used for assembler mnemonics. The mnemonic is often followed by operands such as names of registers or numbers in some base (often hexadecimal), with a comma separating the source and destination of a move command. Comments can also be included to make the code more understandable to humans. | '''Assembly language''' is the programming language that is one step above [[machine language]]. Its commands (op-code mnemonics, with their operands) directly correspond to the low-level machine instructions, but are expressed in the form of human-readable strings instead of the raw binary of the machine codes themselves. So, for instance, an assembly mnemonic '''MOV''' might correspond to a machine language op-code that moves data between a memory location and a processor register, with the op-code itself being a byte which can be expressed in binary or hexadecimal. Traditionally, three-letter identifiers are often used for assembler mnemonics. The mnemonic is often followed by operands such as names of registers or numbers in some base (often hexadecimal), with a comma separating the source and destination of a move command. Comments can also be included to make the code more understandable to humans. | ||
Line 12: | Line 11: | ||
Assembly language (like the machine language it assembles to) is platform-specific, designed for a specific machine architecture, so there are many different versions of it. A "cross-assembler" is an assembler which runs on one platform in order to produce code designed to run on a different platform. A "virtual machine" is a simulated machine which runs on one platform but emulates another one (and can thus run machine code targeted at the emulated platform). | Assembly language (like the machine language it assembles to) is platform-specific, designed for a specific machine architecture, so there are many different versions of it. A "cross-assembler" is an assembler which runs on one platform in order to produce code designed to run on a different platform. A "virtual machine" is a simulated machine which runs on one platform but emulates another one (and can thus run machine code targeted at the emulated platform). | ||
+ | |||
+ | == Sample files == | ||
+ | * {{DexvertSamples|text/asm}} | ||
== Links == | == Links == | ||
Line 18: | Line 20: | ||
* [http://archive.org/details/Assembly_Language_for_Kids_1985_Microcomscribe Assembly Language for Kids] (1985 book for Commodore computers) | * [http://archive.org/details/Assembly_Language_for_Kids_1985_Microcomscribe Assembly Language for Kids] (1985 book for Commodore computers) | ||
* [http://archive.org/details/bitsavers_fairchildfng1977_5888299 Guide to assembly programming on Fairchild F8 system (1977)] | * [http://archive.org/details/bitsavers_fairchildfng1977_5888299 Guide to assembly programming on Fairchild F8 system (1977)] | ||
+ | * [http://central.kaserver5.org/Kasoft/Typeset/BBC/Ch43.html Why use an assembly language rather than BASIC? (BBC Microcomputer)] | ||
+ | * [http://programminggroundup.blogspot.co.uk/ Programming from the Ground Up - An introduction to programming using Linux assembly language] | ||
+ | * [https://archive.org/details/8080-8085_Assembly_Language_Programming_1977_Intel 8080/8085 Assembly Language Programming (1977 book)] | ||
+ | * [http://blog.codinghorror.com/heres-the-programming-game-you-never-asked-for/ Here's The Programming Game You Never Asked For] | ||
+ | * [http://www.megaprocessor.com/programming.html Megaprocessor programming] (a processor built by hand-wired transistors) |
Latest revision as of 15:33, 28 December 2023
Assembly language is the programming language that is one step above machine language. Its commands (op-code mnemonics, with their operands) directly correspond to the low-level machine instructions, but are expressed in the form of human-readable strings instead of the raw binary of the machine codes themselves. So, for instance, an assembly mnemonic MOV might correspond to a machine language op-code that moves data between a memory location and a processor register, with the op-code itself being a byte which can be expressed in binary or hexadecimal. Traditionally, three-letter identifiers are often used for assembler mnemonics. The mnemonic is often followed by operands such as names of registers or numbers in some base (often hexadecimal), with a comma separating the source and destination of a move command. Comments can also be included to make the code more understandable to humans.
A program called an assembler converts the assembly language program into a machine language program in raw binary, which can then be executed on the computer.
While in the more simple and primitive assemblers the assembly code has a direct one-on-one correspondence with the machine code, via a simple mechanical transformation, more sophisticated assemblers make the language somewhat higher-level by using such things as macros to simplify the programming process by including "commands" that actually translate to longer sequences of machine code than just one op-code and its operands.
Assembly language (like the machine language it assembles to) is platform-specific, designed for a specific machine architecture, so there are many different versions of it. A "cross-assembler" is an assembler which runs on one platform in order to produce code designed to run on a different platform. A "virtual machine" is a simulated machine which runs on one platform but emulates another one (and can thus run machine code targeted at the emulated platform).
[edit] Sample files
[edit] Links
- Wikipedia article
- List of assemblers on Wikipedia
- Assembly Language for Kids (1985 book for Commodore computers)
- Guide to assembly programming on Fairchild F8 system (1977)
- Why use an assembly language rather than BASIC? (BBC Microcomputer)
- Programming from the Ground Up - An introduction to programming using Linux assembly language
- 8080/8085 Assembly Language Programming (1977 book)
- Here's The Programming Game You Never Asked For
- Megaprocessor programming (a processor built by hand-wired transistors)