|
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 |
. |
. |
. |
|
|