|
|
8086 Executable Codes
|
|
|
|
|
|
| To Move Constant Value's Into Registers[16-Bit] |
| Assembly Code | Executable Code 8086[Hex] |
| MOV AX,2 | B8 02 00 |
| MOV BX,1234 | BB D2 04 |
| MOV CX,4 | B9 04 00 |
| MOV DX,5 | BA 05 00 |
|
|
| In The Above Exe Code B8,BB,B9 And BA Represent Registers AX,BX,CX And DX Respectively.
Next Two Bytes Represents The 16-Bit Value To Be Moved In To Register. Since AX,BX,CX And
DX Are 16-Bit In Length, Constants To Be Moved Into Registers Will Be 16-Bit In Length. |
|
| To Move Constant Value's Into Registers[8-Bit] |
| Assembly Code | Executable Code 8086[Hex] |
| MOV AH,6 | B4 06 |
| MOV BH,3 | B7 03 |
| MOV CH,4 | B5 04 |
| MOV DH,5 | B6 05 |
| MOV AL,6 | B0 06 |
| MOV BL,3 | B3 03 |
| MOV CL,4 | B1 04 |
| MOV DL,5 | B2 05 |
|
| In The Above Exe Code B4,B7,B5,B6,B0,B3,B1 And B2 Represent Registers AH,BH,CH,DH,AL,BL,CL And DL
Respectively. Next One Byte Represents The 8-Bit Value To Be Moved In To Register. Since AH,BH,CH,
DH,AL,BL,CL And DL Are 8-Bit In Length, Constants To Be Moved Into Registers Will Be 8-Bit In Length. |
|
| Pushing Register Values In To Stack |
| Assembly Code | Executable Code 8086[Hex] |
| PUSH AX | 50 |
| PUSH BX | 53 |
| PUSH CX | 51 |
| PUSH DX | 52 |
| PUSH DS | 1E |
| PUSH ES | 06 |
| PUSH SI | 56 |
| PUSH DI | 57 |
| PUSH BP | 55 |
|
|
| Poping Back Values From Stack To Register |
| Assembly Code | Executable Code 8086[Hex] |
| POP AX | 58 |
| POP BX | 5B |
| POP CX | 59 |
| POP DX | 5A |
| POP DS | 1F |
| POP ES | 07 |
| POP SI | 5E |
| POP DI | 5F |
| POP BP | 5D |
|
|
| Moving Values From One Register[16-Bit] To Another |
| Assembly Code | Executable Code 8086[Hex] |
| MOV AX,BX | 8B C3 |
| MOV AX,CX | 8B C1 |
| MOV AX,DX | 8B C2 |
| MOV BX,AX | 8B D8 |
| MOV BX,CX | 8B D9 |
| MOV BX,DX | 8B DA |
| MOV CX,AX | 8B C8 |
| MOV CX,BX | 8B CB |
| MOV CX,DX | 8B CA |
| MOV DX,AX | 8B D0 |
| MOV DX,BX | 8B D3 |
| MOV DX,CX | 8B D1 |
|
|
| Moving Values From One Register[8-Bit] To Another |
| Assembly Code | Executable Code 8086[Hex] |
| MOV AH,BH | 8A E7 |
| MOV AH,CH | 8A E5 |
| MOV AH,DH | 8A E6 |
| MOV AH,AL | 8A E0 |
| MOV AH,BL | 8A E3 |
| MOV AH,CL | 8A E1 |
| MOV AH,DL | 8A E2 |
| MOV BH,AH | 8A FC |
| MOV BH,CH | 8A FD |
| MOV BH,DH | 8A FE |
| MOV BH,AL | 8A F8 |
| MOV BH,BL | 8A FB |
| MOV BH,CL | 8A F9 |
| MOV BH,DL | 8A FA |
| MOV CH,AH | 8A EC |
| MOV CH,BH | 8A EF |
| MOV CH,DH | 8A EE |
| MOV CH,AL | 8A E8 |
| MOV CH,BL | 8A EB |
| MOV CH,CL | 8A E9 |
| MOV CH,DL | 8A EA |
| MOV DH,AH | 8A F4 |
| MOV DH,BH | 8A F7 |
| MOV DH,CH | 8A F5 |
| MOV DH,AL | 8A F0 |
| MOV DH,BL | 8A F3 |
| MOV DH,CL | 8A F1 |
| MOV DH,DL | 8A F2 |
| MOV AL,AH | 8A C7 |
| MOV AL,BH | 8A C7 |
| MOV AL,CH | 8A C5 |
| MOV AL,DH | 8A C6 |
| MOV AL,BL | 8A C3 |
| MOV AL,CL | 8A C1 |
| MOV AL,DL | 8A C2 |
| MOV BL,AH | 8A DC |
| MOV BL,BH | 8A DF |
| MOV BL,CH | 8A DD |
| MOV BL,DH | 8A DE |
| MOV BL,AL | 8A D8 |
| MOV BL,CL | 8A D9 |
| MOV BL,DL | 8A DA |
| MOV CL,AH | 8A CC |
| MOV CL,BH | 8A CF |
| MOV CL,CH | 8A CD |
| MOV CL,DH | 8A CE |
| MOV CL,AL | 8A C8 |
| MOV CL,BL | 8A CB |
| MOV CL,DL | 8A CA |
| MOV DL,AH | 8A D4 |
| MOV DL,BH | 8A D7 |
| MOV DL,CH | 8A D5 |
| MOV DL,DH | 8A D6 |
| MOV DL,AL | 8A D0 |
| MOV DL,BL | 8A D3 |
| MOV DL,CL | 8A D1 |
|
|
| Generrating Interrupt |
| Assembly Code | Executable Code 8086[Hex] |
| INT 21H | CD 21 |
| INT 10H | CD 10 |
| INT 1AH | CD 1A |
|
| In The Above Exe Code CD Instruct's The Processor To Gennerate The Interrupt.
And The Interrupt Number Is Picked From The Next One Byte Information.
Interrput Number Can Vary From 0-255. For More Information About Interrupt Routine Refer The Bible Of DOS Programming : Ray Duncan's Advanced MS-DOS Programming. |
|
| Sample .Com(MS-DOS) File |
| Test01.com(Size Of Test01.com Is 10 Bytes) |
| B4 02 B2 42 CD 21 B4 4C CD 21 |
| Try Running This Program In Dos Mode. This Simple Instuction Prints "B" At Cursor Position Using Universal Interrupt(0x21) Function 0x02. And Control Is Transfered
To MS-DOS Using Universal Interrupt(0x21) Function 0x4C. |
| After Decoding The Above Test01.com We Get The Following Test01.Asm |
| Test01.Asm |
| . |
| . |
| . |
| MOV AH,02 | | ; Function Number To Print A Character At Cursor Position |
| MOV DL,'B' | | ; Character To Output |
| INT 21H | | ; Gennerate Interrupt 0x21 |
| | |
| | |
| MOV AH,4CH | | ; Function Number To Quit A Program |
| INT 21H | | ; Gennerate Interrupt 0x21 |
| . |
| . |
| . |
|
|