Saturday, August 23, 2008

Ascending Order

8086 instruction using debugger for arranging Numbers in a memoery block in ascending Order ...

-A
150F:0100 MOV CH, 02
150F:0102 MOV CL, 02
150F:0104 MOV SI, 1000
150F:0107 MOV AX, [SI]
150F:0109 CMP AL, AH
150F:010B JB 0111
150F:010D XCHG AL, AH
150F:010F MOV [SI], AX
150F:0111 INC SI
150F:0112 DEC CL
150F:0114 JNZ 0107
150F:0116 DEC CH
150F:0118 JNZ 0102
150F:011A INT 3
150F:011B
-
-U
150F:0100 B502 MOV CH,02
150F:0102 B102 MOV CL,02
150F:0104 BE0010 MOV SI,1000
150F:0107 8B04 MOV AX,[SI]
150F:0109 38E0 CMP AL,AH
150F:010B 7204 JB 0111
150F:010D 86C4 XCHG AL,AH
150F:010F 8904 MOV [SI],AX
150F:0111 46 INC SI
150F:0112 FEC9 DEC CL
150F:0114 75F1 JNZ 0107
150F:0116 FECD DEC CH
150F:0118 75E8 JNZ 0102
150F:011A CC INT 3
-
-E 1000
150F:1000 00.14 00.53 00.04
-T

AX=0000 BX=0000 CX=0200 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0102 NV UP EI PL NZ NA PO NC
150F:0102 B102 MOV CL,02
-T

AX=0000 BX=0000 CX=0202 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0104 NV UP EI PL NZ NA PO NC
150F:0104 BE0010 MOV SI,1000
-T

AX=0000 BX=0000 CX=0202 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0107 NV UP EI PL NZ NA PO NC
150F:0107 8B04 MOV AX,[SI] DS:1000=5314
-T

AX=5314 BX=0000 CX=0202 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0109 NV UP EI PL NZ NA PO NC
150F:0109 38E0 CMP AL,AH
-T

AX=5314 BX=0000 CX=0202 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=010B NV UP EI NG NZ NA PO CY
150F:010B 7204 JB 0111
-T

AX=5314 BX=0000 CX=0202 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0111 NV UP EI NG NZ NA PO CY
150F:0111 46 INC SI
-T

AX=5314 BX=0000 CX=0202 DX=0000 SP=FFEE BP=0000 SI=1001 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0112 NV UP EI PL NZ NA PO CY
150F:0112 FEC9 DEC CL
-T

AX=5314 BX=0000 CX=0201 DX=0000 SP=FFEE BP=0000 SI=1001 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0114 NV UP EI PL NZ NA PO CY
150F:0114 75F1 JNZ 0107
-T

AX=5314 BX=0000 CX=0201 DX=0000 SP=FFEE BP=0000 SI=1001 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0107 NV UP EI PL NZ NA PO CY
150F:0107 8B04 MOV AX,[SI] DS:1001=0453
-T

AX=0453 BX=0000 CX=0201 DX=0000 SP=FFEE BP=0000 SI=1001 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0109 NV UP EI PL NZ NA PO CY
150F:0109 38E0 CMP AL,AH
-T

AX=0453 BX=0000 CX=0201 DX=0000 SP=FFEE BP=0000 SI=1001 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=010B NV UP EI PL NZ AC PO NC
150F:010B 7204 JB 0111
-T

AX=0453 BX=0000 CX=0201 DX=0000 SP=FFEE BP=0000 SI=1001 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=010D NV UP EI PL NZ AC PO NC
150F:010D 86C4 XCHG AL,AH
-T

AX=5304 BX=0000 CX=0201 DX=0000 SP=FFEE BP=0000 SI=1001 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=010F NV UP EI PL NZ AC PO NC
150F:010F 8904 MOV [SI],AX DS:1001=0453
-T

AX=5304 BX=0000 CX=0201 DX=0000 SP=FFEE BP=0000 SI=1001 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0111 NV UP EI PL NZ AC PO NC
150F:0111 46 INC SI
-T

AX=5304 BX=0000 CX=0201 DX=0000 SP=FFEE BP=0000 SI=1002 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0112 NV UP EI PL NZ NA PO NC
150F:0112 FEC9 DEC CL
-T

AX=5304 BX=0000 CX=0200 DX=0000 SP=FFEE BP=0000 SI=1002 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0114 NV UP EI PL ZR NA PE NC
150F:0114 75F1 JNZ 0107
-T

AX=5304 BX=0000 CX=0200 DX=0000 SP=FFEE BP=0000 SI=1002 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0116 NV UP EI PL ZR NA PE NC
150F:0116 FECD DEC CH
-T

AX=5304 BX=0000 CX=0100 DX=0000 SP=FFEE BP=0000 SI=1002 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0118 NV UP EI PL NZ NA PO NC
150F:0118 75E8 JNZ 0102
-T

AX=5304 BX=0000 CX=0100 DX=0000 SP=FFEE BP=0000 SI=1002 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0102 NV UP EI PL NZ NA PO NC
150F:0102 B102 MOV CL,02
-T

AX=5304 BX=0000 CX=0102 DX=0000 SP=FFEE BP=0000 SI=1002 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0104 NV UP EI PL NZ NA PO NC
150F:0104 BE0010 MOV SI,1000
-T

AX=5304 BX=0000 CX=0102 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0107 NV UP EI PL NZ NA PO NC
150F:0107 8B04 MOV AX,[SI] DS:1000=0414
-T

AX=0414 BX=0000 CX=0102 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0109 NV UP EI PL NZ NA PO NC
150F:0109 38E0 CMP AL,AH
-
AX=0414 BX=0000 CX=0102 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=010B NV UP EI PL NZ NA PO NC
150F:010B 7204 JB 0111
-T

AX=0414 BX=0000 CX=0102 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=010D NV UP EI PL NZ NA PO NC
150F:010D 86C4 XCHG AL,AH
-T

AX=1404 BX=0000 CX=0102 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=010F NV UP EI PL NZ NA PO NC
150F:010F 8904 MOV [SI],AX DS:1000=0414
-T

AX=1404 BX=0000 CX=0102 DX=0000 SP=FFEE BP=0000 SI=1000 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0111 NV UP EI PL NZ NA PO NC
150F:0111 46 INC SI
-T

AX=1404 BX=0000 CX=0102 DX=0000 SP=FFEE BP=0000 SI=1001 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0112 NV UP EI PL NZ NA PO NC
150F:0112 FEC9 DEC CL
-T

AX=1404 BX=0000 CX=0101 DX=0000 SP=FFEE BP=0000 SI=1001 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0114 NV UP EI PL NZ NA PO NC
150F:0114 75F1 JNZ 0107
-T

AX=1404 BX=0000 CX=0101 DX=0000 SP=FFEE BP=0000 SI=1001 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0107 NV UP EI PL NZ NA PO NC
150F:0107 8B04 MOV AX,[SI] DS:1001=5314
-T

AX=5314 BX=0000 CX=0101 DX=0000 SP=FFEE BP=0000 SI=1001 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0109 NV UP EI PL NZ NA PO NC
150F:0109 38E0 CMP AL,AH
-T

AX=5314 BX=0000 CX=0101 DX=0000 SP=FFEE BP=0000 SI=1001 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=010B NV UP EI NG NZ NA PO CY
150F:010B 7204 JB 0111
-T

AX=5314 BX=0000 CX=0101 DX=0000 SP=FFEE BP=0000 SI=1001 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0111 NV UP EI NG NZ NA PO CY
150F:0111 46 INC SI
-T

AX=5314 BX=0000 CX=0101 DX=0000 SP=FFEE BP=0000 SI=1002 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0112 NV UP EI PL NZ NA PO CY
150F:0112 FEC9 DEC CL
-T

AX=5314 BX=0000 CX=0100 DX=0000 SP=FFEE BP=0000 SI=1002 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0114 NV UP EI PL ZR NA PE CY
150F:0114 75F1 JNZ 0107
-T

AX=5314 BX=0000 CX=0100 DX=0000 SP=FFEE BP=0000 SI=1002 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0116 NV UP EI PL ZR NA PE CY
150F:0116 FECD DEC CH
-T

AX=5314 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=1002 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=0118 NV UP EI PL ZR NA PE CY
150F:0118 75E8 JNZ 0102
-T

AX=5314 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=1002 DI=0000
DS=150F ES=150F SS=150F CS=150F IP=011A NV UP EI PL ZR NA PE CY
150F:011A CC INT 3
-E 1000
150F:1000 04. 14. 53.

Sunday, June 15, 2008

16 Bit number divided by an 8 bit number

The given program displays the set of instructions for division of a 8 bit number from a 16 bit number.

div Unsigned divide
Syntax: div op8
div op16
op8: 8-bit register or memory
op16: 16-bit register or memory
Action: If operand is op8, unsigned AL = AX / op8 and AH = AX % op8
If operand is op16, unsigned AX = DX::AX / op16 and DX = DX::AX % op16
Flags Affected: OF=?, SF=?, ZF=?, AF=?, PF=?, CF=?
Notes: Performs both division and modulus operations in one instruction.


-A
1376:0100 MOV AX, 1234
1376:0103 MOV BX, 36
1376:0106 DIV BX
1376:0108 MOV [2000], AX
1376:010B HLT
1376:010C
-T

AX=1234 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1376 ES=1376 SS=1376 CS=1376 IP=0103 NV UP EI PL NZ NA PO NC
1376:0103 BB3600 MOV BX,0036
-T

AX=1234 BX=0036 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1376 ES=1376 SS=1376 CS=1376 IP=0106 NV UP EI PL NZ NA PO NC
1376:0106 F7F3 DIV BX
-T

AX=0056 BX=0036 CX=0000 DX=0010 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1376 ES=1376 SS=1376 CS=1376 IP=0108 NV UP EI PL NZ NA PO NC
1376:0108 A30020 MOV [2000],AX DS:2000=0000
-T

AX=0056 BX=0036 CX=0000 DX=0010 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1376 ES=1376 SS=1376 CS=1376 IP=010B NV UP EI PL NZ NA PO NC
1376:010B F4 HLT

16 Bit Multiplication

The given program displays the set of instructions for a 16 bit subtraction of two numbers.

mul - Unsigned multiply
Syntax: mul op8
mul op16
op8: 8-bit register or memory
op16: 16-bit register or memory
Action: If operand is op8, unsigned AX = AL * op8
If operand is op16, unsigned DX::AX = AX * op16
Flags Affected: OF, SF=?, ZF=?, AF=?, PF=?, CF

Program Instructions
-A
1376:0102 MOV AX, 4321
1376:0105 MOV BX, 1234
1376:0108 MUL BX
1376:010A MOV [2000], AX
1376:010D HLT
1376:010E
-T

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1376 ES=1376 SS=1376 CS=1376 IP=0102 NV UP EI PL NZ NA PO NC
1376:0102 B82143 MOV AX,4321
-T

AX=4321 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1376 ES=1376 SS=1376 CS=1376 IP=0105 NV UP EI PL NZ NA PO NC
1376:0105 BB3412 MOV BX,1234
-T

AX=4321 BX=1234 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1376 ES=1376 SS=1376 CS=1376 IP=0108 NV UP EI PL NZ NA PO NC
1376:0108 F7E3 MUL BX
-T

AX=F4B4 BX=1234 CX=0000 DX=04C5 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1376 ES=1376 SS=1376 CS=1376 IP=010A OV UP EI NG NZ NA PE CY
1376:010A A30020 MOV [2000],AX DS:2000=0000

16 Bit Subtraction

The given program displays the set of instructions for a 16 bit subtraction of two numbers.

sub - Subtract two numbers
Syntax: sub dest, src
dest: regsiter or memory
src: register, memory, or immediate
Action: dest = dest - src
Flags Affected: OF, SF, ZF, AF, PF, CF
Notes: Works for both signed and unsigned numbers.


-A
1376:0100 MOV AX, 4321
1376:0103 MOV BX, 1234
1376:0106 SUB AX, BX
1376:0108 MOV [2000], AX
1376:010B HLT
1376:010C
-T

AX=4321 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1376 ES=1376 SS=1376 CS=1376 IP=0103 NV UP EI PL NZ NA PO NC
1376:0103 BB3412 MOV BX,1234
-T

AX=4321 BX=1234 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1376 ES=1376 SS=1376 CS=1376 IP=0106 NV UP EI PL NZ NA PO NC
1376:0106 29D8 SUB AX,BX
-T

AX=30ED BX=1234 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1376 ES=1376 SS=1376 CS=1376 IP=0108 NV UP EI PL NZ AC PE NC
1376:0108 A30020 MOV [2000],AX DS:2000=0000
-T

AX=30ED BX=1234 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1376 ES=1376 SS=1376 CS=1376 IP=010B NV UP EI PL NZ AC PE NC
1376:010B F4 HLT

16 Bit Addition

The given program displays the set of instructions for a 16 bit addition of two numbers.

mov - Move data
Syntax: mov dest, src
dest: register or memory
src: register, memory, or immediate
Action: dest = src
Flags Affected: None

add - Add two numbers
Syntax: add dest, src
dest: register or memory
src: register, memory, or immediate
Action: dest = dest + src
Flags Affected: OF, SF, ZF, AF, PF, CF
Notes: Works for both signed and unsigned numbers.

program :
-A
1376:0100 MOV AX,1234
1376:0103 MOV BX,4321
1376:0106 ADD AX,BX
1376:0108 MOV [2000], AX
1376:010B HLT
1376:010C
-T

AX=1234 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1376 ES=1376 SS=1376 CS=1376 IP=0103 NV UP EI PL NZ NA PO NC
1376:0103 BB2143 MOV BX,4321
-T

AX=1234 BX=4321 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1376 ES=1376 SS=1376 CS=1376 IP=0106 NV UP EI PL NZ NA PO NC
1376:0106 01D8 ADD AX,BX
-T

AX=5555 BX=4321 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1376 ES=1376 SS=1376 CS=1376 IP=0108 NV UP EI PL NZ NA PE NC
1376:0108 A30020 MOV [2000],AX DS:2000=0000
-T

AX=5555 BX=4321 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1376 ES=1376 SS=1376 CS=1376 IP=010B NV UP EI PL NZ NA PE NC
1376:010B F4 HLT