7/24/2019 Assembly
1/36
AA
:
[email protected]/1/2009
7/24/2019 Assembly
2/36
209
ALPHANUMERIC.
(
)
:
:;
.
.
object code
source code.
.
:opcode = operation code
operands.
.
mnemonic
0806
ADDSUBMOV.
BXAX
ADD AX,BX
BX
AX
AX
BX
AX
.
0806
080611
7/24/2019 Assembly
3/36
Mov
0
.
-
:
1)Mov
:
S DMOV D,S
MOV
S,D
:
MOV
1-
MOV
:Mem Mem
MOV
MOV.
-.
MOV DS,1000
:
MOV AX,1000
MOV DS,AX
3-
MOV DS,ES
MOV AX,ES
7/24/2019 Assembly
4/36
MOV DS,AX
:MOV AL,[SI]
SI
AL
PA = DS x
10h + SI
AL.
(XCHG
.
S D
D SXCHG D,S
XCHG
XCHG.
:
XCHG AX,BX
AXBX.
XCHG [SUM],BX
SUM
BX.3)XLAT
AL
BX
DS
AL
XLAT
AL
BX
AL.
7/24/2019 Assembly
5/36
(DS x 10h ) *ALBX+ ALXLAT
XLAT
:
19
1
(
4)
DS188.
4
AL = 16
:
1)AL = 3BX = 100.
)
XLAT.
AL = 16.
4)
LEA, LES, LDS
.LEA
DSLDS
LESES.
:
Mem16 reg16LEA reg16,mem16
LEA
Mem32 reg16
Mem322 DSLDS reg16,mem32
DS
LDS
7/24/2019 Assembly
6/36
Mem32 reg16
Mem322 ESLES reg16,mem32
ES
LES
:
LEA SI,[100] => SI = 1000
LDS SI,[200] => SI = 553F
DS = 1000
LES DI,[300] => DI = 4030
ES = 3000
-
.
1)
:
S D D
Carry CFADD D,SADD
S D CF D
Carry CFADC D,SADC
D1 DINC D
INC
AF,CFAAA
AAA
OF
DAA
BCDDAA
7/24/2019 Assembly
7/36
ADDADC
ADD, ADC
:
INC:
AX = 4F3DhBX = FD81hCF = 1:
ADC AX,BX
.
:
11111111
AX = 0100 1111 0011 1101 b
BX = 1111 1101 1000 0001 b
CF = 0001 b+
8188118818111111b
:
PF = 0
AF = 0
34
()
SF = 0()
CF = 1
OF = 0
:
MSB
:OF = 1
DAA
7/24/2019 Assembly
8/36
BCD(
ALAX)
BCD:
89
+=9
.
1815
6
9+5=E6E6+E=14
.
1610
.
AL
AL = Bit7 Bit0
:
1)if Bit3 Bit2 Bit1 Bit0 of AL > 9 or AF = 1
then AL = AL + 6 , AF = 1
)if AL > 9Fh or CF = 1
then AL = AL + 60h , CF =1
AL = 28 BCDBL = 68 BCD:
:
ADD AL,BL
DAA
:
0BCD = 0010 1000 b
7/24/2019 Assembly
9/36
60BCD = 0110 1000 b+
18818888AL
CF = 0 0110+
18818118>=AL = 96 BCD
AF = 1
AAA
(
AL)
:
if Bit3 Bit2 Bit1 Bit0 of AL > 9 or AF =1
then AL = AL + 06
AL = AL and 0Fh
AH = AH + 1
AF = 1
CF = 1
Else AL = AL and 0Fh
AH = 00
:
AL =32h = 2 ASCIIBL = 34h = 4 ASCII
:
ADD AL,BL
AAA
::
AL = 0011 0010
7/24/2019 Assembly
10/36
BL = 0011 0100+
81188118AL = 66h
AL = 06h , AH = 00
4(3AF = 0
)
)
:
- D S D
burrow CFSUB D,S
SUB
- D - S CF D
Carry CFSBB D,SSBB
DECD-1 DDEC D
8D D
1CFNEG DNEG
DASOF
BCDDAS
AF, CF
AAS
AAS
:SUB, SBB
ADD,ADC
DEC
INCNEGReg,
Reg16, Mem, Mem16.
7/24/2019 Assembly
11/36
SI = 0018hDS = 2F00h:
F018h
[F018] = 0400hSUB [SI],03F8h.
:
()
()
.
Destination = 0400h = 0000 0100 0000 0000 b
Source = 03F8h = 1111 1100 0000 1000 b+
18888888888881888b
)
( :
83F8h:
1)
8888881111111888
)111111888888
8111
3)83F8h =
1111 1100 0000 1000
.:PF = 0
AF =1()
(.)
ZF = 0.
SF = 0MSB.
CF = 0
(
.)
7/24/2019 Assembly
12/36
OF = 0.
DAS
BCD
:AL
1)if Bit3 Bit2 Bit1 Bit0 of AL > 9 or AF = 1
then AL = AL06 , AF = 1
)if AL > 9Fh or CF=1
then AL = AL60h , CF = 1
AL = 86 BCDAH = 07 BCD:
:
SUB AL,AH
DAS
:
AL = 1000 0110 b
AH = 1111 1001 b+
181111111b => AL = 7Fh
:
AF = 1
.
CF = 0
1
AL = 79h , AF = 1
AAS
7/24/2019 Assembly
13/36
ASCII
:AL
if Bit3 Bit2 Bit1 Bit0 of AL > 9 or AF = 1
then AL = AL06h , AL = AL and 0Fh
AH = AH01 , AF = 1 , CF = 1
Else AL = AL and 0Fh , AH = 00
:
AL = 38h = 8 ASCIIBL = 35h = 5 ASCII
:
SUB AL,BL
AAS
:
AL = 0011 1000 b
BL = 1100 1011 b+
188888811b => AL = 03h
AF = 0
CF = 0
AL = 03h , AH = 00
3)
BCD
.
:
7/24/2019 Assembly
14/36
AL.S8 AX
AX.S16 DX,AXMUL S
MUL
Q*AX/S8+ AL
R*AX/S8+ AH
Q*(DX,AX)/S16+ AX
R*(DX,AX)/S16+ DXDIV S
DIV
:S8
QR
.
:
Q
(
)
FF
Q
(
)
FFFFh
.
:
:
IMUL.
IDIV.
MSB.
(:)
Q*AL/10d+ AH
R*AL/10d+ AL
AAM
AL
BCD AAM
7/24/2019 Assembly
15/36
SF, ZF, PFAH.10d AL AL
88AHAAD
AX
AX
.
AAD
MSB of AL
All bits of AHCBWCBW
MSB of AX
All bits of DXCBWCWD
S:
Mem16, Mem8, Reg16, Reg8D
.
:
0
AL
0 .
AX
AH
(
)
CBW.
316
16
AX
16
CWD.
:
.
AAM
AAM.
:BL = 09AL = 07:
7/24/2019 Assembly
16/36
MUL BL
AAM
:
AX = 00 07
BX = 00 09
MUL 00 3F AX
AAM 06 03 AX
AAD:
.
AX = 0604h(
)
AAD(
):
AL = 06 x 10d + 04h = 64d = 40h
AH = 00h
-
.
:
ANDS.D DAND D,SAND
S + D DOR D,SOR
OR
7/24/2019 Assembly
17/36
S D DXOR D,SXORXOR
D DNOT DNOT
NOT
XOR, OR, AND:
-
:
OF,CFSAL/SHL D,count
/
SAL/SHL
DCF
count.
OF:
.OF = 1
OF,CF
SHR D,countSHR
DCF
count.
OF:
OF = 1
7/24/2019 Assembly
18/36
SAR D,count
SAR
D
CF
countMSB(
(.
:SHL, SAL:
count = N
.
:
SHR
LSB= 0 LSB = 1CF.
:
:
3(.AX) 7.(BX) DX
MOV SI,AX ; copy AX into SI
SAL SI,1 ; 2 AX
ADD SI,AX ; 3 AX
MOV DX,BX ; copy BX into DX
MOV CL,03H ; load shift count
SAL DX,CL ; 8 BX
SUB DX,BX ; 7 BX
ADD DX,SI ; result
:
countCount
CL
:
count
:
7/24/2019 Assembly
19/36
SAL AX,1
:=
7/24/2019 Assembly
20/36
.OF
OF,CF
RCR D,countCFRCR
RORCF
MSBLSBCF.
OF
.
-
:
Flags AH
AHLAHFAH
LAHF
OFAH Flags
AH
SAHF
AH
SAHF
CF8CFCLC
CFCLC
CF1CFSTCCFSTC
CF
CF CFCMC
CFCMC
IF8IFCLIIFCLI
IF1IFSTIIFSTI
7/24/2019 Assembly
21/36
-
CMP
0
16
:
DS
CMPCMP D,S
D(
SD)
.
:
-
.
:
.
.
1)
:
operandJMP
operandJMP
7/24/2019 Assembly
22/36
IPCS
IP.
:
)
0
(Disp)
IP
:
IP
(] =IP++ )
016[
IPCS
.
:
IP = 0112h
JMP disp ; disp = 0F2h
(IP)
:
address=IP + 2 + disp(= )811+
+FFF2 = 0106h()
8186
7/24/2019 Assembly
23/36
JMP 04
Address = 0112 + 2 + 0004 = 0118h
8110>811
.
CSaddress.
:0
16-19+
10-1+.
16
3KB
.
:
JMP label
label
IP16)IP(
CS.
)
16
16 .
:
JMP BX
BX
BXIP
CSIP.
:
BX = 0200h
CS = 0100h
7/24/2019 Assembly
24/36
PA = ( CS x 10h ) + BX = 01000 + 0200 = 01200h
:
JMP [SI]
SI
IP
CS
:DI, SI, BX.
.3)
16IP
CS16CS
.
:
JMP farlabel
farlabel
3
(
IP
CS.)
)
3
.
.
:
JMP farseg [DI]
DS, DI
:
DI = 0200h:
DS = 0100h PA = DS x 10h + DI = 01000 + 0200 =
01200h
7/24/2019 Assembly
25/36
:
IP
IP = 3010hContentAddress ( h)
CSCS = 0400h188188
:388181
PA = CS x 10h + IP = 07010h88818
848183
)
:
cc
Jcc
Jcc
:10
CF = 1JC
CF = 0JNC
OF = 1JO
OF = 0JNO
SF = 1JS
SF = 0JNS
CX = 0000JCXZ
JE/JZ/
7/24/2019 Assembly
26/36
/JGE/JNL
/
JA/JNBE
/
JAE/JNB
JB/JNAE/
/JBE/JNA
JG/JNLE/
/JLE/JNG
/JNE/JNZ
Parity
/
PF = 0JNB/JBO
PF = 1JP/JPEParity/
:
(A)(B)
(G)(L)
134hABCDh.
.ABCDh
134hABCDh134h.
SUBROUTINES
.
:
7/24/2019 Assembly
27/36
:
IPCS
.
.
:
operand
.
IPCS
CALL operand
CALL
5
:
()
IP
IP.
IP
.
IP(
)IP16
:
CALL near_proc
7/24/2019 Assembly
28/36
CALL [SI]
CALL BX
(
)
.Far_proMemptr32
.CSIP
CSIP
operandIPCS
.CSIP
.
Far_proc
3
(opcode)
.
:
CALL 01234321
IPCS
CS.
CALL
IP.3
(
JMP farseg [DI].)
RET
:
RET/RET operand
RET
IP
IPCS
(
)
7/24/2019 Assembly
29/36
((operand.Far_pro
.SPRET
16
.
-
PUSH
POP.
.
:.
PUSH xx
PUSH yy
PUSH zz
-----------
POP zz
POP yy
POP xx
LIFORET
:.
PUSH, POP
:
7/24/2019 Assembly
30/36
S ((SP))PUSH S
PUSH
((SP)) DPOP D
POP
SPSS
.
.
CSIP.
SS.
SS.SP
SSSP
(
)
.
FFFFh .
(.)SS
.
.
SS
FFFFh()SS
8888h
.SSSP
7/24/2019 Assembly
31/36
SP.
.
::
8185h
SSFFFFh
BOS:
A (bos) = 0105h + FFFF = 1104Fh
8880h:
A (tos) = 01050 + 0008 = 01058h
81850h
(:. )
BBAAh.PUSH AX.
AX134hPUSH
SPSS
81856h
.AX.
AX(
1h)
AX(
34h).
POP AX
POP
BX
.
.
-
7/24/2019 Assembly
32/36
.
.
:
LOOP short_labelLOOP
CX
CX
.IP = IP + dispdisp
(
16
.)
LOOPE/
LOOPZ/LOOPE/ LOOPZ
CX
CXZF
.
.
LOOPNE/
LOOPNZ/LOOPNE/ LOOPNZ
CX
CX
ZF
.
7/24/2019 Assembly
33/36
.
:
(
)
:0,9,4,5,4.CX = 5.
:
MOV CX, 5
Nxt:---------------
---------------
---------------
LOOPNE Nxt
11-
.
SCAN
.
:
MOVS operand
MOVS
1MOVSB
MOVSB
7/24/2019 Assembly
34/36
MOVSW
MOVSW
CMPS operand
CMPS
(SCAS operandSCAS(B or W
LODS operand
LODS (B or W)
STOS operandSTOS(B or W)
12-
.
.
:
MOVS, STOS
CX 0REP
CMPS, SCAS
ZF=1, CX0REPE/REPZ
CMPS, SCAS
ZF=0, CX0REPNE/REPNZ
:
7/24/2019 Assembly
35/36
:
SI = 0100hDS = 0200h
DI = 0110hES = 0400h
:
MOV CX,20h
REP MOVSB
CX
8h = 32d
3
DSSI
ESDI.
13-
SIDI
DF
DF = 0
.
:
DF8DFCLDDFCLD
DF1DFSTDDESTD
14-INOUT
(port) AccIN Acc,portIN
((DX)) AccIN Acc,DXIN
Acc (port)OUT port,AccOUT
Acc ((DX))OUT DX,Acc
OUT
7/24/2019 Assembly
36/36
port
DX.
:
AAh, A9h
B000h
.
:
IN AL,[0AAh]
MOV AH,AL
IN AL,[0A9h]
MOV DX,0B000h
OUT DX,AX
:
1/1/2009