This is an implementation of a two-pass assembler for Intel 8086 Microprocessor . It builds the Symbol Table and Assembler Listing for a .asm file of an assembly program.
Follow these instructions to run the software:
-
Enter the name of your file. (eg. swap.asm)
(You can use the filename of files already present in docs folder)
-
Click on START.
-
If there are no errors, click on SHOW SYMBOL TABLE or SHOW ASSEMBLER LISTING.
The symbol table gets displayed.
The assembler listing gets displayed.
- Click on LOAD ANOTHER FILE to build symbol table and assembler listing for another file.
To view source code, open folder src/java.
It contains 8 files:
1. Main.java
2. Pass1.java
3. Pass2.java
4. AddressingModesHelper.java
5. AssemblerDirectiveTable.java
6. MachineInstructionTable.java
7. SymbolTable.java
8. AssemblerListing.java
- JAVA Runtime Environment
Programs that include one or more of the following instructions are supported.
- MOV
- LDS
- LEA
- LES
- XCHG
- ADD
- ADC
- SUB
- SBB
- CMP
- INC
- DEC
- MUL
- IMUL
- DIV
- IDIV
- DAA
- DAS
Programs that include one or more of the following directives are supported.
- DB
- DW
- DD
- ASSUME
- END
- ENDS
- SEGMENT
- HLT
Programs that include one or more of the following addressing modes are supported.
- Immediate - (eg. ADD AX, #100H)
- Direct - (eg. MOV AX, num)
- Register - (eg. ADD BX, AX)
- Register Indirect - (eg. MOV AX, [BX])
- Register Relative - (eg. ADD AX, [BX + SI])
- Based Indexed - (eg. MOV AX, [BX + 7])
- Relative Based Indexed - (eg. ADD AX, [BX + SI + 7])
Note: Immediate value is preceded by '#'. It ends with 'D', 'H' or 'B' for decimal, hexadecimal or binary values respectively.