Upload
lisbet
View
99
Download
2
Embed Size (px)
DESCRIPTION
第 3 章 80x86 指令系统. 本章重点: 80x86 系列 CPU 的各种寻址方式。 80x86 指令系统的各种常用指令。 本章难点: 8086 / 第 3 章 80x86 指令系统 8086 / 8088CPU 系统的地址寻址方式。 8086 / 8088 存储器寻址方式中有效地址 EA 的计算。 8086 / 8088 指令系统中各种常用指令的使用方法,指令间的区别及其隐含约定。. 主 编 : 马争 副 主 编 : 汪亚南 作 者 : 石建国 , 师向群 , 孟庆元 电子制作 : 孟庆元 , 李佃宝. - PowerPoint PPT Presentation
Citation preview
380x86 80x86CPU 80x86 8086380x86 80868088CPU 80868088EA 80868088
: : : ,, : ,
3 .1 8086/8088
3 .1 .1
80868088
3 .1 .2
1. 2. 3.80868088 CPU1
3 .1 .3 80868088
80868088 1. 2.(1)84(2)AXBXCXDX816(3)SIDISPBP (4)CSDSESSS
3.124 4.IO IO
3 .2 80868088
3 .2 .1
DAADAS
3 .2 .2
816MOV BL50H 850HBL MOV AX2000H 162000HAX
3 .2 .3
MOV BXCX CXBX MOV DSAX AXDS
3 .2 .4
5
1.
MOV AXDS[2000H] DS2000HAXMOV AX[2000H] DSDS2000HEA2000HAX2000HAX
2
MOV AX[BX] MOV AX[BP]SIDIBXDSDSBPSSSS4BP
3. MOV AX[BX5] MOV AX5[BX]MOV AXDATA[BX] MOV AX[BXDATA] 4MOV AX[BX][SI]BXSIAX MOV AX[BXSI]
5MOV AX1234H[BXSI] BXSI1234HAX MOV AXDATE[BXSI] DATE MOV AX[BXSIDATE]
(1)[ ]12(2)[ ](3)[ ][ ]MOV AX[BX][SI]6MOV AX6[BX][SI]MOV AX6[BXSI]MOV AX[BXSI6]
3 .2 .5
DSSIESDIDSESMOVSBSIDI MOVSWSIDI
3 .2 .6 IO
IOINOUT 1.IO8n00H~FFH0~255IN AL20H 20HAL IN AX20H 20H21HAX 20H80H,21H40H,AH40HAL80H
2.
IOFFH(255)DXIO3-1AL220HMOV DX220H 220HDXOUT DXAL AL0F5HDX220H
3 .3 80868088
3 .3 .1
1(1)MOVMOV dstsrcdstsrc ,
MOV
MOVMOV MOV 80868088
CSMOVCSIPIPFLAGSMOVAX MOV AXMEM1 MOV MEM2AX MOV AXDS MOV ESAX MOV AXDATA MOV DSAX
2XCHG XCHG DST SRC XCHG REGM REG XCHG REG REGM DST SRC, DSTSRCXCHG CXSIXCHG BX[BPSI]3-2XCHG BLCL BL88HCL17H BL17HCL88H
3-3MEM1MEM2MEM1MEM21MOVMOV AX MEM1MOV BX MEM2MOV MEM1 BX MOV MEM2 AX2XCHGMOV AX MEM1XCHG AX MEM2MOV MEM1 AX3PUSHPOPPUSH MEM1PUSH MEM2POP MEM1POP MEM2
3PUSHPOP PUSHPUSH src PUSH AX PUSH CS PUSH DATE[SI] POPPOP DST POP BX POP ES POP MEM[DI]
163280868088SPSP
2SPSP2SPSRCSPSP1PUSH AXSPSP2SP1AHSPAL,2PUSHPOP
3-5AXBXCXBPPOPMOV BPSP PUSH AX AXSP2PUSH BX BXSP4PUSH CX CXSP6MOV CX[BP6] CXMOV BX[BP4] BXMOV AX[BP2] AXADD SP 6 SP
4XLATXLATDSDSXLAT SRCTAB XLAT TAB DS XLAT XLAT ESTAB ES ALDS[ALBX]EABXALALALAL
0255256BX
0ALXLATALEABXAL
XLATALALAL
XLAT
3-61DSA000HMOV BX0010HMOV AL06HXLAT Hextab 2ASCIIHextab15AL MOV BX OFFSET Hextab MOV AL OFH XLATALF46HAL
2INOUTINOUTINOUT 1ININ IN ACPORTALAXIO00HFFH100HFFFFHDXIN AL20H20HALIN AX20H20H21HAXIN ALDXIN AXDX
2OUTOUTINOUT OUT PORTACALAXOUT 20HALAL20HOUT 20HAXAX20H21HOUT DXALOUT DXAX
3-709ASCIIASC909ASCII9DS1000HASCPA10030HMOV AX1000HMOV DSAXMOV BX0030HIN AL09H 09HAL06HXLAT OUT 09HAL 09H96B6H
XLAT
3LEALDSLES
808680883LEALOAD Effective Address16LDSLOAD DS with pointer 32DSLESLOAD ES with pointer 32ES 1LEA LEA LEA Reg Mem16161616
LEA SP[0500H] SP0500H LEA BX[1000H] BX1000HLEA BX[BXSI06H] BXBXSI06HBX1000HSI0200HBX1206HBX[BXSI06H]LEA BXAREAAREABXAREA16BX316 aMOVLEA BXAREA AREABXMOV BXOFFSET AREAAREABXOFFSET AREA
2LDSLDS dstsrc43216DSReg[srcEA]EAReg DS[srcEA2]EA2DSLDS SI[2130H] SIDS3000HDSEA2130H2133H432SI3C1FHDS2000H
3LESLDSDSESLES DI[BX]DI DSB000HBX080AH 0B080AH05AEH B080AH05AEH 0B080CH4000H B080CH4000H DI05AEHES4000H
LDSLESDSESReg
LEALDSLESMEM
DSSIESDI
44AH 1LAHFLOAD AH FROM FLAGSFLAGS85SFZFAFPFCFAHLAHFAH FLAGS8
FLAGS8
2SAHFStore AH into FLAGS LAHFAH76420SAHFFLAGS AH 3PUSHF PUSH FLAGS onto stackFLAGS16PUSHFSP SP 2SS10HSP1 FLAGSH SS10HSP FLAGSL
4POPFPOP FLAGS OFF STACKPOPFFLAGS LSS10HSPSPFLAGSFLAGS HSS10HSP1 SP SP2PUSHFPOPFTF
3 .3 .2
8086808820
1 1ADDADD AccdataADD memregdataADD memreg 1memreg2ADD AL30HADD BX0FEC0HADD CXSIADD AXWORD PTR[BX20H]
3-8MOV CL0E5H CL0E5HADD CL0A4H CL0E5H0A4H89HCLCL89HCF1) ZF0PF081SF11AF0 OF0
2ADC ADCADDCFADC memregdataADC memreg1memreg2 ADC AL78H ALAL78HCFADC AXCX AXAXCXCFADC BXWORD PTR[DI] BXBX[DI1][DI]CF
31INCCFINCINC REGMEM1INC ALINC SIINC BYTE PTR[BX2]INC WORD PTR[BX][SI]
2 1SUB SUB DSTSRC SUB MEMREG DATA SUB MEMREG1MEM/ REG2 DST DSTSRC SUB AL60H SUB AXCX SUB BYTE PTR [BX]DL SUB DXWORD PTR [BXSI]
2-- SBB SBB DSTSRC SBB MEMREG1MEMREG2 DST DSTSRCCF SBB AXCX SBB WORD PTR [SI]2050H SBB BYTE PTR[DI]DL 31-- DEC CF DEC DST DEC MEMREG DST DST1 DEC CL DEC SI DEC BYTE PTR [DI2]
4--NEG 0DST,DST NEG AL NEG BX NEG BYTE PTR [BX] NEG WORD PTR [SI50]3-10 :MOV AL0FCH ;0FCH4 NEG AL ;0444 MOV BL01H ;00H01H 1 NEG BL ;BL0FFH1
5-- CMP CMP DSTSRCDSTSRC CMP BL0BH CMP CXSI CMP DIWORD PTR [BX][SI]
3ALAX AL8AX16 8*816AXAH8AL816*163216AX16DX OFCF
1-- MUL:MUL SRC MUL MEMREG MUL BL AXAL*BL MUL CX DXAXAX*CX MUL BYTE PTR [BX] ALBX MUL WORD PTR [SI] AXSI
2- IMULMUL:IMUL SRC IMUL MEMREG IMUL BL IMUL WORD PTR [SI]3-12ALA5H5BH BL11HMUL BL AXAL*BLA5H*11H0AF5H AX0AF5H CFOF1IMUL BL AXAL*BL5BH*11H060BHF9F5H AXF9F5H CFOF1
4AH()ALDXAX AXDXAX 0FFHFFFFHCPU0 AXSRC88ALAH DXAXSRC1616AXDX
1-- DIV :DIV SRC DIV MEMREG DIV DL DIV WORD PTR [SI]2-- IDIV DIV: IDIV SRC IDIV MEMREG
3--CBWCWD 2AXDXAHDXCBW ,ALAHAL b7 AXb15b816ALb7 =0AH=00H,ALb7 =1AH=FFHCWD ,AXb15DXb15b032AXb15 =0,DX0,DX=0000H,AXb15 =1DX=FFFFH
5BCD BCDDAAAAADASAASAAMAAD 6ALAH 1-- DAAAAA
BCDBCD DAA ALDAA AL49AF1,ALAL6AF1 AL49CF1,ALAL60HCF1 DAAADDADCAL DAAOF
BCDBCD AAA ASCAAAAL49AF1 ALAL6 AHAH 1AF1 ALAL & 0FH CF1 ALAL & 0FH AAAADDADC AAAAFCFAAA
2-- DASAAS 3-- AAD
3 .3 .3
1 1 -- AND OR NOTXOR AND OR XOR NOT
AND DSTSRC OR DSTSRC DST DSTSRC XOR DST SRC NOT DST AND OR MEMREGREGMEMIM XOR FFHDST NOT REGMEM DST FFFFHDST
AND AL0FH 44 AND AL0F0H 44 OR AL80H AL1 OR ALBL ALBL NOT AL ;ALFBHAL04H NOT BYTE PTR BETA [BX] XOR AXAX CF0 XOR CL0FFH CL
2 TEST DSTSRC TEST MEMREG1REG2MEM TEST MEMREGDATA TEST AL80H ALTEST BL01H BLTEST CL05H CL020TEST AX0101H AHAL0 TEST CX0FFFFH CX0 TEST SI0400H SI03F6H100
5BX0 MOV BX0000H SUB BXBX AND BX0000H XOR BXBX LEA BX[0000H] 5CF0 : AND AXAX OR AXAX XOR AX0000H TEST AXAX TEST AX00H
2.4 2SAL AL1 SHL ALCL SHR WORD PTR[BXOAH]1 SAR BYTE PTR[BPDI]
aSALSHL bSHR cSAR
SAL DX1 SHL ALCL SHR WORD PTR[BX+0AH]1 SAR BYTE PTR[BP+DI]CLDX0020H SAL DX1 DX161AX52 MOV DXAX DX SAL AX1 AX*2 SAL AX1 AX*4 ADD AXDX AX*5 SAR AX1 AX*52
34 REGMEMROL MEMREGCONT CFROR MEMREGCONT CFRCL MEMREGCONT CFCFRCR MEMREGCONT CFCF RCL CONT 1 CL
aROL bROR cRCL dRCR
AL4 1MOV CL4 ROR ALCL 2MOV CL4 ROL ALCL CL0AHAX : MOV CL0AH MOV BX0001H SHL BXCL AND AXBX
3 .3 .4
80868088
1(1)(2)DSSI DSESDI ESDSES(3)64KCXSIDI(4)DFDF0 DF1(5)BW
2 1REPCX0 CX 0 2REPEREPZREPEREPZCX0ZF1CMPS 3REPNEREPNZREPNEREPNZCX0ZF0
3 MOVS DSTSRC MOVS BUF1BUF2 BUF1ES BUF2DS MOVSB MOVSW REPREP MOVS DSTSRC REP MOVSB REP MOVSW
ESBW: REP MOVS BUF2ESBUF1 REP MOVS WORD PTR[DI][SI] MOVSB MOVSW
AREA1100AREA2 1 LEA SIAREA1 SIAREA1 LEA DIAREA2 DIAREA2 MOV CX0064H 100 CLD DF0AGAMOVSB ES[DI]DS[SI] DEC CX CXCX1 JNZ AGA CX0
2 LEA SIAREA1 LEA DIAREA2 MOV CX0032H 50 CLDAGAMOVSW DEC CX JNZ AGA3 LEA SIAREA1 LEA DIAREA2 MOV CX0032H CLD REP MOVSW CX0
2 CMPSCMPSCMP CMPS DSTSRC DS[SI]ES[DI] SISI 12 DIDI 12 CMPSB SI 1 DI 1CMPSW SI 2 DI 2REPEREPZ CMPSB
3SCASALAXSCAS DST SCASB SCASW ALAX [DI] DIDI1
4LODSSIALAXSILODS SRC LODSB LODSWALAX[SI] SISI12ALAX
5STOSALAXDIESDIALAXSTOS DST STOSB STOSW REP STOSB [DI]ALAX DIDI12 DI
INSINS DII/ODX INS DX [REP]INSB 8I/ODI [REP]INSW 16I/ODI [REP]INSD I/O80386 ES:[DI][DX] ;[DX]DXI/O DI DI 1 , 2
OUTS OUTS SII/OOUTS DX [REP] OUTSB [REP] OUTSW [REP] OUTSD 80386[DX] ES:[SI] ;[DX]DXI/O SI SI1 , 2 SI
3 .3 .5
1 1JMPJMP SHORT LABEL LABELJMP NEAR PTR LABELLABELJMP BX BXIPJMP WORD PTR[SI] [SI]JMP CSIPCSIPJMP 2500H1000HJMP FAR PTR LABEL LABEL
2JCC18JCC SHORT JEJZJAJNBECFZF0ZF0CF0JBEJNAZF1CF1CF V ZF1JGJNLEZF0SFOF0SFOF0ZF0JGEJNLZF0JLJNGEZF0 SFOF1SFOF1ZF0JLEJNGZF1 SFOF1 SFOF V ZF1
2 LOOP DEC CX LOOP Lable JNZ LABELJCXZCX1CXCXCX0CX0JCXZLOOPJCXZCX0CXCXCX1CX0
3CALLRETCALLRETCALL WORD PTR[SI] CALL DWORD PTR[BX][SI]DS2000HSI1200HBX1000H
INT 21H
2INTON=4OFOF1INTO4 3IRET IRETRET
3 .3 .6
1STC CF 1 CLC CF 0 CMC CF STD DF 1 CLD DF 0 STI IF 1 INTRCLI IF 0 INTR
2CPUHLT CPUWAIT CPUESC CPULOCK 3NOPCPUNOP3