Assembly language: Difference between revisions
mNo edit summary |
mNo edit summary |
||
Line 1: | Line 1: | ||
Assembly language is not a proper "programming language" per se, but rather a tool that allows you to write machine code using short, semi-human readable memenomic instructions and link the into an executable, as an alternative to having to write streams of ones and zeroes and load them into memory. This effectively means that not only do each microprocessor family have their own assembly language format and instructions but also each processor version inside that family has its own instruction variations, but in addition to that different assemblers may use different mnemonic substitutes for each processor instruction. | Assembly language is not a proper "programming language" per se, but rather a tool that allows you to write machine code using short, semi-human readable memenomic instructions and link the into an executable, as an alternative to having to write streams of ones and zeroes and load them into memory. This effectively means that not only do each microprocessor family have their own assembly language format and instructions but also each processor version inside that family has its own instruction variations, but in addition to that different assemblers may use different mnemonic substitutes for each processor instruction. | ||
==OS/2 | ==OS/2 Hosted Assemblers== | ||
''Commercial'' | |||
* [[IBM ALP | * [[IBM ALP]] | ||
* [[IBM Macro Assembler/2]] | * [[IBM Macro Assembler/2]] | ||
* Lattice [[LASM]] | * Lattice [[LASM]] | ||
* [[Microsoft Assembler]] | * [[Microsoft Assembler]] | ||
* [[TopSpeed TechKit]] | |||
* [[TopSpeed TechKit]] | * [[Turbo Assembler]] | ||
* [[Turbo Assembler]] | |||
''Open Source'' | |||
* [[ | * [[GNU Assembler]] | ||
* [[ | * [[NASM Assembler]] - LGPL | ||
* [[Open Watcom|Wasm]], [[JWasm]] | |||
===OS/2 disassemblers== | ==OS/2 Hosted Cross Assemblers== | ||
*AVR Disassembler - AVR | ''Open source'' | ||
*BeaEngine - i86/AMD64 | * [[8085 Cross Assembler]] | ||
* | * [[CC65]] - Contains a 6502 cross assembler | ||
*[[IDA]] - i86/AMD64 | |||
==OS/2 disassemblers== | |||
''Freeware'' | |||
*DISA - i86 | |||
''Open Source'' | |||
*AVR Disassembler - AVR | |||
*BeaEngine - i86/AMD64 | |||
*PIC Disassembler - PIC | |||
''Shareware'' | |||
*[[IDA]] - i86/AMD64 | |||
===OS/2 development systems with built in assemblers=== | ===OS/2 development systems with built in assemblers=== | ||
* [[Cabot UCSD Pascal]] - Commercial | * [[Cabot UCSD Pascal]] - Commercial | ||
* [[Open Watcom]] - Open Source | * [[Open Watcom]] - Open Source | ||
* [[Pecan UCSD Pascal]] - Commercial | * [[Pecan UCSD Pascal]] - Commercial | ||
===Aids=== | ===Aids=== | ||
Line 33: | Line 39: | ||
===Libraries, bindings and stubs=== | ===Libraries, bindings and stubs=== | ||
* [[LZ4]] - Compression library | * [[LZ4]] - Compression library | ||
===Editor support=== | ===Editor support=== | ||
* [[Boxer]] - x86 and AT&T DSP32SL (Included by default) - Microchip 16C715, Mitsubishi 37451, PL/M-51 and 8051 (Contributed, requires download) | * [[Boxer]] - x86 and AT&T DSP32SL (Included by default) - Microchip 16C715, Mitsubishi 37451, PL/M-51 and 8051 (Contributed, requires download) | ||
* [[Enhanced Editor]] - Has automatic "tagging", generates automatic code summaries with links and other ASM goodies. | * [[Enhanced Editor]] - Has automatic "tagging", generates automatic code summaries with links and other ASM goodies. | ||
* [[FTE]] - Has support for syntax highlighting, code folding and syntax-aware auto-indent. | * [[FTE]] - Has support for syntax highlighting, code folding and syntax-aware auto-indent. | ||
* [[jEdit]] - Java based editor - m68k, Macro32, MCS51, R2000, Parrot and x86 built in, 6502, AVR and PIC optional. | * [[jEdit]] - Java based editor - m68k, Macro32, MCS51, R2000, Parrot and x86 built in, 6502, AVR and PIC optional. | ||
* [[Lugaru Epsilon]] - i86 syntax highlighting, code folding and syntax-aware auto-indent, 68HC12 available as a separate download | * [[Lugaru Epsilon]] - i86 syntax highlighting, code folding and syntax-aware auto-indent, 68HC12 available as a separate download. | ||
===Assembly language related programmer's utilities=== | ===Assembly language related programmer's utilities=== | ||
* [[Exuberant ctags]] - Creates index files out of assembly language source files - Open source | * [[Exuberant ctags]] - Creates index files out of assembly language source files - Open source | ||
==DOS assemblers== | ==DOS hosted assemblers== | ||
* Pharlap 386|ASM/LINK | * Pharlap 386|ASM/LINK | ||
* A86 - Commercial/Shareware | * A86 - Commercial/Shareware | ||
* [http://assembler86.de/ Assembler ASM] | * [http://assembler86.de/ Assembler ASM] | ||
* Arrowsoft Assembler - Public Domain | * Arrowsoft Assembler - Public Domain | ||
* CHASM (Cheap Assembler) | * CHASM (Cheap Assembler) | ||
* Intel ASM386 | * Intel ASM386 | ||
* [[IBM Macro Assembler]] | |||
* [[IBM Macro Assembler]] | * [[Microsoft Assembler]] | ||
* [[Microsoft Assembler]] | * [[Open Watcom|Wasm]], [[JWasm]] | ||
* [[ | * Phoenix Pasm86 | ||
* [[TopSpeed TechKit]] | |||
* Phoenix Pasm86 | * Borland [[Turbo Assembler]] | ||
* [[TopSpeed TechKit]] | |||
* Borland [[Turbo Assembler]] | |||
===DOS disassemblers=== | ===DOS disassemblers=== | ||
Line 66: | Line 70: | ||
* DIS86 (van Zandt) | * DIS86 (van Zandt) | ||
* MD86 | * MD86 | ||
*PICDIS-LITE - PIC - Shareware | *PICDIS-LITE - PIC - Shareware | ||
* Yilmaz Disassembler | * Yilmaz Disassembler | ||
===DOS development systems with built in assemblers=== | ===DOS development systems with built in assemblers=== | ||
*ASMEDIT - Freeware | *ASMEDIT - Freeware | ||
* [[Open Watcom]] - Open Source | * [[Open Watcom]] - Open Source | ||
* [[Pecan UCSD Pascal]] | * [[Pecan UCSD Pascal]] | ||
===Libraries, bindings and stubs=== | ===Libraries, bindings and stubs=== | ||
* [[LZ4]] - Compression library | * [[LZ4]] - Compression library | ||
===Editor support=== | ===Editor support=== | ||
* [[Boxer]] - x86 and AT&T DSP32SL (Included by default) - Microchip 16C715, Mitsubishi 37451, PL/M-51 and 8051 (Contributed, requires download) | * [[Boxer]] - x86 and AT&T DSP32SL (Included by default) - Microchip 16C715, Mitsubishi 37451, PL/M-51 and 8051 (Contributed, requires download) | ||
* [[FTE]] - Has support for syntax highlighting, code folding and syntax-aware auto-indent. | * [[FTE]] - Has support for syntax highlighting, code folding and syntax-aware auto-indent. | ||
Line 90: | Line 94: | ||
* [http://www.sandpile.org/ Sandpile.org] - Lots of info on i86 and AMD64 instructions. | * [http://www.sandpile.org/ Sandpile.org] - Lots of info on i86 and AMD64 instructions. | ||
* [http://www.plantation-productions.com/Webster/ The Art of Assembly Language Programming] - An often referenced 80x86 Asm on-line tutorial and reference, note though that the examples are in a HLA format, a specific type of assembly not available for an OS/2 toolset. | * [http://www.plantation-productions.com/Webster/ The Art of Assembly Language Programming] - An often referenced 80x86 Asm on-line tutorial and reference, note though that the examples are in a HLA format, a specific type of assembly not available for an OS/2 toolset. | ||
*USENET: [news:comp.lang.asm.x86 comp.lang.asm.x86] | *USENET: [news:comp.lang.asm.x86 comp.lang.asm.x86] | ||
Line 96: | Line 99: | ||
Unlike most other languages the assembly language is not an artificial language that requires standardisation but rather an implementation of a practical reality that came into existence when a specific CPU was designed and manufactured, so the standard is the actual documentation of a hardware implementation. That means for 8, 16 and 32 bit processors the "standard" are the processor and programming manuals from [[Intel]] while for 64 bit assembly language you need to look towards similar manuals from AMD. | Unlike most other languages the assembly language is not an artificial language that requires standardisation but rather an implementation of a practical reality that came into existence when a specific CPU was designed and manufactured, so the standard is the actual documentation of a hardware implementation. That means for 8, 16 and 32 bit processors the "standard" are the processor and programming manuals from [[Intel]] while for 64 bit assembly language you need to look towards similar manuals from AMD. | ||
[[Category:Programming Languages]] [[Category:Assembly]] | [[Category:Programming Languages]][[Category:Assembly]] |
Revision as of 18:51, 2 December 2019
Assembly language is not a proper "programming language" per se, but rather a tool that allows you to write machine code using short, semi-human readable memenomic instructions and link the into an executable, as an alternative to having to write streams of ones and zeroes and load them into memory. This effectively means that not only do each microprocessor family have their own assembly language format and instructions but also each processor version inside that family has its own instruction variations, but in addition to that different assemblers may use different mnemonic substitutes for each processor instruction.
OS/2 Hosted Assemblers
Commercial
Open Source
- GNU Assembler
- NASM Assembler - LGPL
- Wasm, JWasm
OS/2 Hosted Cross Assemblers
Open source
- 8085 Cross Assembler
- CC65 - Contains a 6502 cross assembler
OS/2 disassemblers
Freeware
- DISA - i86
Open Source
- AVR Disassembler - AVR
- BeaEngine - i86/AMD64
- PIC Disassembler - PIC
Shareware
- IDA - i86/AMD64
OS/2 development systems with built in assemblers
- Cabot UCSD Pascal - Commercial
- Open Watcom - Open Source
- Pecan UCSD Pascal - Commercial
Aids
- FWKTL - Allows OS/2 to run COM like self modifying code
Libraries, bindings and stubs
- LZ4 - Compression library
Editor support
- Boxer - x86 and AT&T DSP32SL (Included by default) - Microchip 16C715, Mitsubishi 37451, PL/M-51 and 8051 (Contributed, requires download)
- Enhanced Editor - Has automatic "tagging", generates automatic code summaries with links and other ASM goodies.
- FTE - Has support for syntax highlighting, code folding and syntax-aware auto-indent.
- jEdit - Java based editor - m68k, Macro32, MCS51, R2000, Parrot and x86 built in, 6502, AVR and PIC optional.
- Lugaru Epsilon - i86 syntax highlighting, code folding and syntax-aware auto-indent, 68HC12 available as a separate download.
- Exuberant ctags - Creates index files out of assembly language source files - Open source
DOS hosted assemblers
- Pharlap 386|ASM/LINK
- A86 - Commercial/Shareware
- Assembler ASM
- Arrowsoft Assembler - Public Domain
- CHASM (Cheap Assembler)
- Intel ASM386
- IBM Macro Assembler
- Microsoft Assembler
- Wasm, JWasm
- Phoenix Pasm86
- TopSpeed TechKit
- Borland Turbo Assembler
DOS disassemblers
- ASMGEN (Gersbach, Damke) - Public Domain
- DASM (Williams)
- DIS86 (van Zandt)
- MD86
- PICDIS-LITE - PIC - Shareware
- Yilmaz Disassembler
DOS development systems with built in assemblers
- ASMEDIT - Freeware
- Open Watcom - Open Source
- Pecan UCSD Pascal
Libraries, bindings and stubs
- LZ4 - Compression library
Editor support
- Boxer - x86 and AT&T DSP32SL (Included by default) - Microchip 16C715, Mitsubishi 37451, PL/M-51 and 8051 (Contributed, requires download)
- FTE - Has support for syntax highlighting, code folding and syntax-aware auto-indent.
Publications
- Murray; Pappas: Assembly Language Programming under OS/2 – McGraw-Hill 1988, ISBN 0-07-881412-X
- Leventhal: Assembly Language Programming under OS/2 – Bantam 1989, ISBN 0-553-34578-8
- Holzner: OS/2 Assembly Language – Brady 1990, ISBN 0-13-642505-4
Links
- Working in Protected Mode - A tutorial for DOS programmers, but helpful for OS/2 newbies to a degree.
- Sandpile.org - Lots of info on i86 and AMD64 instructions.
- The Art of Assembly Language Programming - An often referenced 80x86 Asm on-line tutorial and reference, note though that the examples are in a HLA format, a specific type of assembly not available for an OS/2 toolset.
- USENET: comp.lang.asm.x86
Standards
Unlike most other languages the assembly language is not an artificial language that requires standardisation but rather an implementation of a practical reality that came into existence when a specific CPU was designed and manufactured, so the standard is the actual documentation of a hardware implementation. That means for 8, 16 and 32 bit processors the "standard" are the processor and programming manuals from Intel while for 64 bit assembly language you need to look towards similar manuals from AMD.