Click here to load reader
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
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/