主讲人 刘雪洁
Post on 05-Jan-2016
72 Views
Preview:
DESCRIPTION
TRANSCRIPT
-
Assembly Language Programming
-
2 80x862.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8
-
2.1 [] OPD OPS [] [] OPD []
-
2.2 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.2.7 2.2.8
-
2.2.1 816
-
MOV AX 10AX=10
10AXAX=000AH
-
2.2.2 AX=BX= MOV AX1234H MOV BX5678H ADD AXBX MOVADDAXBXAXBX
-
1234HAX 5678HBX AX+BXAXAX=68ACHBX=5678H
-
2.2.3 [EA] EA
-
AX=1212HBUF2000HDS=3000H32000H=4545HMOV AX BUFMOV AX , [2000H]AX=?
32000HAXAX=4545H
-
2.2.4 EA[R]REA
-
EAEA=[SI]SI [DI]DI[BX]BX[BP]BP
-
MOV AX [BP] AX=?
20030HAXAX=1234HAX=0BP=0030HSS=2000H20030H=1234H
-
2.2.5 EAX[R]X816RXEA
-
EA
-
AX=0040HBX=0030HDS=2000H20036H=0050H ADD 6[BX]AX(AX=?BX=?DS=? 20036H=?
20036H+AX 20036HAX=0040HBX=0030HDS=2000H20036H=0090H
-
2.2.6 EAX [BR+IR]BRIRXEA
-
EA
-
2.2.7 BPPASS4EAPADS4EA
-
MOVAXDS[BP] MOVCXSS[SI] DSSSPA4EA2PA1 =DS4+[BP]PA2 =SS4+[SI
-
2.2.8 CALLIP816 +IPEA IP
-
IP8816 JMP NEAR PTR PROGIA JMP SHORT QUEST PROGIAQUEST16NEAR PTR;8SHORT
-
IP JMPCALL
-
(DS)=2000H,(BX)=1256H,=20A1H,(232F7H)=3280H,(264E5H)=2450H. JMP BX BX(IP)=1256H JMP TABLE[BX] (IP)=(16d*(DS)+BX+) =(20000+1256+20A1) =(232F7) =3280H
-
IPCS JMP FAR PTR NEXTROUTINT NEXTROUTINTFAR PTR
-
IPCS JMP DWORD PTR [INTERS+BX] [INTERS+BX]DWORD PTREAIPCS
-
2.3 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5
-
2.3.1 1MOV2XCHG3 XLAT
-
1MOVMOV OPDOPSOPSOPDMOV :CS .
-
MOV AXBUF BUFMOV BH[DI] MOV DIES3[SI] MOV BP3[BX+SI]MOV BUFADLBUFAMOV [BP]AXSSMOV DS[BP]DLMOV BUFDSBUFMOV ES BUF
-
2XCHGXCHG OPDOPSOPDOPSOPSOPD2.9MOVAX5678HAX=5678HMOVBX0FFFFHBX=0FFFFHXCHGAXBXAX=0FFFFH BX=5678H
-
3 XLATXLAT OPSXLATBX,ALAL[BX+AL]AL
-
2.3.2 1PUSH2POP
-
1PUSH PUSH OPS2: (SP)-SP (OPS)15~8[SP] (SP)-SP (OPS)7~0[SP]
-
2POP POP OPD CS2POPPUSH [SP]OPD7~0SP+SP [SP]OPD15~8SP+SP
-
2.3.3 1AHLAHF2AHSAHF3PUSHF4POPF
-
1AHLAHFLAHF8AHFLAGS7-0AHFLAGS=0485HAX=0FFFFH LAHFFLAGS=0485HAX=085FFH
-
2AHSAHFSAHFAH88AH FLAGS7-0SAHFLAHF
-
3PUSHFPUSHFFLAGSSP
-
4POPF SPFLAGSPOPFPUSHFTFPUSHFFLSGSSPPOP AXSPAXOR AX 0100HD8=TF=1PUSH AXAXSPPOPFSPFLAGSAXFLAGS
-
2.3.4 1 LEA2LDS3LES
-
1 LEA LEA OPDOPS2.15MOV BX0100HBX=0100HMOV SI 0210HSI =0210HLEA BX1234[BX+SI]BX=1544H
-
2LDSLDS OPDOPSDSOPSOPDOPS+2DS
-
3LESLES OPDOPSOPSOPDOPS+2ES
-
2.3.5 1IN2OUT
-
1IN 1INALPORT PORTAL 2INAXPORT PORTAX 3INALDX [DX]AL 4INAXDX [DX]AL
-
2OUT 1OUTPORTAL ALPORT 2OUTPORTAX AXPORT 3OUTDXAL AL[DX] 4OUTDXAX AX[DX]
-
80x86I/0CPUINOUTINI/0CPUOUTCPUI/0CPU(ALAX)65536I/00000H-FFFFH256256DXINOUTIN AX28H MOV DAAX 28AXDAOUT 5AL AL5.
-
2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6
-
2.4.1 11 INC2ADD3ADC
-
11 INCINC OPD1OPD+1OPDINC INC BXBX+1BX1
-
2ADDADD OPD OPS OPD+OPSOPD3ADCADC OPDOPS OPD+OPS+CF OPD
-
MOV AX4652H (AX)=4652H ADD AX0F0F0H(AX)=3742H CF=1 MOV DX0234H(DX)=0234H ADC DX0F0F0H(DX)=0F325H CF=0
-
2.4.2 11DEC2SUB3 SBB4NEG5 CMP
-
11DECDEC OPD 1OPD1OPDDEC DEC CXCX1CX1DEC
-
2SUBSUB OPDOPS OPDOPSOPD MOV AX 5678HAX=5678H SUB AX 1234HAX=4444H MOV BX 3354HBX=3354H SUB BX 3340HBX=0014H
-
3 SBBSBB OPD OPSCF OPDOPSCF OPD4NEGNEG OPD1 0FFFF -OPD+1OPD
-
MOVAX0FF64H 1111 1111 0110 0100 NEGAL AX=0FF9CH (1001 1100) SUBAL9DH AX=0FFFFH CF=1 NEGAXAX=0001H DECALAX=0000H NEGAXAX=0000H
-
5 CMPCMP OPDOPS OPDOPSAL CMP AL50(AL)50 JBBELOWAL=50(AL)50AL INCAHAH+1AHBELOW
-
2.4.3 1MUL2IMUL
-
1MUL MUL OPS ALOPSAXAXOPSDXAX AL* OPS AX AX * OPS DXAX 0A3H11H MOVAL0A3HAL=0A3H MOVBL 11HBL=11H MULBL AX=0AD3H
-
2IMULIMUL OPSAL*OPSAX AX*OPSDXAXIMULMUL 0B4H11H MOVAL0B4HAL=B4H MOVBL11HBL=11H IMULBL AX=0FAF4H
-
2.4.4 1DIV2IDIV
-
1DIVDIV OPS :(AX)/(OPS) AL()AH() :(DXAX)/(OPS) AX()DX()0400H/0B4H MOVAX0400HAX=0400H MOVBL0B4HBL=0B4H DIVBL (AL)=05H(AH)=7CH
-
2IDIVIDIV OPS :(AX)/(OPS)AL(),AH() :(DX,AX)/(OPS)AX(),DX()DIVIDIV0400H/0B4H MOVAX0400HAX=0400H MOVBX0B4HBX=0B4H IDIVBX AL=0F3HAH=24H
-
2.4.5 1CBW2CWD
-
1CBWCBWALAH MOVAL0A5HAL=0A5H CBW AX=0FFA5H ADDAL70HAL=25H CBW AX=0025H
-
2CWDCWDAXDX MOVDX 0DX=0 MOVAX 0FFABHAX=0FFABH CWDDX=0FFFFH AX=0FFABH
-
2.4.6 1BCD2BCD
-
1DAADAAAL49AF=1AL=AL+6AF=1AL>=0A0HCF=1AL=AL+60HCF=1SFZFPFBCD MOV AL68HAL=68HBCD68 MOV BL28HBL=28HBCD28 ADD ALBL:(AL)=68H+28H=90H DAA AL=96H BCD68+28=961BCD
-
2DASDASAF=1AL49AL=AL6AF=1AL>=0A0HCF=1AL=AL60HCF=1SFZFPFBCD MOVAL67H ;(AL)=67H,BCD67 MOVBL28H ;(BL)=28H,BCD28 SUBALBL ; (AL)=67H-28H=3FH DAS AL=39H BCD6728=39
-
2BCD1BCDAAAAAA AL49AF=1 AL=AL+6 AH=AH+1 AF=CF=1 AL4 CF=AF=0 AL4
-
2BCDAASAAS AL49AF=1AL=AL6 AH=AH1 AF=CF=1 AL4 CF=AF=0 AL4 OFPFSFZF
-
3BCDAAMAAM AXAL10 AL0AHAHAL AHALAFCFOFPFSFZF
-
4BCDAADAAD AX AL=AL+AH*0AH AH=0
-
2.5 2.5.1
2.5.2
-
2.5.1 1NOT2AND3TEST4OR5XOR
-
1NOTNOT OPDOPDOPD MOV AX878AH(AX)=878AH 1000 0111 1000 1010 B NOT AX AX=7875H
-
2ANDAND OPD OPS OPDOPSOPD011=110=001=000=0AL37 MOVAL0FFH ANDAL77H ;0111 0111 B
-
3TESTTEST OPDOPS OPDOPSAX1200L TESTAX1000H ; 0001 0000 0000 0000B JNE L
-
4OROR OPDOPS OPDOPSOPD11=110=101=100=0AL371 MOVAL0 OR AL88H
-
5XOR XOR OPDOPS OPD(OPS) OPD11=010=101=100=0 MOVAL45HAL=45H XORAL31HAL=74H
-
2.5.2 [] OPD1 [] OPDCL1CL0~255816
-
1SALSHLSAL OPD1 SHL OPD1 SAL OPDCL SHL OPDCLOPDCLCF
2SARSAR OPD1SAR OPDCLOPDCLCF
-
MOVBH0F4H (BH)=0F4H,1111 0100B MOVCL 2CL=2 SARBH CLBH=0FDHCF=0SARBHCLBHBHSAR2nn
-
3SHRSHR OPD1SHR OPDCLOPDCLCF
-
4ROLROL OPD1ROL LPDCLCLCF
-
5ROR ROR OPD1ROR OPDCLCLCF
-
6RCL RCL OPD 1 RCL OPDCLCFCL
-
7RCRRCR OPD1 RCR ODCLCF
-
2.6 8086
-
MOVS CMPS SCAS LODS STOS INS OUTS REP REPE/REPZ / REPNE/REPNZ /
-
1REPREPZREPNZ1REP :REPMOVSSTOS LODSINSOUTS REP string primitive string primitiveMOVSLODS (1)(CX)=0REP (2)(CX)=(CX)1 (3) (4)(1)-(3)
-
2REPZ/REPE:CMPSSCAS REPE(REPZ) string primitive string primitiveCMPSSCAS (1)(CX)=0ZF=0 (2)(CX)=(CX)1 (3) (4)(1)-(3) REP(CX)=0ZF=0
-
3REPNZ/REPNE :CMPSSCAS REPE(REPZ) string primitive string primitiveCMPSSCAS (1)(CX)=0ZF=1 (2)(CX)=(CX)1 (3) (4)(1)-(3) REP(CX)=0ZF=1
-
2MOVS MOVS DSTSRC MOVSB MOVSW,.: MOVS ES:BYTE PTR[DI],DS:[SI]SIDI DS[SI]ES[DI] DF=0SIDI DF=1SIDI
-
(SI)(DI)1 (SI)(DI)2 REPREP I.(); II.(); .; .
-
17 data segment mess1 db personal computer$data endsextra segment mess2 db 17 dup(?)extra endscode segment assume cs:code,ds:data,es:extra mov ax,data mov ds,ax mov ax,extramov es,ax lea si,mess1 lea di,mess2 mov cx,17 cld rep movsb code ends
-
3CMPS CMPS SRCDST CMPSB CMPSWSIDI [SI][DI] DF=0SIDIDF=1SIDI (SI)(DI)1 (SI)(DI)2
-
4SCAS SCAS DST SCASB SCASWALAXDI AL[DI]AX[DI] DF=0DIDF=1DI (SI)(DI)1 (SI)(DI)2
-
34REPEREPNE REPNZ SCASB REPE CMPSB
-
5LODS LODS SRC LODSB LODSWSIALAX [SI]AL[SI]AX SIDF=0SIDF=1SI (SI)(DI)1 (SI)(DI)2
-
6STOS STOS DST STOSB STOSWALAXDI AL[DI]AX[DI] DIDF=0DIDF=1DI (SI)(DI)1 (SI)(DI)2
-
(1)DSES MOVS [DI]ES[SI] (2)(CX)1
-
2.7 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5
-
2.7.1 123. [ ] IPIP
-
1
- 2AX CMPAX BX AXBX JNBNEXT AX>=BXNEXT XCHGAXBX AX
-
3.
AX CMPAXBXAXBX JNLNEXT AX>=BXNEXT XCHGAXBXAX
-
2.7.2 JMP SHORT OPR(IP8) JMP NEAR PTR OPR(IP16)JMP WORD PTR OPR JMP FAR PTR OPR JMP DWORD PTR OPR (EA)->(IP),(EA+2)->CS
-
2.7.3 1LOOP2/LOOPE3/LOOPNE 4CXJCXZ
-
1LOOP LOOP CX1 0LOOP DEC CX JNE 2/LOOPE LOOPE LOOPZ CX1 0ZF=1
-
3/LOOPNE LOOPNE LOOPNZ CX10ZF=04CXJCXZ JCXZ CX10
-
ASCII_STR(ASCII20H)NOT_FOUND MOV CX,L MOV SI,-1 MOV AL,20HNEXT:INC SI CMP AL,ASCII_STR[SI] LOOPNE NEXT JNZ NOT_FOUND NOT_FOUND:
- 2.7.4 1CALL 1 CALL DST PUSH (IP) (IP)
- (2) CALL DST PUSH (IP) (IP)
- (4) CALL DST PUSH (CS) PUSH (IP) (IP)
-
2.7.5 CPU(IP)(CS)(FLAGS)(IP)(CS)(FLAGS)
-
1INTINT n;n0-255FLAGSSP0 IFTF CS SP4*n+2 CS IP SP4*n IP2IRETIRETSPIP SP CS SP FLAGS
-
2.8 2.8.1
2.8.2 CPU
-
2.8.1 1 CLC 0 CMC STC 12 CLD 0 STD 13 CLI 0 STI 1
-
2.8.2 CPU1NOP2LOCK3HLT
-
4ESC5WAITWAIT
-
80x86 80x86
top related