Click here to load reader

第三章 Intel-8086 的指令系统

Embed Size (px)

DESCRIPTION

第三章 Intel-8086 的指令系统. 3-1 8086 的指令格式. 指令由 操作码 和 操作数 两部分字段组成。 如: MOV AX , 2345H MOV 为操作码; AX 和 2345H 为操作数。 操作码 指示计算机执行何种操作。 操作数 参加操作的数据对象或其所在的地址。. 8086 系列指令包括无操作数指令、单操作数指令和双操作数指令。 如 HLT ;无操作数指令 INC CX ;单操作数指令 - PowerPoint PPT Presentation

Citation preview

  • Intel-80863-1 8086 MOV AX2345H MOVAX2345H

  • 8086 HLT INC CX ADD AX , BX

  • 3-2 80861 )() MOV AL , 08H )() INC CX

  • )() I/O MOV AX[2500H] MOV AX, [BX] [2500][BX] DS

  • 28086808661

  • MOV AL, 05H: (AL)=05HMOV AX, 3064H: (AX)=3064H

  • 2) MOV BXAX MOV CL23H

  • 3[] MOV AX[3100H]

  • MOV AX[3100H] DS=6000H (63100H)=3050H AX=3050H

  • (SSES) MOV AXES:[3100H]

  • 4), BXSIDIBPSIDIBX DSBP SS

  • MOV BX[DI]DS=6000H DI=2000H62000H=50A0H (BX)=50A0H []

  • MOV AX, DS:[BP] MOV CH, SS:[SI] MOV ES:[BX], AL AL=B2HBX=1234H ES=1400H

  • SIDIBXBP816 MOV AH1000H[BX] MOV AH[BX+1000H] MOV 25H[BP] BX:[] [+]SIDIBXBP

  • 6)BXBPSIDI816 [][] [++] MOV 10H[BX][SI]CX MOV [10H+BX+SI]CX BXBP

  • 3-3 8086

  • 3.3.1 11)MOVMOV DST,SRC;6SRCDST

  • MOV MOV [1000H] , [DI] MOV AX , [DI] MOV [1000H], AX MOV DS2000H MOV AX, 2000H MOV DS , AX

  • MOV ES , DS ; MOV BX , DS MOV ES , BXCSMOV CSAX ; MOV AXCS ;

  • ()

  • 2)(PUSH POP) (STACK) (Last In First OutLIFO)

  • PUSH PUSH src (SP) (SP) - 2 ((SP)+1,(SP)) (src) SPPUSH AX

  • AX=50A0HSP=2002HSS=6000H PUSH AXPUSH BXBX=0ABCDH

  • POPPOP dst ; (dst) ((SP)+1,(SP)) (SP) (SP)+2 SP POP BX POP AX

  • PUSH [2300H]PUSH CS POP CS

  • PUSH , POP CPUPUSH CS POP CS PUSH , (SP)-2 (SP)SPSP

  • 3XCHG)XCHG dst , src(dst) (src)

  • 2 1IN CPU IN AL, data88 IN AX, data88 IN AL, DX16 IN AX, DX 16

  • 1 IN AL, 80H; 80H;2 MOV DX, 1020H; 16DX IN AX, DX; (DX)16

  • 1CPU 8086CPU816

  • 28086CPU CPUIO/MIO/M

  • MOV BX[1234H][1234H]BXCPUIO/M=0 MOV DX1234H DX IN AXDX[1234H] CPUIO/M=1

  • 2OUT CPU OUT data8 , AL8 OUT data8, AX 8 OUT DX , AL16 OUT DX , AX 16

  • 3 8086 : LEA LDS LES

  • 1LEA (Load Effective Address) LEA reg16 , memReg16 16 mem 16

  • LEA AX[DI]DI=1005H LEA AX[DI]AX=1005H LEA BX[BX+SI+0F62H]BX=0400HSI=003CH BX+SI+ 0F62H =0400H+003CH+0F62H=139EHBX=139EH

  • 2LDS (Load pointer using DS)()LDS reg16 , mem 4DS reg16mem DSmem+2

  • 3LES (Load pointer using ES )()LES reg16 mem 4ES reg16mem ESmem+2

  • : (DS)=0C 000H LDS SI, [0010H]: (SI)=0180H (DS)=2000H

  • : (DS)=B 000H (BX)=080AH LES DI, [BX]: (DI)=05A2H (ES)=4000H

  • 4 8086 1LAHFLoad AH into flagsLAHF AH AHPSW

  • 2SAHFStore AH into Flags SAHF AH PSWAH

  • 3PUSHFPush Flags PUSHF SPSP-2 SP+1SPPSW4POPFPop Flags POPF PSWSP+1SP SPSP+2

  • 3.3.2 180865:ADD(Addition) ADC(Add with Carry)INC(Increment) 1AAA(ASCII adjust for addition)ASCII()DAA(Decimal adjust for addition)()

  • 1ADDADD dest , src ; (dest) (dest)+(src)SrcdestADD CL,10ADD DX,SIADD AX, [2F00H]ADD 100H[BX], ALADD [DI], 30H

  • 816 , 812812716(-32768 ~ +32767) O=1 82551665535 C=1, S,A,P,Z)

  • 2ADC(Add with carry) ADC destsrc destdest+src+C C: C: ADD ADC CX, 300 ADC AL, BL ADC DX, [SI]

  • ADC 3212345678H0ABCDEFABHMOV AX, 1234HMOV BX, 5678HADD BX, 0EFABHADC AX, 0ABCDH

  • 3 1 INC (Increment by 1 ) INC dest (dest)dest+1 dest : S, Z, A, P, OC

  • INC DL; 81 INC SI 161 INC [2100] INC WORD PTR [2100] 1PTR INC BYTE PTR [BX][SI]

  • 2Subtraction) 80867: SUB(Subtraction) SBB(Subtraction with Borrow) DEC(Decrement by 1) 1CMP(Compare) NEG(Negate) ()AAS(ASCII Adjust for Subtraction) ASCII() DAS(Decimal Adjust for Subtraction) ()

  • 1SUB(Subtraction) SUB: destsrc destdest-srcSrcDestSUB AL, 37HSUB BX, DX : ACOPSZ

  • 2 SBB(Subtraction with borrow) SBB destsrc destdest-src-CSrcdest SBB BX, 100H SBB CX, DX SBB WORD PTR 100H[BP], 100

  • 3 1 DEC (Decrement by 1 ) DEC dest (dest)dest-1 dest: S,Z,A,P,O;C

  • 4NEG (Negate) NEG dest ; (dest) 0 - (dest) dest : : +1 ACOPSZC:0,C=0 ; C=1.O: 128 32768O=1; O=0.

  • 5) CMP(Compare)CMP destsrc dest-src ACOPSZsrcdest CMP AL,0AH;CMP CX, DI;CMP AX, [1000H];CMP [BX+5], SI ;

  • 1Z2C 3SO

  • 1111 111125511000 0010130-1261111 1101253-31111 1111 +1000 0010 =1000 0001129-127 ; C=1 O=0 1111 1101+1000 00100111 1111127127C=1O1

  • CMP CMP X1X2 SO0X1>X2X1
  • 3. 1MUL MUL SRC : AX (AL)*(SRC) DX:AX (AX)*(SRC) 2IMUL IMUL SRC MUL,

  • MUL BL ; AX (AL)*(BL) MUL BL ; AX (AL)*(BL) MUL BX; AX (AX)*(BX)16 DX (AX)*(BX)16 MUL AX;

  • 41DIVDIV SRC AL (AX)/(SRC) AH (AX)/(SRC) AX (DX:AX)/(SRC) DX (DX:AX)/(SRC)

  • 2IDIVIDIV SRC DIV

  • 3CBW CBW Convert Byte to Word AL AH4 CWD CWD Convert Word to Double Word AXDX ALAX

  • 5AAA BCDDAA BCDAAS BCDDAS BCDAAM AAD

  • 3.3.3 ANDTESTORXOReXclusive OR) NOT

  • 1 AND AND dest, src destdest src src: dest: AND AL, 0FH AND CX, DI AND SI, [2456H]

  • 2TEST TEST dest , srcdestsrcsrcdestAND TEST BH, 7TEST SI , BPTEST DI , 1030H[BX]

  • 3 OR OR dest, srcdest: src:

  • 4 XOR XOR dest , src dest: src: 1, 0

  • 5 NOT NOT dest

  • 8SAL (Shift Arithmetic Left) SAR (Shift arithmetic right) SHL (Shift logical left) SHR (Shift logical right) ROL (Rotate left) ROR (Rotate right) RCL (Rotate left with carry) RCR (Rotate right with carry)

  • reg/mem, Count Count=1CL CL SHL AH,1 SAL SI, CL SAL WORD PTR[BX+5] , 1 ROL BH , 1 ROL DX , CL

  • 1/SHL/SAL 2 MOV AH, 3FH (AH)=0011 1111B SAL AH, 1 (AH)=7EH MOV CL, 2 SAL AH,CL ; (AH)= F8H

  • 2SHR SHR BL , 1SHR AX , CLSHR BYTE PTR [DI+BP], 1 2

  • 3SAR MOV AL, 88H MOV CL2 SAR AL, CL AL=E2H

  • 4ROL ROL BH , 1ROL DX , CLROL WORD PTR 12H[DI], 1

  • 5CROR

  • 6CRCL RCL BX , 1RCL DL , CL

  • 7CRCR RCR DI, 1RCR SI , CL

  • 3.3.4 80865 MOVSMove string CMPSCompare string SCASScan string LODSLoad from string STOS Store in to string

  • MOVS 2 (1) MOVSBSIDISIDI ES: DIDS: SI SISI1DIDI 1 D=0+ , D=1-

  • MOV AX, 1000H MOV DS, AX MOV AX, 2000H MOV ES, AX MOV SI, 0013H MOV DI, 1003H MOV CX, 4 STDLP: MOVSB DEC CX JNZ LP 0 HLT

  • MOV AX, 1000H MOV DS, AX MOV AX, 2000H MOV ES, AX MOV SI, 0013H MOV DI, 1003H MOV CX, 4 LP: MOV AX[SI] MOV ES: [DI]AX DEC SI DEC DI DEC CX JNZ LP HLT

  • (2) MOVSW ESDIDSSISISI2 DIDI 2 D=0+ , D=1-

  • REP : (1) (CX)0 (CX) (CX)-1 REP (2) (CX)= 0 REPREP

  • REP MOV AX, 1000H MOV DS, AX MOV AX, 2000H MOV ES, AX MOV SI, 0010H MOV DI, 1000H MOV CX, 4 REP MOVSB HLT

  • LODS2(1) LODSB ; AL (DS:SI)(SI) (SI) 1(2) LODSW ; AX (DS:SI),SI (SI)2SIALAX

  • 3. STOS2STOSB ; (ES:DI) (AL) , (DI) (DI) 1(2) STOSW ; (ES:DI) (AX) , (DI) (DI) 2REPCX

  • 4. CMPS2(1) CMPSB (2) CMPSW (ES:DI) (DS:SI), (SI) (SI)1(DI)(DI) 1 (SI) (SI)2(DI) (DI)2

  • 5. SCAS 2 (1) SCASB AL-ES:DI DIDI1 (2) SCASW AX-ES:DI DI DI2

  • CMPSSCAS REPE / REPZREPNE / REPNZ REPE/REPZ (Equal) / REPNE/REPNZ /

  • 3.3.5

  • CPUIP 1JMP(Jump) JMP JMP LP;

  • 2 1 Z JZ/JNZ Jump on Zero; Jump on Equal C JC/JNC P JPJPE/JNPJPO Jump on Parity; Jump on Even ;Jump on Odd

  • S JS/JNS O JO/JNO 2 JBJNAEJNBJAE JBEJNAJNBEJA JBJump on Below; JAEJump on Above or EqualJZJE/JNZJNE

  • 3 JLJNGE/JNLJGE JLEJNG/JNLEJG L LessG Great E Equal-128~+127

  • ( ) CALL

    RETreturn

  • 1 LOOP : CX CX- 1 (CX)0 ; LOOP

  • MOV AX,0000H MOV BX,0001H MOV CX,000AH LP: ADD AX,BX LOOP LP

  • 2 1LOOPZ/LOOPE : CX CX- 1 CX0Z=1; LOOP

  • 2LOOPNZ/LOOPNE : CX CX- 1 CX0Z=0; LOOP -128~127

  • interrupt 1 INT n n0~255 2IRET

  • CLC Clear carry flag ) C STCSet carry flag ) C CMCComplement carry flagC CLDClear direction flag )D STDSet direction flag )D CLIClear interrupt flag )I STI Set interrupt enable flag )I3.3.6

  • NOPNo operation ) HLTHalt ) CPU WAIT CPU ESC LOCKLock bus )