M16.4 - Computer Science and Engineering

Download Report

Transcript M16.4 - Computer Science and Engineering

Multiplication and Division
Instructions
Module M16.4
Section 10.4
Introduction to Computer Engineering by Richard E. Haskell
Binary Multiplication
T a b le 1 0 .8
B in a ry M u ltip lic a tio n T a b le
0
1
0
0
0
1
0
1
Introduction to Computer Engineering by Richard E. Haskell
Binary Multiplication
13
x 12
26
13
156
1101
1100
0000
0000
1101
1101
10011100
9
C = 156
Introduction to Computer Engineering by Richard E. Haskell
Hex Multiplication
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0
1
2
3
0
0
1
0
2
4
0
3
6
9
T ab le 10.9
H exad ecim al M u ltip licatio n T ab le
4
5
6
7
8
9
A
B
0
4
8
C
10
0
5
A
F
14
19
0
6
C
12
18
1E
24
0
7
E
15
1C
23
2A
31
0
8
10
18
20
28
30
38
40
0
9
12
1B
24
2D
36
3F
48
51
0
A
14
1E
28
32
3C
46
50
5A
64
0
B
16
21
2C
37
42
4D
58
63
6E
79
C
D
E
F
0
C
18
24
30
3C
48
54
60
6C
78
84
90
0
D
1A
27
34
41
4E
5B
68
75
82
8F
9C
A9
0
E
1C
2A
38
46
54
62
70
7E
8C
9A
A8
B6
C4
0
F
1E
2D
3C
4B
5A
69
78
87
96
A5
B4
C3
D2
E1
Introduction to Computer Engineering by Richard E. Haskell
Hex Multiplication
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
Dec
61
x 90
5490
0
1
2
3
0
0
1
0
2
4
0
3
6
9
T ab le 10.9
H exad ecim al M u ltip licatio n T ab le
4
5
6
7
8
9
A
B
0
4
8
C
10
0
5
A
F
14
19
0
6
C
12
18
1E
24
0
7
E
15
1C
23
2A
31
0
8
10
18
20
28
30
38
40
0
9
12
1B
24
2D
36
3F
48
51
0
A
14
1E
28
32
3C
46
50
5A
64
0
B
16
21
2C
37
42
4D
58
63
6E
79
C
D
E
F
0
C
18
24
30
3C
48
54
60
6C
78
84
90
0
D
1A
27
34
41
4E
5B
68
75
82
8F
9C
A9
0
E
1C
2A
38
46
54
62
70
7E
8C
9A
A8
B6
C4
0
F
1E
2D
3C
4B
5A
69
78
87
96
A5
B4
C3
D2
E1
Hex
3D
x 5A
262
A x D = 82, A x 3 = 1E + 8 = 26
131
5 x D = 41, 5 x 3 = F + 4 = 13
157216 = 549010
Introduction to Computer Engineering by Richard E. Haskell
Hex Multiplication
0000
0002
0004
B0 3D
B3 5A
F6 E3
MOV AL,3DH
MOV BL,5AH
MUL BL
;AL=3DH
;BL=5AH
;AX=ALxBL
product = 1572H is in AX
Introduction to Computer Engineering by Richard E. Haskell
11100 011 = E3
mod
Postbyte Opcodes (PBOC)
000
80, 82
ADD b
r / m, i mm
001
010
011
OR b
ADC b
SBB b
r / m, i mm r / m, i mm r / m, i mm
81
ADD w
ADC w
OR w
r / m, i mm r / m, i mm r / m, i mm
SBB w
r / m, i mm
83
ADD se
r / m, i mm
D0
ROL b
r / m, 1
ROR b
r / m, 1
RCL b
r / m, 1
RCR b
r / m, 1
D1
ROL w
r / m, 1
RORw
r / m, 1
RCL w
r / m, 1
D2
ROL b
r / m, CL
ROR b
r / m, CL
RCL b
r / m, CL
100
RCL w
r / m, CL
101
r/m
110
111
AND b
r / m, i mm
SUB b
XOR b
CMP b
r / m, i mm r / m, i mm r / m, i mm
AND w
r / m, i mm
SUB w
CMP w
XOR w
r / m, i mm r / m, i mm r / m, i mm
SUB se
r / m, i mm
CMP se
r / m, i mm
SHL/ SALb
r / m, 1
SHR b
r / m, 1
RAR b
r / m, 1
RCR w
r / m, 1
SHL/ SALw
r / m, 1
SHR w
r / m, 1
RAR w
r / m, 1
RCR b
r / m, CL
SHL/ SALb
r / m, CL
SHR b
r / m, CL
RAR b
r / m, CL
RCR w
r / m, CL
SHL/ SALw
r / m, CL
SHR w
r / m, CL
RAR w
r / m, CL
ADC se
SBB se
r / m, i mm r / m, i mm
ROR w
r / m, CL
PBOC
D3
ROL w
r / m, CL
F6
TEST b
r / m, i mm
NOT b
r/m
NEG b
r/m
MUL b
r/m
I MUL b
r/m
DI V b
r/m
I DI V b
r/m
F7
TEST w
r / m, i mm
NOT w
r/m
NEG w
r/m
MUL w
r/m
I MUL w
r/m
DI V w
r/m
I DI V w
r/m
FE
I NC b
r/m
DEC b
r/m
FF
I NC w
r/m
DEC w
r/m
CALL
i nt r a
CALL
i nt er
JMP
i nt r a
JMP
i nt er
PUSH
r/m
Introduction to Computer Engineering by Richard E. Haskell
MUL BL
F6 E3
16-Bit Hex Multiplication
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0
1
2
3
0
0
1
0
2
4
0
3
6
9
T ab le 10.9
H exad ecim al M u ltip licatio n T ab le
4
5
6
7
8
9
A
B
0
4
8
C
10
0
5
A
F
14
19
0
6
C
12
18
1E
24
0
7
E
15
1C
23
2A
31
0
8
10
18
20
28
30
38
40
0
9
12
1B
24
2D
36
3F
48
51
0
A
14
1E
28
32
3C
46
50
5A
64
0
B
16
21
2C
37
42
4D
58
63
6E
79
C
D
E
F
0
C
18
24
30
3C
48
54
60
6C
78
84
90
0
D
1A
27
34
41
4E
5B
68
75
82
8F
9C
A9
0
E
1C
2A
38
46
54
62
70
7E
8C
9A
A8
B6
C4
0
F
1E
2D
3C
4B
5A
69
78
87
96
A5
B4
C3
D2
E1
31A4
x1B2C
253B0
4 x C = 30
A x C = 78 + 3 = 7B
1 x C = C + 7 = 13
3 x C = 24 + 1 = 25
Introduction to Computer Engineering by Richard E. Haskell
16-Bit Hex Multiplication
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0
1
2
3
0
0
1
0
2
4
0
3
6
9
T ab le 10.9
H exad ecim al M u ltip licatio n T ab le
4
5
6
7
8
9
A
B
0
4
8
C
10
0
5
A
F
14
19
0
6
C
12
18
1E
24
0
7
E
15
1C
23
2A
31
0
8
10
18
20
28
30
38
40
0
9
12
1B
24
2D
36
3F
48
51
0
A
14
1E
28
32
3C
46
50
5A
64
0
B
16
21
2C
37
42
4D
58
63
6E
79
C
D
E
F
0
C
18
24
30
3C
48
54
60
6C
78
84
90
0
D
1A
27
34
41
4E
5B
68
75
82
8F
9C
A9
0
E
1C
2A
38
46
54
62
70
7E
8C
9A
A8
B6
C4
0
F
1E
2D
3C
4B
5A
69
78
87
96
A5
B4
C3
D2
E1
2x4=8
2 x A = 14
1x2=2+1=3
2x3=6
Introduction to Computer Engineering by Richard E. Haskell
31A4
x1B2C
253B0
6348
16-Bit Hex Multiplication
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0
1
2
3
0
0
1
0
2
4
0
3
6
9
T ab le 10.9
H exad ecim al M u ltip licatio n T ab le
4
5
6
7
8
9
A
B
0
4
8
C
10
0
5
A
F
14
19
0
6
C
12
18
1E
24
0
7
E
15
1C
23
2A
31
0
8
10
18
20
28
30
38
40
0
9
12
1B
24
2D
36
3F
48
51
0
A
14
1E
28
32
3C
46
50
5A
64
0
B
16
21
2C
37
42
4D
58
63
6E
79
C
D
E
F
0
C
18
24
30
3C
48
54
60
6C
78
84
90
0
D
1A
27
34
41
4E
5B
68
75
82
8F
9C
A9
0
E
1C
2A
38
46
54
62
70
7E
8C
9A
A8
B6
C4
0
F
1E
2D
3C
4B
5A
69
78
87
96
A5
B4
C3
D2
E1
31A4
x1B2C
253B0
6348
2220C
4 x B = 2C
A x B = 6E + 2 = 70
1 x B = B + 7 = 12
3 x B = 21 + 1 = 22
Introduction to Computer Engineering by Richard E. Haskell
16-Bit Hex Multiplication
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0
1
2
3
0
0
1
0
2
4
0
3
6
9
0000
0003
0006
T ab le 10.9
H exad ecim al M u ltip licatio n T ab le
4
5
6
7
8
9
A
B
0
4
8
C
10
0
5
A
F
14
19
0
6
C
12
18
1E
24
B8 A4 31
BB 2C 1B
F7 E3
0
7
E
15
1C
23
2A
31
0
8
10
18
20
28
30
38
40
0
9
12
1B
24
2D
36
3F
48
51
0
A
14
1E
28
32
3C
46
50
5A
64
0
B
16
21
2C
37
42
4D
58
63
6E
79
C
D
E
F
0
C
18
24
30
3C
48
54
60
6C
78
84
90
0
D
1A
27
34
41
4E
5B
68
75
82
8F
9C
A9
0
E
1C
2A
38
46
54
62
70
7E
8C
9A
A8
B6
C4
0
F
1E
2D
3C
4B
5A
69
78
87
96
A5
B4
C3
D2
E1
MOV AX,31A4H
MOV BX,1B2CH
MUL BX
31A4
x1B2C
253B0
6348
2220C
31A4
0544D430
;AX=31A4H
;BX=1B2CH
;DX:AX = AX x BX
Introduction to Computer Engineering by Richard E. Haskell
Unsigned MUL Instruction
M achine
C ode
F6
PB
F7
PB
A ssem bly Language
Instruction
MUL
b r/m
MUL
w r/m
O peration
A X = A L x r/m 8
D X:A X = A X x r/m 16
Introduction to Computer Engineering by Richard E. Haskell
Unsigned Multiplication
Dec
Hex
165
x 36
990
495
5940
A5
x 24
294
14A
1734
594010 = 173416
But A5 = 10100101 can be a signed number
2’s comp = 01011011 = 5BH = 9110
Therefore, A5 can represent -91
Introduction to Computer Engineering by Richard E. Haskell
Signed Multiplication
Dec
-91
x 36
546
273
-3276
327610 = 0CCC16
= 0000 1100 1100 1100
2’s comp = 1111 0011 0011 0100
= F334H
Therefore, for signed multiplication
A5H x 24H = F334H
and not 1734H
The 8086 IMUL instruction performs SIGNED multiplciation
Introduction to Computer Engineering by Richard E. Haskell
Signed Multiplication
0000
0002
0004
B0 A5
B3 24
F6 EB
MOV AL,A5H
MOV BL,24H
IMUL BL
;AL=A5H
;BL=24H
;AX=ALxBL
product = F334H is in AX
Introduction to Computer Engineering by Richard E. Haskell
Signed IMUL Instruction
M achine
C ode
F6
PB
F7
PB
A ssem bly Language
Instruction
IMUL
b r/m
IMUL
w r/m
O peration
A X = A L x r/m 8
D X:A X = A X x r/m 16
Introduction to Computer Engineering by Richard E. Haskell
Binary Division
D
C 9C
11 0 1
1100 10011100
1100
0111 1
1100
0011 0
0000
01100
1100
0000
Introduction to Computer Engineering by Richard E. Haskell
Hex Division
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0
1
2
3
0
0
1
0
2
4
0
3
6
9
T ab le 10.9
H exad ecim al M u ltip licatio n T ab le
4
5
6
7
8
9
A
B
0
4
8
C
10
0
5
A
F
14
19
0
6
C
12
18
1E
24
0
7
E
15
1C
23
2A
31
0
8
10
18
20
28
30
38
40
0
9
12
1B
24
2D
36
3F
48
51
0
A
14
1E
28
32
3C
46
50
5A
64
0
B
16
21
2C
37
42
4D
58
63
6E
79
C
D
E
F
0
C
18
24
30
3C
48
54
60
6C
78
84
90
0
D
1A
27
34
41
4E
5B
68
75
82
8F
9C
A9
0
E
1C
2A
38
46
54
62
70
7E
8C
9A
A8
B6
C4
0
F
1E
2D
3C
4B
5A
69
78
87
96
A5
B4
C3
D2
E1
CA
EE BC2F
B28
9A F
C x E = A8
C x E = A8 + A = B2
Introduction to Computer Engineering by Richard E. Haskell
Hex Division
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0
1
2
3
0
0
1
0
2
4
0
3
6
9
T ab le 10.9
H exad ecim al M u ltip licatio n T ab le
4
5
6
7
8
9
A
B
0
4
8
C
10
0
5
A
F
14
19
0
6
C
12
18
1E
24
0
7
E
15
1C
23
2A
31
0
8
10
18
20
28
30
38
40
0
9
12
1B
24
2D
36
3F
48
51
0
A
14
1E
28
32
3C
46
50
5A
64
Dividend = BC2F
Divisor = EE
Quotient = CA
Remainder = 63
0
B
16
21
2C
37
42
4D
58
63
6E
79
C
D
E
F
0
C
18
24
30
3C
48
54
60
6C
78
84
90
0
D
1A
27
34
41
4E
5B
68
75
82
8F
9C
A9
0
E
1C
2A
38
46
54
62
70
7E
8C
9A
A8
B6
C4
0
F
1E
2D
3C
4B
5A
69
78
87
96
A5
B4
C3
D2
E1
CA
EE BC2F
B28
9A F
94C
63
A x E = 8C
A x E = 8C + 8 = 94
Introduction to Computer Engineering by Richard E. Haskell
Hex Division
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0
1
2
3
0
0
1
0
2
4
0
3
6
9
0000
0003
0006
T ab le 10.9
H exad ecim al M u ltip licatio n T ab le
4
5
6
7
8
9
A
B
0
4
8
C
10
0
5
A
F
14
19
0
6
C
12
18
1E
24
0
7
E
15
1C
23
2A
31
0
8
10
18
20
28
30
38
40
B8 2F BC
B3 EE
F6 F3
0
9
12
1B
24
2D
36
3F
48
51
0
A
14
1E
28
32
3C
46
50
5A
64
0
B
16
21
2C
37
42
4D
58
63
6E
79
C
D
E
F
0
C
18
24
30
3C
48
54
60
6C
78
84
90
0
D
1A
27
34
41
4E
5B
68
75
82
8F
9C
A9
0
E
1C
2A
38
46
54
62
70
7E
8C
9A
A8
B6
C4
0
F
1E
2D
3C
4B
5A
69
78
87
96
A5
B4
C3
D2
E1
MOV AX,0BC2FH
MOV BL,0EEH
DIV BL
quotient = AL
remainder = AH
CA
EE BC2F
B28
9A F
94C
63
;AX=BC2FH
;BL=EEH
;AL=AX/BL
= CAH
= 63H
Introduction to Computer Engineering by Richard E. Haskell
8086 Division Instructions
M achine
C ode
F6 PB
A ssem bly Language
Instruction
DIV
rm8
F7 PB
DIV
rm16
F6 PBI
IDIV
rm8
F7 PBI
IDIV
rm16
O peration
A L = A X /rm 8 (unsigned)
A H = rem ainder
A X = D X :A X /rm 16 (unsigned)
D X = rem ainder
A L = A X /rm 8 (signed)
A H = rem ainder
A X = D X :A X /rm 16 (signed)
D X = rem ainder
Introduction to Computer Engineering by Richard E. Haskell
Divisor may be too small
D71
E BC2F
rem 1
Quotient does not fit in AL
Causes a “divide by zero” interrupt
Introduction to Computer Engineering by Richard E. Haskell
Offset Address
000
004
008
00C
010
014
Interrupt
Vector
Table
040
044
048
04C
050
054
058
05C
060
064
068
06C
070
080
084
088
08C
Type No.
IP
CS
IP
CS
IP
CS
IP
CS
IP
CS
IP
CS
0
Divisionby zero
1
SingleStepping
2
NMI Interrupt
3
1-byteINT (opcode = CC)
4
Signed overflow
5
Print Screen
IP
CS
IP
CS
IP
CS
IP
CS
IP
CS
IP
CS
IP
CS
IP
CS
IP
CS
IP
CS
IP
CS
IP
CS
IP
CS
10
Video I/O
11
Equipment Check
12
Memory Size
13
DisketteI/ O
14
Serial Communication I/ O
15
Cassette I/O
16
KeyboardI/O
17
Printer I/O
18
Cassette BASIC
19
Bootstrap
1A
Timeof Day
1B
KeyboardBreak
1C
TimerTick
20
ProgramTerminate
21
Function Request
22
Terminate Address
23
Ctrl-Break Exit Address
IP
CS
IP
CS
IP
CS
IP
CS
Introduction to Computer
Engineering
3F8
IP
FE by Richard E. Haskell
3FC
CS
IP
CS
FF
BIOS
DOS
Interrupt Vector Table
Offset
address
000
004
008
00C
010
014
Type number
IP
CS
IP
CS
IP
CS
IP
CS
IP
CS
IP
CS
0
Division by zero
1
Single Stepping
2
NMI Interrupt
3
1-Byte INT (opcode = CC)
4
Signed overflow (INTO)
5
Print screen
Introduction to Computer Engineering by Richard E. Haskell