Click here to load reader

第三章 80486 微处理器指令系统

  • Upload
    emery

  • View
    145

  • Download
    6

Embed Size (px)

DESCRIPTION

第三章 80486 微处理器指令系统. 第一节  80486 微处理器寻址方式. 第二节 80486 微处理器指令系统. 第一节  80486 微处理器的寻址方式. 要使微处理器能够完成指令规定的操作,则指令中须包含 2 种信息 : 执行什么操作 该操作所涉及的数据在哪里和结果存于何处 寻找操作数所在地址的方法即为 寻址方式 (Addressing Mode) 。 80X86 的 寻址方式 可分为两类: 操作数的寻址方式 和 转移地址的寻址方式 。. 第一节  80486 微处理器的寻址方式. 一、操作数寻址方式. - PowerPoint PPT Presentation

Citation preview

  • 80486 80486 80486

  • 80486 2: (Addressing Mode) 80X86

  • 80486 80X863108

  • 1 81632 MOV AX1234H MOV BL78H MOV ECX12345678H2CPU81632 MOV EAXEDX INC CL MOV DSAX

  • :,,,(EA). :(1)(2) :

  • : [ ][ ][ ][ ]8:(1)(16/32)(2)(16/32)(3)(16/32)(4)(16/32)(5)(16/32)(6)()(32)(7)(16/32)(8)(16/32)(1)16BX,BP;SI,DI BPSS,BX,SI,DIDS (2)32:EAX,EBX,ECX,EDX,ESI,EDI,ESP,EBP EBP,ESPSS,DS (3)ESP(6),()

  • : [ ][ ][ ][ ]8:(1)(16/32)(2)(16/32)(3)(16/32)(4)(16/32)(5)(16/32)(6)()(32)(7)(16/32)(8)(16/32)(1)16BX,BP;SI,DI BPSS,BX,SI,DIDS (2)32:EAX,EBX,ECX,EDX,ESI,EDI,ESP,EBP EBP,ESPSS,DS (3)ESP(6),()MOV AX,DS:[1000H]

  • : [ ][ ][ ][ ]8:(1)(16/32)(2)(16/32)(3)(16/32)(4)(16/32)(5)(16/32)(6)()(32)(7)(16/32)(8)(16/32)(1)16BX,BP;SI,DI BPSS,BX,SI,DIDS (2)32:EAX,EBX,ECX,EDX,ESI,EDI,ESP,EBP EBP,ESPSS,DS (3)ESP(6),()MOV AX,[SI];DSMOV AX,[BP];SSMOV AX,[ESI];DSMOV AX,ES:[ESI];ESMOV EAX,[ESP];SS

  • : [ ][ ][ ][ ]8:(1)(16/32)(2)(16/32)(3)(16/32)(4)(16/32)(5)(16/32)(6)()(32)(7)(16/32)(8)(16/32)(1)16BX,BP;SI,DI BPSS,BX,SI,DIDS (2)32:EAX,EBX,ECX,EDX,ESI,EDI,ESP,EBP EBP,ESPSS,DS (3)ESP(6),()MOV AX,[DI+8];DSMOV AX,[BP+2];SSMOV AX,[ESI+10000H];DSMOV EAX,[ESP+10H];SS

  • : [ ][ ][ ][ ]8:(1)(16/32)(2)(16/32)(3)(16/32)(4)(16/32)(5)(16/32)(6)()(32)(7)(16/32)(8)(16/32)(1)16BX,BP;SI,DI BPSS,BX,SI,DIDS (2)32:EAX,EBX,ECX,EDX,ESI,EDI,ESP,EBP EBP,ESPSS,DS (3)ESP(6),()MOV AX,[BX+SI];DSMOV AX,[BP+DI];SSmov eax,[edx][ebp];DSmov ax,[ebp][edx];SS

  • : [ ][ ][ ][ ]8:(1)(16/32)(2)(16/32)(3)(16/32)(4)(16/32)(5)(16/32)(6)()(32)(7)(16/32)(8)(16/32)(1)16BX,BP;SI,DI BPSS,BX,SI,DIDS (2)32:EAX,EBX,ECX,EDX,ESI,EDI,ESP,EBP EBP,ESPSS,DS (3)ESP(6),()MOV AX,[BX+SI+10H];DSMOV AX,[EBP+EDI+6];SS

  • : [ ][ ][ ][ ]8:(1)(16/32)(2)(16/32)(3)(16/32)(4)(16/32)(5)(16/32)(6)()(32)(7)(16/32)(8)(16/32)(1)16BX,BP;SI,DI BPSS,BX,SI,DIDS (2)32:EAX,EBX,ECX,EDX,ESI,EDI,ESP,EBP EBP,ESPSS,DS (3)ESP(6),()MOV AX, TAB[ESI*4];DSMOV EAX, 4[EBP*4];SS

  • : [ ][ ][ ][ ]8:(1)(16/32)(2)(16/32)(3)(16/32)(4)(16/32)(5)(16/32)(6)()(32)(7)(16/32)(8)(16/32)(1)16BX,BP;SI,DI BPSS,BX,SI,DIDS (2)32:EAX,EBX,ECX,EDX,ESI,EDI,ESP,EBP EBP,ESPSS,DS (3)ESP(6),()MOV AX,[BX+SI*1];DSMOV AX,[EBP+EDI*8];SS

  • : [ ][ ][ ][ ]8:(1)(16/32)(2)(16/32)(3)(16/32)(4)(16/32)(5)(16/32)(6)()(32)(7)(16/32)(8)(16/32)(1)16BX,BP;SI,DI BPSS,BX,SI,DIDS (2)32:EAX,EBX,ECX,EDX,ESI,EDI,ESP,EBP EBP,ESPSS,DS (3)ESP(6),()MOV AX,[BX+SI*1+40];DSMOV AX,[EBP+EDI*8+10];SS

  • : EA1632DSMOV AXDS[1000H]DS1000H1001H AX:DS=?DS

  • CS(E)IPSS(E)SPDSCS, SS ,ES FS ,GS(E)SIES(E)DIDSCS,SS,ES,FS,GS(E)BP(E)SPSSCS,DS,ES,FS,GS

  • IP816 JMP NEAR PTR PROGRAM JMP SHORT OUTSET IP JMP CX JMP WORD PTR [BX+TAB1]

  • ,IPCS JMP FAR PTR NEXT IPCS JMP DWORD PTR [REL+BX]

  • 80486 80X868086802863232 804868086 804867

  • MOV

  • ,Mov AL, -2Mov AX,-2Mov AL,254Mov AX,254Mov AL,0fehMov AX,0feh

  • 1 MOV MOV MOVBYTE PTR [BX]55H55HBX MOV[BX]55H 0055HBX MOVSX MOVSX 1632 MOV DL-16DL = F0HMOVSX BXDLBX = FFF0HDHDL MOVZX MOVZX ;MOVSX

  • MOVZX EAXCX CX16032EAX MOVSXMOVZX XCHG XCHG reg reg mem reg reg mem :, Semaphore ,0,0TESTMOV AL,0FFHXCHG AL, Semaphore;AND AL,ALJNZ TEST ;MOV AL,0MOV Semaphore,AL

  • LEA(Load Efficient Address) LEAreg32 mem reg16 mem TABLEDB 31H32H33H34H LEA DITABLE MOV DIOFFSET TABLE LDS/LES/LFS/LGS/LSS reg() mem XYZ1 DF1234567890ABH XYZ2 DD56781234H DSLESEBXXYZ1 ES=1234HEBX=567890ABHLDSSIXYZ2 DS=5678HSI=1234H:LEA,LES

  • XLAT DS:[BX+AL]AL; DS:[EBX+AL] AL ASCIIDATA SEGMENTTAB DB 0123456789ABCDEFNUM DB2 0FDATA ENDS NUMASCIIMOV AXDATAMOV DSAXMOV BXOFFSET TABMOV ALNUMXLAT ;

  • BSWAPBSWAP32.31242316158707031242316158.486

    LAHF/SAHFLAHF SAHFLAHF: EFLAGS()AHSAHF: AH EFLAGS()

  • 2PUSH PUSH ;imm16imm32mem16mem32reg16 reg32 POPPOP ;mem16mem32reg16 reg32 .SS[ESP].ESP..ESPESP

  • 16/PUSHF/POPFPUSHF POPF 32/PUSHFD/POPFD PUSHFD POPFD16/PUSHA/POPAPUSHA POPAPUSHAXCXDXBXSPBPSIDI

  • 32/PUSHAD/POPADPUSHAD POPAD3I/OI/OINOUT.IN OP1OP2OP2imm8()DX()OP1ALAXEAX.OUT OP1OP2OP1imm8DXOP2ALAXEAX

  • 81632CS MOV [BP][SI] MOV DSES

  • MOV 1234HAX MOV SS1000H PTR

  • 1ADD/ADC ADD.. = + ADC; = + CFSUB /SBBSUB; =SBB; =CF

  • 1INC/1DEC/NEGINC = + 1 DEC = 1reg memNEGNEG = 0 reg memXADDXADD reg regmem reg ( ,)

  • CMPCMP - ..

    CMPXCHG: CMPXCHG reg reg mem reg ; ALAXEAX

  • MUL/IMULIMUL ; AX /EAX AL/AX reg / mem IMUL reg reg reg mem reg imm IMUL reg reg imm reg mem imm ;163281632

  • DIV/IDIV DIV AX(16)/DX:AX (32) /EDX:EAX (64) AL/AX/EAX AH/DX/EDX IDIV 00

    mov bl,1mov al,0ffhmul bl; ax=?

    mov bl,1mov al,0ffhimul bl; ax=? 00ff ffff

  • CBWCWDCWDECDQCBW/CWD/CWDE/CDQ CBWAL816AX CWDAX1632DX:AX CWDEAX1632EAX CDQEAX3264EDX:EAX mov ax,17mov bl,-3div bl; ax=?

    mov ax,17mov bl,-3idiv bl; ax=?1100h02fbh

  • 2DAA BCD DASBCD AAABCD AASBCD AAM BCD AADBCD

  • ? .():79+46=?Mov al,79HMov bl,46HAdd al,bl; al=bfhDAA; AL=25h (BCD):Mov al,79; AL=4fhMov bl,46; bl=2ehAdd al,bl; al=7dh(2)BCD: 79BCD+46BCD->bfH->->25BCD CF=1100(1): 79+46->4fh+2eh->7dh

  • AADDIVAXBCDBCD(,DAADASAAAAAS AAMMOV AL,08HADD AL,09H; AL = 11HDAA: AL = 17D4BCD3579+2468MOV AL,BCD1; AL = 79hADD AL,BCD2; AL = E1hDAA; AL = 47h CF=1MOV BCD3,AL ;(BCD3)=47hMOV AL,BCD1+1 ;AL = 35hADC AL,BCD2+1 ; AL = 5ah(35h+24h+1)DAA ;AL = 60hMOV BCD3+1,AL ;(BCD3+1)=60h

  • mov ax,0507h mov bx,0108h add ax,bx ;ax=060fh aaa ;ax=0705h

    mov ax,0507h add ax,18h ;ax=051f aaa ;ax=0605

  • ASCIIMOV AL,5SUB AL,7 AL = FEhAASAL=08H,CF=1

    mov ax,0205hsub ax,07h ;ax=1feaas ;ax=8

    mov ax,0205hsub ax,0107h ;ax=feaas ;ax=ff08

  • BCD6*8MOV AL,06HMOV BL,08HMUL BL ; AX: AL*BL=30HAAM ; AX = 0408H mov al,05h ; mov bl,08h ; mul bl ;ax 28h aam ;ax 0400hBCD17/5=32MOV AX, 0107hMOV BL,5AAD; AX=11hDIV BL ;AL:03,AH:02

    mov ax,0507h mov bl,05h aad ;ax 39h div bl ;ax 020bh

  • CMP op1,op21.ZF=1CFOFSF02.ZF=0 op1
  • CF ZF SF OF35(03,05)101053(05,03)00003-2(03,fe)10003-128(03,80)1011-23(fe,03)0010-2127(fe,7f)0001-1-2(ff,fe)0000-2-1(fe,ff)1010

  • op1,op21.0ZF=1ZF02.CF1, CF03.1SF1SF04.OF1OF0.op1+op2

  • CF ZF SF OF11(01,01)00 0 0 01127(01,7f)01 0 1 12-1(02,ff)11 0 0 01-2(01,fe)00 0 1 0-1-1(ff,ff)11 0 1 0-1-128(ff,80)10 0 0 1-11(ff,1)11 1 0 0

  • 1MULAF PF SF ZF0CFOF00CFOF12IMULAF PF SF ZFCFOF0CFOF1

  • DIVIDIVAF PF SF ZF CFOF

  • 1// AND/OR/XORAND/OR/XOR TESTTESTNOTNOTTESTANDop1,op2reg regreg memreg immmem regmem imm

  • AND/OR/XOR/TEST0 1 x :U :,- :,NOTNEG3BD0MOV DX,3BDhBusy:IN AL,DXTEST AL,80hJZ busy

  • : 01AND0FCH MOVAL0BFH ANDAL0FCH AL=0BCH 51OR MOVAL43H OR AL20H AL=63H BCDASCII MOVAL8 OR AL30H AL=8 AL44 MOVCL0f0H XORALCL

  • /SAR/SHRSAR/SHR2/SAL/SHLSAL/SHL

  • /SAL/SHL op1 op2reg imm8reg CLmem imm8mem CLOF1CFOF011OF

  • /SAR/SHR op1 op2reg imm8reg CLmem imm8mem CLOF1SAROF0SHROF1OF

  • op1 op2 op3 reg reg imm8mem reg imm8 reg reg CL mem reg CL48616323264op3/SHLD/SHRDSHLD/SHRD

  • ROL/ROR/RCL/RCRROL/ROR/RCL/RCR op1 op2 reg imm8 mem imm8 reg CL mem CL 1ROLRORRCLOFRCR;CFOF01;ROROF0 (CF) ,OF=0.

  • AX=0012HBX=0034H8AX=1234HMOV CL8ROLAXCLADDAXBX 804863180861CL255 2n2n 81632CL

  • AX16MOV AX-1024MOV CL,4SARAXCL AX16MOV AX1024MOV CL,4SHRAXCL

  • 3BT ()CF BTS CF1 BTR CF0 BTC CF OP1OP2 Reg reg Mem regReg immMem immOp11632op2regop1op1op20-310-15Op21632

  • BSFBSF 1 BSRBSR 1 OP1OP2 Reg regReg memOp21632op10-150-31Op20op1ZF=1ZF0

  • 1MOVS/MOVSB/MOVSW/ MOVSD MOVS DS:[SI][ESI]ES:[DI][EDI]MOVSBMOVSWMOVSD

    MOVS op1 op2op1 MOVS word ptr[DI], [SI]

  • 2()LODS/LODSB/LODSW/ LODSDLODS DS:[SI] [ESI]ALAXEAXLODSBLODSW LODSD

    LODS op1 op1 LODS word ptr[SI] AX

  • 3STOS/STOSB/STOSW/STOSDSTOS ALAXEAXES:[DI][EDI]STOSBSTOSWSTOSD

    STOS op1 op1 STOS word ptr[DI] REP

  • 4CMPS/CMPSB/CMPSW/CMPSD CMPS DS:[SI][ESI]ES:[DI]([EDI])()CMPSBCMPSWCMPSDCMPS op1 op2; op1 op2op1REPEREPNE

  • 500DSPOINTLEA SI,BUFFER1LEA DI,BUFFER2MOV CX,500CLD ;REPE CMPSB JNE FOUNDSAME:RETFOUND: INC CX ;1MOV WORD PTR POINT,CXJMP SAME: ABCDEFGHIJ ABCDEFgHIJ CX= 4

  • 5SCAS/SCASB/SCASW/SCASDSCAS ALAXEAXES:[DI][EDI]SCASBSCASWSCASDSCAS op1; op1 op1REPEREPNE

  • *LEA EDI, [EBP+12]MOV ECX, [EBP+20]CLD ;MOV AL, * REPNE SCASB JE MATCH

  • 6INSB/INSW/INSDINSB DXES:[EDI]REP

  • 7 OUTSB/OUTSW/OUTSDOUTSB DS:[ESI]DX REP

  • 8REPREP MOVS REPSTOS REP OUTSB REPINSB CXECX0REP

  • 9REPE/REPZ/REPNE/REPNZREPE/REPZCMPS REPE/REPZSCAS REPNE/REPNZCMPS REPNE/REPNZSCAS REPE/REPZZF = 1CXECX0 REPNE/REPNZZF = 0CXECX0

  • 17MESS1 MESS2 DATAMOVAXDATAMOVDSAXMOVESAX LEASI MESS1LEADIMESS2MOVCX17CLDREPMOVSB

  • 1JMPJMP 3 SHORT -128127 NEAR FAR CSIPEIP JMP

  • JMP LABEL ,JMP NEAR PTR LABEL

    JMP SHORT lb-128~127JMP NEAR PTR lbJMP CXJMP WORD PTR [BX]CSEIPJMP FAR PTR lbXJMP DWORD PTR [BX]CSEIP

  • 2

    JCCF=1JB/JNAEJNCCF=0JAE/JNBJP/JPEPF=1JNP/JPOPF=0JA/JNBECF=ZF=0/JAE/JNBCF=0/JB/JNAECF=1/JBE/JNACF=1ZF=1/JE/JZZF=1/JNE/JNZZF=0/

  • 8086/8088-128--+127804861664KB324GB

    JOOF=1JNOOF=0JSSF=1JNSSF=0JG/JNLEZF=0SF=OF/JGE/JNLSF=OF/JL/JNGESFOF/JLE/JNGZF=1SFOF/JCXZCX=0CX

  • 3LOOP LOOPE/LOOPZ LOOPNE/LOOPNZ JCXZ-128+127B

    LOOP(E)CX0(E)CX10,LOOPE/LOOPZ(E)CX0ZF=1,ZF=1

    LOOPNE/LOOPNZ(E)CX0ZF=0,ZF=0

    JCXZ(E)CX=0

  • :CX=0:,, CX0:CX=CX-1,

    LOOPCX=CX-1, CX0,0loop,

  • 0 KK1 KK2 1ADDAXBXJZKK2 KK KK2 2ADDAXBXJNZKK1 KK2 KK1

  • MOV ECX,000F0000HNEXT:NOPLOOP NEXT

  • 4CALL() CALL IPEIPIPEIP CSIPEIP CSIPEIPCALL3

  • CALLJMP

  • 5RETRET/RET n IPEIPCSIPEIP RET nnn16 RETRET RETC3HCBH

  • RET RET 4

  • RET 6NEARSPA 6 B8 C10 D12

  • 6INTN INTO INT NN INTOINT4OF1IRETRETI IRETCPU6IPCS

  • 1

  • 2HLTRESETCPUCPU3CPUHLT3ESCCPUFPUFPUCPUCPU4WAIT 5LOCKLOCK6NOPHLTNOPCPUHLTCPU

  • SETxx ; xx 01H00H

    SETC/SETB/SETNAECF=1//SETNC/SETAE/SETNBCF=0//SETOOF=1SETNOOF=0SETP/SETPEPF=1SETNP/SETPOPF=0

  • 8

    SETSSF=1SETNSSF=0SETA/SETNBECF=ZF=0/SETBE/SETNACF=1ZF=1/SETE/SETZZF=1/SETNE/SETNZZF=0/SETG/SETNLEZF=0SF=OF/SETGE/SETNLSF=OF/SETL/SETNGESFOF/SETLE/SETNGZF=1SFOF/