Click here to load reader
Upload
yitro
View
186
Download
3
Embed Size (px)
DESCRIPTION
第 3 章 8086 的寻址方式和 指令系统. 【 本章重点 】 掌握指令系统的的基本格式,指令系统 的操作功能及使用方法。 【 本章难点 】 8086 的寻址方式,数据传送类指令 和算术运算类指令的使用。. §3.1 8086 的寻址方式. 3.1.1 操作数的寻址方式 1.立即数寻址 在这种寻址方式中,操作数直接跟在操作码的后面,参加指令所规定的操作,并且操作数与操作码一起放在代码段中。这种方式叫立即数寻址方式。. 例: MOV AX , 1234H - PowerPoint PPT Presentation
Citation preview
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
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