Sunday, June 15, 2008

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

No comments: