Click here to load reader

第 3 章 8086 的寻址方式和 指令系统

  • Upload
    yitro

  • View
    178

  • 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

  • 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