96
第 3 第 80x86 第第第本本本本80x86 本本 CPU 本本本本本本本80x86 本本本 本本本本本本本本本本本8086 第 3 第 80x86 第第第8086 8088CPU 本本 本本本本本本本8086 8088 本本本本本本本本本本本本 EA 本本本8086 8088 本本本本 本本本本本本本本本本本本 本本本本 本本本本本本本本

第 3 章 80x86 指令系统

  • 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