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