### lecture slides2

ASSEMBLING THE "INC" INSTRUCTION
INSTRUCTION
INC AX
INC CX
INC DX
INC AX
INC CX
INC DX
OPERATION CODE
40h
41h
42h
4h
_h
0100 0000
0100 0001
0100 0010
<----><->
I
R
1
ASSEMBLING THE "INC" INSTRUCTION
16-Bit Register Designations
AX
000
SP
100
CX
001
BP
101
DX
010
SI
110
BX
011
DI
111
The formal description of the INC instruction
is:
0 1 0 0 0 reg
reg = 000 --> 111
2
ASSEMBLING THE ”DEC" INSTRUCTION
The formal description of the DEC instruction
decrement a register by 1 is:
0 1 0 0 1 reg
reg = 000 --> 111
so DEC AX is 48, DEC CX is 49, etc.
3
ASSEMBLING THE ”MOV" INSTRUCTION
MOV destination, immediate value
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
AX,immed.
CX,immed.
DX,immed.
BX,immed.
SP,immed.
BP,immed.
SI,immed.
DI,immed.
B8h
B9h
BAh
BBh
BCh
BDh
BEh
BFh
1011 1000
1011 1001
1011 1010
1011 1011
1011 1100
1011 1101
1011 1110
1011 1111
<----><->
I
R
4
ASSEMBLING THE ”MOV" INSTRUCTION
MOV destination, immediate value
The formal description of MOV immediate is:
1 0 1 1 w reg
Example:
data
data if w=1
MOV AX,FF00
=
B8 00 FF
1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
w
reg
data
data
where w = word flag
Note “backwords” storage of data bytes
5
ASSEMBLING THE ”MOV" INSTRUCTION
MOV destination, immediate value
Consider: MOV AL,FF = B0 FF
1 0 1 1 0 0 0 0 1 1 1 1 1 1 1 1
w reg
data
The 8-bit
AL
CL
DL
BL
registers
000
001
010
011
are designated:
AH
100
CH
101
DH
110
BH
111
6
ASSEMBLING THE ”MOV" INSTRUCTION
MOV destination, immediate value
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
AL,immed.
CL,immed.
DL,immed.
BL,immed.
AH,immed.
CH,immed.
DH,immed.
BH,immed.
B0h
B1h
B2h
B3h
B4h
B5h
B6h
B7h
1011 0000
1011 0001
1011 0010
1011 0011
1011 0100
1011 0101
1011 0110
1011 0111
<----><->
I
R
7
ASSEMBLING THE ”MOV" INSTRUCTION
MOV register, register
1 0 0 0 1 0 d w mod reg
operation code
EA byte
r/m
w = word flag: w=0: byte; w=1: word
d = direction flag: d=1: reg is destination
d=0: r/m is destination
mod = mode indicator: 4 possible values:
00, 01, 10, 11
reg = register
r/m = register or memory indicator
EA = effective address: “move what to where”
8
ASSEMBLING THE ”MOV" INSTRUCTION
MOV register, register
Examples:
MOV
BX,BP
1 0 0 0 1 0 1 1 1 1 0 1 1 1 0 1
d w mod reg = r/m =
BX
BP
8B DD
MOV
BP,BX
1 0 0 0 1 0 1 1 1 1 1 0 1 0 1 1
d w mod reg = r/m =
BP
BX
8B EB
MOV
BP,BX
1 0 0 0 1 0 0 1 1 1 0 1 1 1 0 1
d w mod reg = r/m =
BX
BP
89 DD
9
ASSEMBLING THE ”MOV" INSTRUCTION
MOV register, register
Consider 8-bit registers:
MOV
BL,CH
1 0 0 0 1 0 1 0 1 1 0 1 1 1 0 1
d w mod reg = r/m =
BL
CH
8A DD
10
ASSEMBLING THE ”MOV" INSTRUCTION
MOV register, memory or MOV memory, register
1 0 0 0 1 0 d w mod reg r/m LSB of offset MSB of offset
1 0 0 0 1 0 1 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0
d w mod
reg
r/m
LSB of offset
MSB of offset
MOV BX,[F000] = 8B 1E 00 F0
• mod=00 and r/m=110 signify the bytes following the EA
• Implied segment is DS: DS:[F000]
• Note “backwords” storage of F000.
11
ASSEMBLING THE ”MOV" INSTRUCTION
MOV register, memory or MOV memory, register
MOV [F000],BX
Move the contents of register BX
to location DS:F000
1 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 F F F F 0 0 0 0
d w mod reg
r/m
LSB
MSB
Add register BX to the contents
of location DS:F000
CMP CX,[0080]
Compare register CX with the byte
at location DS:0800
12
ASSEMBLING THE ”MOV" INSTRUCTION
MOV register, memory or MOV memory, register
MOD=00 (and R/M isn't 110)
In this case r/m specifies a register in which to find