第 3 章 8086 的寻址方式和 指令系统
DESCRIPTION
第 3 章 8086 的寻址方式和 指令系统. 【 本章重点 】 掌握指令系统的的基本格式,指令系统 的操作功能及使用方法。 【 本章难点 】 8086 的寻址方式,数据传送类指令 和算术运算类指令的使用。. §3.1 8086 的寻址方式. 3.1.1 操作数的寻址方式 1.立即数寻址 在这种寻址方式中,操作数直接跟在操作码的后面,参加指令所规定的操作,并且操作数与操作码一起放在代码段中。这种方式叫立即数寻址方式。. 例: MOV AX , 1234H - PowerPoint PPT PresentationTRANSCRIPT
-
3 8086 8086
-
3.1 8086 3.1.1 MOV AX1234H1234HAX
-
3-1 CPU
34
12
AH
AL
ROM
.
.
.
.
.
.
AX
12
34
-
MOV DSAX
3-2 16AXBXCXDXSIDISPBP8AHALBHBLCHCLDHDL CPU
DS
AX
-
DS=3000H MOV AXDS[2010H]
10
20
DS
3 0 0 0
2 0 1 0
3 2 0 1 0
AX
AH
AL
80
86
86
80
32010H
32011H
.
.
.
.
.
.
-
= DS162010H=3000H162010H=32010H32010H32011HAXDS BXBPSIDI4
-
SIDIBXSIDIBX16 MOV AX[SI] DSBPSS
DS
3 0 0 0
.
3 1 0 0 0
AX
AH
AL
78
56
56
78
31000H
31001H
.
.
.
.
.
.
.
.
1 0 0 0
ROM
SI
-
BPBP16SS=3000H MOV AX[BP] =SS16BP=30000H2000H=32000H32000H32001HAX
BP
.
.
.
ROM
SS
3 0 0 0
2 0 0 0
3 2 0 0 0
AX
AH
AL
34
12
12
34
32000
32001
.
.
.
.
.
.
.
.
.
-
SIDIBXBP816 MOV AXDISP[SI] =DS16SIDISP=30000H1000H0300H=31300H31300H31301HAX
0 3 0 0
DISP
DS
3 0 0 0
3 1 3 0 0
AX
AH
AL
78
56
56
78
31300H
31301H
.
.
.
.
.
.
00
03
1 0 0 0
ROM
SI
-
8086BXBPSIDI16BXBPSIDI.MOV AX[BX][SI]
DS
3 0 0 0
3 0 0 0
3 4 0 0 0
AX
AH
AL
78
56
56
78
34000H
34001H
.
.
.
.
.
.
1 0 0 0
ROM
SI
BX
-
=DS16SIBX=30000H1000H3000H=34000H34000H34001HAX MOV AX[BP][SI]=SS16BPSI=30000H3000H1000H=34000H340000H34001HAX
DS
3 0 0 0
3 0 0 0
3 4 0 0 0
AX
AH
AL
78
56
56
78
34000H
34001H
.
.
.
.
.
.
1 0 0 0
ROM
SI
BP
-
MOV AXDISP[BX][SI]=DS16SIBXDISP=30000H1000H3000H0300H=34300H34300H34301HAX 816
-
0 3 0 0
DISP
DS
3 0 0 0
3 0 0 0
3 4 3 0 0
AX
AH
AL
78
56
56
78
34300H
34301H
.
.
.
.
.
.
00
03
1 0 0 0
ROM
SI
BX
-
3.1.2 IP816DISP=CS16IPDISP JMP DISP3-101000HCPU50HIPCPU31050H
-
IP
5 0
50
CS
3 0 0 0
1 0 0 0
.
.
.
3 1 0 5 0
31050H
ROM
.
.
.
.
.
.
-
16IP3-11JMP CX JMP WORD PTR[BX]
CX(IP)
CS
3 0 0 0
4 0 0 0
.
.
.
3 4 0 0 0
34000H
ROM
.
.
.
.
.
.
-
1616JMP FAR PTR DADD1
30
CS
4 0 0 0
00
4 3 0 0 0
40
00
43000H
3 0 0 0
ROM
IP
.
.
.
-
32416163-13JMP DWORD PTR[BP][DI]
.
CS
8 0 0 0
8 2 0 0 0
82000H
2 0 0 0
ROM
IP
.
.
.
00
20
00
80
SS
.
.
.
.
.
3 0 0 0
1 0 0 0
2 0 0 0
BP
DI
3 3 0 0 0
33000H
-
80866 3.2 8086
-
3.2.180865CPUCPUCPUI/O1MOVXCHGPUSHPOPCBWCWD1MOV OPRDlOPRD2OPRD1OPRD2
-
3-14 1CPUCSIP
CSDSSSES
AXBXCXDXBPSPSIDI
-
2CPUAXBXCXDXBPSPSIDI MOVCL48CLMOVAX03FFH03FFHAXMOVCX1000H1000HCXMOVBL4040BLMOVSI057BH057BHSI
-
3CPUCSIP MOVALBUFFERBUFFER ALMOVAX[BX]BXBX+1AXMOV[DI]AXDIDI+1MOVAX[SI+4]SI+4SI+4+1AX MOV MOV ALDATAl MOV DATA2AL
-
2 XCHG OPRDlOPRD2 XCHGALCL8CLXCHGAXDIAXDIXCHGBXSIBXSIXCHGAXBUFFERAXBUFFERXCHGBX [SI]BXSISI+1
-
3 PUSH OPRD POP OPRD MOV AX1234H MOV DX5678H MOV SP2000H PUSH AX PUSH DX POP DX POP AX
-
3-15 SPl SPSP=1FFFHSPAHSPl SPSP=1FFEHSPALSPl SPSP=1FFDHSPDHSPl SPSP=1FFCHSPDL
2000H
1FFFH
1FFEH
1FFDH
1FFCH
SP
12
34
56
78
2000H
1FFFH
1FFEH
1FFDH
1FFCH
SP
12
34
56
78
.
.
.
.
.
.
.
.
.
.
.
.
-
SP2 1SP2 DLSPSPl SPSP=1FFDHDHSPSPl SPSP=1FFEHALSPSPl SPSP=1FFF HAHSPSPl SPSP=2000H
2000H
1FFFH
1FFEH
1FFDH
1FFCH
SP
12
34
56
78
2000H
1FFFH
1FFEH
1FFDH
1FFCH
SP
12
34
56
78
.
.
.
.
.
.
.
.
.
.
.
.
-
2808631LEA LEA OPRDlOPRD2OPRD2OPRDl16
LEA BXDATA MOV BXOFFSET DATA LEA SIBUFFER MOV SIOFFSET BUFFER
-
2LDSDS16 LDS SI[BX]BX32DSSI 3LES ESLDS LES DI[BX]BX32ESDI
-
3 /AX/ALI/O CPU8AL8AX IN CPUAL8AX8OUT 64K0000HFFFFH00HFFH16DX
-
INAX20H20H21HAXOUT22HALAL22HMOVDX210H 210HDXINALDX210HALOUTDXAXAX210H
-
3.2.2 80864
-
11ADD OPRDlOPRD2OPRDlOPRDl+OPRD2ADD
ADDAL30 ALAL30ADDAX1000HAXAX1000HADDBX3FFHBXBX3FFHADDAXSI AXAXSIADDSIAX SISIAXADDDICX DIDICX
-
ADDALDATA[BX]ALALBXDATAADDDXDATA[BX+SI]DXDXBXSIDATAADDBETA[SI]100SI+DETASI+BETA100ADDBETA[SI]AXSI+DETASI+BETAAX
ADD AX0CFA8HAX=5623HAX=25CBHCF=1OF=0SF=0ZF=0AF=0PF=1 CFOF SFZFAF
-
2ADC OPRD1OPRD2OPRD1OPRD1+OPRD2+CY ADD
00127546H00109428H00127546HDATA100109428HDATA2DATA3
-
MOV AXDATA1ADD AXDATA2MOV DATA3AX MOV AXDATA1+2 ADC AXDATA2+2MOV DATA3+2AX
ADD
DATA1
DATA2
DATA3
46H
75H
12H
00H
28H
94H
10H
00H
-
3INC1INC OPRDOPRDOPRD1 1 AFOFPFSFZFCFINC ALINC CXINC WORD PTR[SI]INC BYTE PTR [SI+BX]
-
2 1SUB OPRDlOPRD2 OPRD1OPRD1OPRD2OPRD2 OPRD1 SUBAL78HALAL78H SUBBX5678HBXBX5678H SUBAXCXAXAXCX
-
SUBAL4[SI] ALALSI4SUBDX1000H[BX+SI] DXDXBXSI1000HSUB[SI5]100 SI+5SI+5100SUB[SI2000H]AX SI+2000HSI+2000HAXOFSFAFPFCF 2SBB OPRD1OPRD2OPRD1OPRD1OPRD2CYSUBCF AFCFOFPFSFZF
-
3DEC1DEC OPRDOPRDOPRD1 1 AFOFPFSFZFCF DEC BLDEC CX DEC BYTE PTR[SI]
-
4NEGNEG OPRDOPRD0OPRD1 NEG AL NEG BYTE PTR[SI] 1281680H32 768168000HOF=1
-
5CMP OPRDlOPRD2OPRD1OPRD2CMP AX2000H CMP AL50H CMP DXSI CMP AX[BXSI10H]AFCFOFPFSFZF
- 1ZF=1ZF2 CFCF=0CF=1 OF=0OFSF=0OPRD1>OPRD2OFSF=1OPRD1
-
CMPAL0AL0JGENEXTAL0NEXT
BLOCK100MAX MOVSIOFFSET BLOCKMOVAL[SI]INCSIMOVCX99AGAINCMPAL[SI]JG NEXTMOVAL[SI]NEXTINCSIDECCXJNEAGAINMOVMAXALHLT
-
3 80861MULMUL OPRDOPRDAXALOPRD OPRDDXAXAXOPRD ALAXMULCFOFSFZFAFPF
-
MUL ALMUL BXMUL WORD PRT[SI]1415MOV AL14MOV CL15MUL CL
2IMULIMUL OPRDOPRDAXALOPRD OPRDDXAXAXOPRD ALAX
-
480868AX16DXAX8ALAH16AXDX1DIVDIV OPRDOPRDAL(AX)(OPRD) AH(AX)(OPRD) OPRDAX(DX) (AX)(OPRD) DX(DX) (AX)(OPRD)
-
2IDIVIDIV OPRDDIVIDIVCFOFAFPFZFSFIDIV327683276712812700
-
XYX/YZMOV ALXMOV AH0DIV YMOV ZAL
-
3CBWCBWALAHALD7=0AH=00HALD7=1AH=FFH4CWDCWDAXDXAXD15=0DX=0000HAXD15=1DX=FFFFH
-
5BCD4BCDBCD0910 BCDBCD12BCDBCD14BCD401AAAAAAALALBCD AHAH
-
AL409AF=0 AL4AFAF=1AL6AH1AF1 AL4 AFCFADD ALBL AAAAX=0535HBL=39HALBL59ASCAL=6EHAF=0BCDAX=0604HAF=1CF=1
-
2AASAASALALBCD AHAHSUBSBBBCDAL
-
3AAMBCDAAMAXALBCDMULBCD40ALAL0AHAHALALSFZFPFOFCFAF
-
4AADBCDBCDBCDBCDBCD AL10AHALAH065BCDAH00000110AL00000101AADAH10ALAL41HAH0ALSFZFPFOFCFAF
-
3.2.318086ANDORNOTXORTEST1NOTNOT OPRDOPRDOPRD MOV AL8FHNOT ALAL=70H
-
2AND AND OPRDlOPRD2OPRD1OPRD1OPRD2 110 AND OPRDlOPRD2
-
AND AL0FHAND AL0CHAND AXBXAND AXDATAAND DXBUFFER[SI+BX]AND DATA00FFHAND BLOCK[BP+DI]DX CF0 CF=0OF=0PFSFZFAF
-
3TESTTEST OPRDimimOPRD1OPRD1imAND01AL11TEST AL80HJNZ THERE THERE MOV BL05H
-
4OR OR OPRDlOPRD2OPRD1OPRD1OPRD2 1100 OROPRDl OPRD2
-
OR AL80HOR AX05FFHOR BXSIOR BXDATAOR BUFFER[BX]SIOR BUFFER[BX+SI]8000H
5XORXOR OPRDlOPRD2OPRD1OPRD1OPRD2
-
10 XOR OPRDlOPRD2 XOR AL0FH XOR AXBX XOR CX[SI4] XOR 10H[BX]CX XOR [BX+SI5]AX
-
XOR AXAX XOR SISIAXSIXORCF=0OF=0PFSFZFAF
-
21SALSHLSAL/SHL OPRDCL/1OPRD1CLCF0816OPRD
0
CF
-
12SHL AL1 MOV CL4 SHL ALCL
2SAR SAR OPRDCL/1 OPRD1CLCF816
-
MOV AH5AHSAR AH1 AH=2DHCF=0
CF
-
3SHRSHR OPRDCL/1 OPRD1CL0CF816 MOV BL4EH SHR BL1 BL=27HCF=0
0
CF
-
3 1ROLROL OPRDCL/1 OPRD1CLCF816 MOV AL5BH ROL AL1AL=B6HCF=0
CF
-
2RORROR OPRDCL/1 OPRD1CLCF816 MOV AL6BH ROL AL1 AL=B5HCF=1
CF
-
3RCLRCL OPRDCL/1 OPRD1CLCFCF816 MOV AL4CH RCL AL1 AL=99HCF=0
CF
-
4RCRRCR OPRDCL/1 OPRD1CLCFCF MOV AL5CH RCR AL1AL=AEHCF=0
CF
-
3.2.4 DSSIESDI SIDI1lSIDI22DFDF=0SIDI DF=1SIDISTDDFl CLDDF0
-
1MOVSMOVS OPRD1OPRD2 MOVSB MOVSW DISI SISI1DIDI1 SISI2DIDI2 SIDIDF=0SIDI1DF=0SIDI2DF1SIDI12
-
2CMPSCMPS OPRD1OPRD2 CMPSB CMPSW SIDI SISI1DIDI1 SISI2DIDI2 SIDI
-
3SCASSCAS OPRD1OPRD2 SCASB SCASW ALDI DIDI1 AXDI DIDI2ALAXDI
-
4LODS LODS OPRD1OPRD2 LODSB LODSW ALSI SISI1 AXSI SISI2 SIALAXDFSI
-
5STOSSTOS OPRD1OPRD2 STOSB STOSW DIAL DIDI1 DIAX DIDI2 ALAXDIDFDI
-
6REPCXCX1CX=07REPE/PEPZ/ REPE/REPZZF=lCX08REPNE/PEPNZ/REPNE/REPNZZF=0CX0
-
1 000BUFFERlBUFFER2 MOV SIOFFSET BUFFERl BUFFERlSI MOV D1OFFSET BUFFER2 BUFFER2DIMOV CX1000 CXCLD REPE MOVS BUFFER2BUFFERl BUFFERlDSBUFFER2ES 100BLOCKlBLOCK2 PUSH DS POP ES LEA SIBLOCKl LEA D1BLOCK2 MOV CX0064H CLD REPE MOVSW
-
DESTSOURCE500SOURCEAL CLD LEA DIDEST LEA SISOURCE MOV CX500 REPE CMPSB JCXZ NEXT MATCHDEC SI MOV ALBYTE PTR[SI]
-
3.2.51JMP IPCSIP1 JMP SHORT LOOP IPIP8LOOP SHORT8128127
-
2JMP NEAR PTR LOOP JMP LOOPl NEARIPIP16LOOP NEAR PTR1664K JMP NEAR PTR LOOPl
-
3 JMP WORD PTR OPRDIPOPRDOPRDOPRDIPIPJMPCSIP JMP CXJMP WORD PTR [BX]
-
4JMP FAR PTR LOOPIPLOOP CSLOOP JMP DWORD PTR[BP]][DI] IPCS
-
2 11CALL OPRD OPRDSPSP2SPIP IPOPRD16OPRD16CALLIPIP
-
MAIN PROC FAR MOV AXDATA MOV DSAX CALL DISPLAY DISPLAY PROC NEAR PUSH AX PUSH BX RET
-
2CALL OPRD OPRDSPSP2SPIP IP16 16IPCSCALL WORD PTR[SI] CALL BX
-
3 RET IPSP+1SP SPSP+2RET2 1 CALL OPRD SPSP2 SP1SPCS SPSP2SPIP IPOPRD CS
-
CODE1CALL FAR PTR WANGWANGCODE2 CODE1 SEGMENT CALL FAR PTR WANG CODE1 ENDS CODE2 SEGMENT WANG PROC FAR WANG ENDP RET CODE2 ENDS
-
1 CALL OPRDSPSP2 SP1SPCSSPSP2 SP1SPIP IPOPRD CS OPRDCALL DWORD PTR [BX]
-
2) RETIPSP+1SP SPSP+2CSSP+1SPSPSP+2IPCS
-
3 808618CSIP128+127JMP
-
4 IP128127CXCX101LOOP OPRD CXCX1CX02LOOPNE OPRD CXCX1CX0ZF03LOOPE OPRD CXCX1CX0ZF=lLOOPELOOPNE
-
5
-
DOSI/ODOS
3.3 DOS
-
1. 1 2 AH 3 INT 21H 2. 11 MOV AH1 INT 21H
-
22MOV DLA MOV AH2INT 21H2DL
-
31010 BUF DB 20HDB ?DB 20DUP?MOV DXOFFSET BUFMOV AH10INT 21H 20INT 21HASC2
-
49$9 BUF DB How are you! $ MOV DXOFFSET BUF MOV AH9 INT 21H
-
53MOV AH3INT 21HAL64MOV DL$MOV AH4INT 21HDL
-
7/6DL=0FFHALDL0FFHDLMOV DL0FFHMOV AH6ALINT 21HMOV DLAMOV AH6DLAINT 21H
-
87ALMOV AH7INT 21HASCAL
-
98ASCALMOV AH8INT 21H1104CHMOV AH4CHINT 21H
-
112BH20041126MOV CX2004HMOV DH11HMOV DL26HMOV AH2BHINT 21H122AHCXDXMOV AH2AHINT 21H