




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第3 3章章 80 x8680 x86指令系統(tǒng)指令系統(tǒng) 3 .1 8086/80883 .1 8086/8088指令格式指令格式 3 .1 .1 3 .1 .1 操作碼與地址碼操作碼與地址碼8086808680888088的指令格式的指令格式操作碼字段操作碼字段操作數(shù)字段操作數(shù)字段3 .1 .2 3 .1 .2 單操作數(shù)、雙操作數(shù)及多操作數(shù)單操作數(shù)、雙操作數(shù)及多操作數(shù) 1.1.單操作數(shù)單操作數(shù) 在一條指令中僅指明一個(gè)操作數(shù)。如:在一條指令中僅指明一個(gè)操作數(shù)。如:PUSH AXPUSH AX 2. 2.雙操作數(shù)雙操作數(shù)在一條指令中同時(shí)指出兩個(gè)操作數(shù)。如:在一條指令中同時(shí)指出兩個(gè)操作數(shù)。如:MO
2、V BX,CXMOV BX,CX 3. 3.多操作數(shù)多操作數(shù)n在一條指令中,同時(shí)指出二個(gè)以上操作數(shù)。在一條指令中,同時(shí)指出二個(gè)以上操作數(shù)。n源操作數(shù)源操作數(shù)指令執(zhí)行前后值不變(一般是第二指令執(zhí)行前后值不變(一般是第二個(gè)操作數(shù))個(gè)操作數(shù))n目的操作數(shù)目的操作數(shù)指令執(zhí)行前后值改變(一般是第指令執(zhí)行前后值改變(一般是第一個(gè)操作數(shù))一個(gè)操作數(shù)) 3 .1 .3 80863 .1 .3 808680888088的操作數(shù)的操作數(shù)n8086808680888088的操作數(shù)分為以下幾類:的操作數(shù)分為以下幾類: 1.1.立即數(shù)立即數(shù) 是指令中參與操作且緊跟在操作碼后面的常數(shù)。是指令中參與操作且緊跟在操作碼后面的
3、常數(shù)。立即數(shù)只立即數(shù)只能作為源操作數(shù)使用。能作為源操作數(shù)使用。 2.2.寄存器操作數(shù)寄存器操作數(shù)操作數(shù)存放在寄存器。操作數(shù)存放在寄存器。 3.3.存儲(chǔ)器操作數(shù)存儲(chǔ)器操作數(shù) 操作數(shù)存放在內(nèi)存單元中,操作數(shù)字段包含內(nèi)存單元地址。操作數(shù)存放在內(nèi)存單元中,操作數(shù)字段包含內(nèi)存單元地址。 存儲(chǔ)器操作數(shù)的偏移地址用存儲(chǔ)器操作數(shù)的偏移地址用“ ”括起來括起來。 4.I4.IO O端口操作數(shù)端口操作數(shù) 指令中參與操作的數(shù)據(jù)來源于或者要傳送到指令中參與操作的數(shù)據(jù)來源于或者要傳送到I IO O端口。端口。 3 .2 80863 .2 808680888088指令尋址方式指令尋址方式n尋址方式尋址方式尋找操作數(shù)(包括
4、數(shù)據(jù)和地址)尋找操作數(shù)(包括數(shù)據(jù)和地址)有各種方法。有各種方法。n尋址尋址就是尋找操作數(shù)(數(shù)據(jù)尋址)或者就是尋找操作數(shù)(數(shù)據(jù)尋址)或者操作數(shù)地址(地址尋址)。操作數(shù)地址(地址尋址)。尋址方式有兩大類:尋址方式有兩大類:n操作數(shù)的尋址方式操作數(shù)的尋址方式與數(shù)據(jù)有關(guān),與數(shù)據(jù)有關(guān),8 8種種n轉(zhuǎn)移地址的尋址方式轉(zhuǎn)移地址的尋址方式與程序轉(zhuǎn)移有關(guān),與程序轉(zhuǎn)移有關(guān),4 4種種(一)操作數(shù)的尋址方式(一)操作數(shù)的尋址方式與數(shù)據(jù)有關(guān)與數(shù)據(jù)有關(guān)(1 1)隱含尋址(固定尋址)隱含尋址(固定尋址)(2 2)立即尋址)立即尋址(3 3)寄存器尋址)寄存器尋址(4 4)直接尋址)直接尋址(5 5)寄存器間接尋址)寄存器
5、間接尋址(6 6)寄存器相對(duì)尋址)寄存器相對(duì)尋址(7 7)基址變址尋址)基址變址尋址(8 8)相對(duì)基址變址尋址)相對(duì)基址變址尋址存儲(chǔ)器尋址存儲(chǔ)器尋址 3 .2 .1 3 .2 .1 隱含尋址隱含尋址n隱含尋址隱含尋址有少數(shù)指令,操作數(shù)不在指令中出現(xiàn)。有少數(shù)指令,操作數(shù)不在指令中出現(xiàn)。 例:例:PUSH AXPUSH AX; 隱含目的操作數(shù)是棧頂字單元,隱含目的操作數(shù)是棧頂字單元, 表示把表示把AXAX的內(nèi)容送入堆棧棧頂?shù)膬?nèi)容送入堆棧棧頂 POP BX POP BX; 隱含源操作數(shù)是棧頂字單元隱含源操作數(shù)是棧頂字單元 表示把堆棧棧頂?shù)膬?nèi)容彈出并送入表示把堆棧棧頂?shù)膬?nèi)容彈出并送入B BX X 3
6、.2 .2 3 .2 .2 立即尋址立即尋址n8 8位或位或1616位的操作數(shù)直接包含在指令中。位的操作數(shù)直接包含在指令中。n例:例:MOV BLMOV BL,C3C3H H ;將;將8 8位立即數(shù)位立即數(shù)C3C3H H傳送到傳送到BLBL中中 MOV AX MOV AX,20205 50H 0H ;將;將1616位立即數(shù)位立即數(shù)20205 50H0H傳送到傳送到AXAX中中n注意:注意:1 1、只能用于源操作數(shù)字段,不能用于目的操作數(shù)字段、只能用于源操作數(shù)字段,不能用于目的操作數(shù)字段 MOV MOV C3C3H H,BXBX; (錯(cuò)誤)(錯(cuò)誤) 2 2、源和目的操作數(shù)數(shù)據(jù)位數(shù)一致、源和目的操
7、作數(shù)數(shù)據(jù)位數(shù)一致 MOV AH MOV AH,20205 50H0H; (錯(cuò)誤)(錯(cuò)誤) 3 .2 .3 3 .2 .3 寄存器尋址寄存器尋址n操作數(shù)就存放在寄存器內(nèi),運(yùn)算速度較快。操作數(shù)就存放在寄存器內(nèi),運(yùn)算速度較快。n例:例:MOV BXMOV BX,CX CX ;將;將CXCX寄存器中的內(nèi)容復(fù)制到寄存器中的內(nèi)容復(fù)制到BXBX中。中。 MOV DS MOV DS,AX AX ;將;將AXAX中的內(nèi)容復(fù)制到中的內(nèi)容復(fù)制到DSDS段寄存器中。段寄存器中。n注意:注意:1 1、CSCS不能用于目的操作數(shù)字段不能用于目的操作數(shù)字段 MOV CS MOV CS,BXBX; (錯(cuò)誤)(錯(cuò)誤) 2 2、
8、源和目的操作數(shù)數(shù)據(jù)位數(shù)一致、源和目的操作數(shù)數(shù)據(jù)位數(shù)一致 MOV AH MOV AH,BXBX; (錯(cuò)誤)(錯(cuò)誤) 3 .2 .4 3 .2 .4 存儲(chǔ)器尋址存儲(chǔ)器尋址n直接尋址、寄存器間接尋址、寄存器相對(duì)尋址、基址變址直接尋址、寄存器間接尋址、寄存器相對(duì)尋址、基址變址尋址、相對(duì)基址變址尋址,共有尋址、相對(duì)基址變址尋址,共有5 5種方式。種方式。n特點(diǎn):操作數(shù)在內(nèi)存單元中,尋址就是尋找內(nèi)存單元地址。特點(diǎn):操作數(shù)在內(nèi)存單元中,尋址就是尋找內(nèi)存單元地址。 1.1.直接尋址直接尋址n例:例:MOV AXMOV AX,DSDS:2000H 2000H ; MOV AXMOV AX,2000H 2000H
9、 ; 將內(nèi)存中邏輯地址為將內(nèi)存中邏輯地址為DSDS:2000H2000H字單元的內(nèi)容傳送到字單元的內(nèi)容傳送到AXAX。默認(rèn)的操作數(shù)段基址由。默認(rèn)的操作數(shù)段基址由DSDS段寄存器確定,段寄存器確定,數(shù)據(jù)數(shù)據(jù)段寄存器段寄存器DSDS可以缺省可以缺省。n注意:注意:1 1、數(shù)據(jù)若存放在數(shù)據(jù)段以外的其他段中,則必須指定段、數(shù)據(jù)若存放在數(shù)據(jù)段以外的其他段中,則必須指定段,如:如:MOV AXMOV AX,ESES:2000H 2000H ;2 2、操作數(shù)地址由變量表示時(shí)要注意變量屬性、操作數(shù)地址由變量表示時(shí)要注意變量屬性 如:如:VALUE DB 10HVALUE DB 10H;給變量;給變量VALUE
10、VALUE分配一個(gè)字節(jié),并分配一個(gè)字節(jié),并賦予值賦予值10H10H MOV AL,VALUE; MOV AL,VALUE; (正確)(正確) MOV AX,VALUE; MOV AX,VALUE; (錯(cuò)誤)(錯(cuò)誤) 2 2寄存器間接尋址寄存器間接尋址EA= PA=EA= PA=例:例:MOV AXMOV AX,BX BX MOV AX MOV AX,BP BP 若若DS=3000HDS=3000H,SS=1200HSS=1200H,BX=1000HBX=1000H,BP=2200HBP=2200H則則源操作數(shù)的源操作數(shù)的PA=PA= 源操作數(shù)的源操作數(shù)的PA=PA=通常規(guī)定:通常規(guī)定:若用間址
11、寄存器若用間址寄存器SISI、DIDI、BXBX,則應(yīng)使用數(shù)據(jù)段寄存器,則應(yīng)使用數(shù)據(jù)段寄存器DSDS。若用間址寄存器若用間址寄存器BPBP,則應(yīng)使用堆棧段寄存器,則應(yīng)使用堆棧段寄存器SSSS。BXBXBPBPSISIDIDIDSDS* *10H+BX10H+BXSSSS* *10H+BP10H+BPDSDS* *10H+SI10H+SIDSDS* *10H+DI10H+DIDSDS* *10H+BX10H+BXSSSS* *10H+BP10H+BP2 2寄存器間接尋址寄存器間接尋址注意:注意:(1 1)不允許使用不允許使用AXAX,CXCX,DXDX存放存放EAEA(偏移地址)(偏移地址) 例
12、:例: MOV AXMOV AX,CX CX (錯(cuò)誤)(錯(cuò)誤)(2 2)源和目的的字長(zhǎng)一致)源和目的的字長(zhǎng)一致 例:例: MOV MOV DLDL,SI SI 表示把表示把SISI的的PAPA位置的一個(gè)位置的一個(gè)字節(jié)字節(jié)送入送入DL DL MOV MOV DXDX,SI SI 表示把表示把SISI的的PAPA位置的一個(gè)位置的一個(gè)字字送入送入DL DL (3 3)可使用段跨越前綴)可使用段跨越前綴 例:例:MOV MOV ES:BXES:BX,AXAX 則則ES:BXES:BX的的PA=PA=(ESES)* *10H+10H+(BXBX)3. 3. 寄存器相對(duì)尋址寄存器相對(duì)尋址EA= EA= P
13、A=PA=例:例:MOV AXMOV AX,BXBX5 5 等價(jià)于等價(jià)于 MOV AXMOV AX,5BX5BX注意:位移量可在前、后、內(nèi)加、外加。注意:位移量可在前、后、內(nèi)加、外加。例:例:MOV AXMOV AX,DATBXDATBX等價(jià)于等價(jià)于 MOV AXMOV AX,BXBXDATDAT若若DS=2000HDS=2000H,BX=1000HBX=1000H,DAT=3000HDAT=3000H則則DATBXDATBX的的PA=DSPA=DS* *10H+BX+DAT10H+BX+DATBX+ BX+ 一個(gè)一個(gè)8 8或或1616位的位移量位的位移量BP+ BP+ 一個(gè)一個(gè)8 8或或16
14、16位的位移量位的位移量SI+ SI+ 一個(gè)一個(gè)8 8或或1616位的位移量位的位移量DI+ DI+ 一個(gè)一個(gè)8 8或或1616位的位移量位的位移量DSDS* *10H+BX+ 10H+BX+ 一個(gè)一個(gè)8 8或或1616位的位移量位的位移量SSSS* *10H+BP+ 10H+BP+ 一個(gè)一個(gè)8 8或或1616位的位移量位的位移量DSDS* *10H+SI+ 10H+SI+ 一個(gè)一個(gè)8 8或或1616位的位移量位的位移量DSDS* *10H+DI+ 10H+DI+ 一個(gè)一個(gè)8 8或或1616位的位移量位的位移量4 4基址變址尋址基址變址尋址EA= + EA= + 例:例: MOV AXMOV
15、AX,BXSIBXSI等價(jià)于等價(jià)于 MOV AXMOV AX,BXBXSISI表示將表示將BXBX與與SISI之和所指定的字存儲(chǔ)單元內(nèi)容送之和所指定的字存儲(chǔ)單元內(nèi)容送AXAX。注意:注意:(1 1)必須是一個(gè)基址寄存器和一個(gè)變址寄存器的)必須是一個(gè)基址寄存器和一個(gè)變址寄存器的組合組合例:例:MOV AXMOV AX,BXBP BXBP (錯(cuò)誤)(錯(cuò)誤) MOV AXMOV AX,SIDI SIDI (錯(cuò)誤)(錯(cuò)誤)(2 2)可使用段跨越指定段地址)可使用段跨越指定段地址BX SIBX SIBP DIBP DI 5 5相對(duì)基址變址尋址相對(duì)基址變址尋址EA= + +EA= + +例:例:MOV A
16、XMOV AX,1234HBX1234HBXSI SI 將將BXBX、SISI與與1234H1234H之和所指定的字存儲(chǔ)單元內(nèi)容之和所指定的字存儲(chǔ)單元內(nèi)容送送AXAX。 MOV AXMOV AX,DATEBXDATEBXSISI等價(jià)于等價(jià)于 MOV AXMOV AX,BXBXSISIDATEDATE等價(jià)于等價(jià)于 MOV AXMOV AX,DATEBXSIDATEBXSI位移量用變量位移量用變量DATEDATE表示。表示。BX SI BX SI 一個(gè)一個(gè)8 8位位移量位位移量BP DI BP DI 一個(gè)一個(gè)1616位位移量位位移量 例:例: MOV AX MOV AX,BXSI6BXSI6 MO
17、V AX MOV AX,6BXSI6BXSI MOV AX MOV AX,6BX6BXSISI MOV AX MOV AX,BXBXSISI66它們之間是等效的。它們之間是等效的。尋址方式有兩大類:尋址方式有兩大類:n操作數(shù)的尋址方式操作數(shù)的尋址方式與數(shù)據(jù)有關(guān),與數(shù)據(jù)有關(guān),8 8種種n轉(zhuǎn)移地址的尋址方式轉(zhuǎn)移地址的尋址方式與程序轉(zhuǎn)移有關(guān),與程序轉(zhuǎn)移有關(guān),4 4種種(二)轉(zhuǎn)移地址的尋址方式(二)轉(zhuǎn)移地址的尋址方式與程序轉(zhuǎn)移有關(guān)與程序轉(zhuǎn)移有關(guān)段地址在段地址在CSCS中,偏移地址在中,偏移地址在IPIP中,改變中,改變CS:IPCS:IP,程序走向改變。,程序走向改變。(1 1)段內(nèi)直接尋址)段內(nèi)直接
18、尋址(2 2)段內(nèi)間接尋址)段內(nèi)間接尋址(3 3)段間直接尋址)段間直接尋址(4 4)段間間接尋址)段間間接尋址段內(nèi):轉(zhuǎn)移指令與轉(zhuǎn)向的目標(biāo)指令在同一代碼段(段內(nèi):轉(zhuǎn)移指令與轉(zhuǎn)向的目標(biāo)指令在同一代碼段(64K64K)(CSCS)不變,改變()不變,改變(IPIP)段間:轉(zhuǎn)移指令與轉(zhuǎn)向的目標(biāo)指令在兩個(gè)代碼段(段間:轉(zhuǎn)移指令與轉(zhuǎn)向的目標(biāo)指令在兩個(gè)代碼段(64K64K)(CSCS)和()和(IPIP)都改變)都改變以無條件轉(zhuǎn)移指令為例:以無條件轉(zhuǎn)移指令為例: JMP JMP 目標(biāo)標(biāo)號(hào)目標(biāo)標(biāo)號(hào) ;表示程序的執(zhí)行位置無條件跳轉(zhuǎn)到;表示程序的執(zhí)行位置無條件跳轉(zhuǎn)到 目標(biāo)標(biāo)號(hào)代表的地址處目標(biāo)標(biāo)號(hào)代表的地址處 類
19、型類型 PTR PTR 變量變量/ /標(biāo)號(hào)標(biāo)號(hào) ;表示臨時(shí)修改變量的類型;表示臨時(shí)修改變量的類型(1 1)段內(nèi)直接尋址)段內(nèi)直接尋址當(dāng)前當(dāng)前CSCS不變,不變,新的偏移地址新的偏移地址= =當(dāng)前(當(dāng)前(IPIP)+ + 一個(gè)一個(gè)8 8位或位或1616位的位移量位的位移量例:若(例:若(CSCS)=2000H=2000H,(,(IPIP)=1256H=1256H JMP 1001HJMP 1001H則程序轉(zhuǎn)向去執(zhí)行則程序轉(zhuǎn)向去執(zhí)行 PA=PA=(CSCS)* *10H+10H+(IPIP)+1001H +1001H 位置的位置的指令指令(2 2)段內(nèi)間接尋址)段內(nèi)間接尋址當(dāng)前當(dāng)前CSCS不變不變
20、,新的偏移地址(,新的偏移地址(IPIP)是一個(gè)寄存器或一個(gè)存儲(chǔ))是一個(gè)寄存器或一個(gè)存儲(chǔ)單元的內(nèi)容單元的內(nèi)容例:若(例:若(DSDS)=2000H=2000H,(,(BXBX)=1256H=1256H,(,(SISI)=528FH=528FH,DISP=20A1HDISP=20A1H,(,(232F7H232F7H)=3280H=3280H,(,(264E5H264E5H)=2450H=2450H JMP BXJMP BX指令執(zhí)行后,新的(指令執(zhí)行后,新的(IPIP)= =(BXBX)=1256H=1256H JMP WORD PTR DISPBXJMP WORD PTR DISPBX指令執(zhí)行
21、后,新的(指令執(zhí)行后,新的(IPIP)是一個(gè)存儲(chǔ)單元的內(nèi)容,該)是一個(gè)存儲(chǔ)單元的內(nèi)容,該存儲(chǔ)單存儲(chǔ)單元的元的PA=PA=(DSDS)* *10H+10H+(BXBX)+DISP=232F7H+DISP=232F7H新的(新的(IPIP)= =(232F7H232F7H)=3280H=3280H JMP WORD PTR BXSIJMP WORD PTR BXSI指令執(zhí)行后,新的(指令執(zhí)行后,新的(IPIP)是一個(gè)存儲(chǔ)單元的內(nèi)容,該存儲(chǔ)單)是一個(gè)存儲(chǔ)單元的內(nèi)容,該存儲(chǔ)單元的元的PA=PA=(DSDS)* *10H+10H+(BXBX)+ +(SISI)=264E5H=264E5H新的(新的(IP
22、IP)= =(264E5H264E5H)=2450H=2450H(3 3)段間直接尋址)段間直接尋址指令直接給出一個(gè)新的指令直接給出一個(gè)新的CSCS值和新的值和新的IPIP值值例:例: JMP 8000H:1200HJMP 8000H:1200H則程序轉(zhuǎn)向去執(zhí)行則程序轉(zhuǎn)向去執(zhí)行 PA=8000HPA=8000H* *10H+1200H 10H+1200H 位置的指令位置的指令(4 4)段間間接尋址)段間間接尋址轉(zhuǎn)向的段地址和偏移地址都在內(nèi)存中,先找到內(nèi)存中的這個(gè)轉(zhuǎn)向的段地址和偏移地址都在內(nèi)存中,先找到內(nèi)存中的這個(gè)儲(chǔ)存位置,然后再從中取出儲(chǔ)存位置,然后再從中取出4 4個(gè)字節(jié),低位字是新的個(gè)字節(jié),
23、低位字是新的IPIP,高位字是新的高位字是新的CSCS例:若(例:若(DSDS)=4000H=4000H,(,(BXBX)=1212H=1212H,(,(41212H41212H)=1000H=1000H,(41214H41214H)=4A00H=4A00H JMP JMP D DWORD PTR BXWORD PTR BX指令執(zhí)行后,先找到新的指令執(zhí)行后,先找到新的CSCS和和IPIP存儲(chǔ)的位置:存儲(chǔ)的位置:PA=PA=(DSDS)* *10H+10H+(BXBX)=41212H=41212H則(則(IPIP)= =(41212H41212H)=1000H=1000H (CSCS)= =(4
24、1214H41214H)=4A00H=4A00H例:設(shè)例:設(shè)CS=1200HCS=1200H,IP=0100HIP=0100H,SS=5000HSS=5000H,SP=0400HSP=0400H,DS=2000HDS=2000H,SI=3000HSI=3000H,BX=0300HBX=0300H,(,(20300H20300H)=4800H=4800H,(,(20302H20302H)=00FFH=00FFH,PROG-NPROG-N標(biāo)號(hào)的地址為:標(biāo)號(hào)的地址為:1200H:0278H1200H:0278H,說明下列每條指令執(zhí)行后,程序?qū)?,說明下列每條指令執(zhí)行后,程序?qū)⒎謩e轉(zhuǎn)移到何處執(zhí)行?分別轉(zhuǎn)
25、移到何處執(zhí)行?(1 1)JMP PROG-NJMP PROG-N(2 2)JMP BXJMP BX(3 3)JMP BXJMP BX(4 4)JMP DWORD PTRBXJMP DWORD PTRBX3 .2 .5 3 .2 .5 串操作尋址串操作尋址n源數(shù)據(jù)串存放在源數(shù)據(jù)串存放在DSDS:SISI中,目的數(shù)據(jù)串存放在中,目的數(shù)據(jù)串存放在ESES:DIDI中。中。n源數(shù)據(jù)串允許段跨越,目的數(shù)據(jù)串不允許源數(shù)據(jù)串允許段跨越,目的數(shù)據(jù)串不允許n例:例:MOVSB MOVSB ;隱含使用;隱含使用SISI和和DIDI實(shí)現(xiàn)實(shí)現(xiàn)字節(jié)字節(jié)串傳送。串傳送。 MOVSW MOVSW ;隱含使用;隱含使用SIS
26、I和和DIDI實(shí)現(xiàn)實(shí)現(xiàn)字字串傳送。串傳送。 3 .2 .6 I3 .2 .6 IO O端口尋址端口尋址n訪問訪問I IO O端口只能使用端口只能使用ININ(輸入)和(輸入)和OUTOUT(輸出)指(輸出)指令。令。 1.1.端口直接尋址端口直接尋址n例:例:IN ALIN AL,20H 20H ;從值為;從值為20H20H的端口地址中讀取的端口地址中讀取數(shù)據(jù)輸入到數(shù)據(jù)輸入到ALAL。 IN AXIN AX,20H 20H ;從值為;從值為20H20H和和21H21H端口地址中讀取端口地址中讀取數(shù)據(jù)輸入到數(shù)據(jù)輸入到AXAX。 若若20H20H端口的內(nèi)容是端口的內(nèi)容是80H,21H80H,21H
27、端口內(nèi)容為端口內(nèi)容為40H,40H,。則指。則指令執(zhí)行后,令執(zhí)行后,AHAH40H40H,ALAL80H80H 2.2.端口間接尋址端口間接尋址n當(dāng)當(dāng)I IO O端口地址端口地址大于大于8 8位二進(jìn)制數(shù)范圍位二進(jìn)制數(shù)范圍時(shí),只能采時(shí),只能采用間接尋址方式,必須使用間址寄存器用間接尋址方式,必須使用間址寄存器DXDX存放存放I IO O端口的地址碼。端口的地址碼。n例:例: MOV DXMOV DX,220H220H; 將端口地址將端口地址220H220H送到送到DXDX寄存器。寄存器。 OUT DXOUT DX,ALAL ; 將將ALAL中一個(gè)字節(jié)的內(nèi)容輸出到中一個(gè)字節(jié)的內(nèi)容輸出到由由DXDX
28、寄存器所指的端口即寄存器所指的端口即220H220H。 3 .3 80863 .3 808680888088指令系統(tǒng)指令系統(tǒng)8086/80888086/8088的指令系統(tǒng)中共有的指令系統(tǒng)中共有9292種基本指令,種基本指令,分為分為6 6大類:大類:(1 1)數(shù)據(jù)傳送)數(shù)據(jù)傳送(2 2)算術(shù)運(yùn)算)算術(shù)運(yùn)算(3 3)邏輯運(yùn)算和移位指令)邏輯運(yùn)算和移位指令(4 4)串操作)串操作(5 5)控制轉(zhuǎn)移)控制轉(zhuǎn)移(6 6)處理器控制)處理器控制3 .3 .1 3 .3 .1 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令n這類指令完成數(shù)據(jù)、地址等的傳送操作。這類指令完成數(shù)據(jù)、地址等的傳送操作。 (一)、通用數(shù)據(jù)傳送指令(
29、一)、通用數(shù)據(jù)傳送指令 (二)、輸入輸出指令(二)、輸入輸出指令 (三)、地址傳送指令(三)、地址傳送指令 (四)、標(biāo)志寄存器傳送指令(四)、標(biāo)志寄存器傳送指令(一)通用傳送指令(一)通用傳送指令(MOVMOV、XCHGXCHG、PUSHPUSH、POPPOP、XLATXLAT)1 1、一般傳送指令、一般傳送指令MOVMOV指令格式:指令格式:MOV MOV 目的,源目的,源指令功能:將源操作數(shù)傳送到目的操作數(shù)指令功能:將源操作數(shù)傳送到目的操作數(shù)MOVMOV指令數(shù)據(jù)傳送方向指令數(shù)據(jù)傳送方向段寄存器段寄存器CS、DS、SS、ES通用寄存器通用寄存器AX、BX、CX、DX、BP、SP、SI、DI存
30、儲(chǔ)器存儲(chǔ)器立即數(shù)立即數(shù)使用使用MOVMOV指令注意事項(xiàng)指令注意事項(xiàng):(1 1)立即數(shù)只能作為源操作數(shù)。)立即數(shù)只能作為源操作數(shù)。(2 2)兩個(gè)存儲(chǔ)單元之間不能直接互相傳送,要傳送必須)兩個(gè)存儲(chǔ)單元之間不能直接互相傳送,要傳送必須通過中介寄存器進(jìn)行。通過中介寄存器進(jìn)行。例:例:MOV mem2MOV mem2,mem1 mem1 (錯(cuò)誤)(錯(cuò)誤) MOV AXMOV AX,mem1mem1 MOV mem2 MOV mem2,AX AX (正確)(正確)(3 3)兩個(gè)段寄存器兩個(gè)段寄存器之間不能直接互相傳送,要傳送必須之間不能直接互相傳送,要傳送必須通過中介寄存器進(jìn)行。通過中介寄存器進(jìn)行。例:例
31、:MOV ESMOV ES,DS DS (錯(cuò)誤)(錯(cuò)誤) MOV AXMOV AX,DSDS MOV ES MOV ES,AX AX (正確)(正確)(4 4)立即數(shù)不能直接傳送給段寄存器,必須借助通用寄)立即數(shù)不能直接傳送給段寄存器,必須借助通用寄存器。存器。例:例:MOV DSMOV DS,2000H 2000H (錯(cuò)誤)(錯(cuò)誤) MOV AXMOV AX,2000H2000H MOV DS MOV DS,AX AX (正確)(正確)(5 5)源和目的兩個(gè)操作數(shù)必須保持?jǐn)?shù)據(jù)位數(shù)相匹配。)源和目的兩個(gè)操作數(shù)必須保持?jǐn)?shù)據(jù)位數(shù)相匹配。例:例:MOV ALMOV AL,BX BX (錯(cuò)誤)(錯(cuò)誤)
32、 MOV AXMOV AX,CS CS (正確)(正確)(6 6)CSCS不能作為目的操作數(shù),不能作為目的操作數(shù),IPIP和和FLAGSFLAGS不能作為源或不能作為源或目的操作數(shù)。目的操作數(shù)。例:例:MOV CSMOV CS,AX AX (錯(cuò)誤)(錯(cuò)誤) MOV AXMOV AX,IP IP (錯(cuò)誤)(錯(cuò)誤) MOV IPMOV IP,AX AX (錯(cuò)誤)(錯(cuò)誤) MOV AXMOV AX,CS CS (正確)(正確)2 2、數(shù)據(jù)交換指令、數(shù)據(jù)交換指令XCHGXCHG指令格式:指令格式:XCHG XCHG 目的,目的, 源源指令功能:寄存器之間、寄存器與存儲(chǔ)器之間指令功能:寄存器之間、寄存器
33、與存儲(chǔ)器之間內(nèi)容互換。內(nèi)容互換。注意:注意:n存儲(chǔ)器之間不能交換存儲(chǔ)器之間不能交換n段寄存器不能作為操作數(shù)段寄存器不能作為操作數(shù)例:例: XCHG BXXCHG BX,DI DI (錯(cuò)誤)(錯(cuò)誤) XCHG DSXCHG DS,AX AX (錯(cuò)誤)(錯(cuò)誤)3 3、堆棧操作指令、堆棧操作指令PUSHPUSH、POPPOP注意:注意:(1 1)堆棧操作必須以字為單位)堆棧操作必須以字為單位(2 2)PUSHPUSH和和POPPOP指令應(yīng)該成對(duì)使用,保持堆棧原指令應(yīng)該成對(duì)使用,保持堆棧原有狀態(tài)有狀態(tài)(3 3)不能用立即尋址)不能用立即尋址例:例:PUSH 1234H PUSH 1234H (錯(cuò)誤)(
34、錯(cuò)誤) POP 1234H POP 1234H (錯(cuò)誤)(錯(cuò)誤)(4 4)POPPOP指令操作數(shù)不能是指令操作數(shù)不能是CSCS例:例:POP CS POP CS (錯(cuò)誤)(錯(cuò)誤)(5 5)入棧內(nèi)容和彈出內(nèi)容正好相反)入棧內(nèi)容和彈出內(nèi)容正好相反PUSH AXPUSH AXPUSH BX PUSH BX ;保護(hù)現(xiàn)場(chǎng);保護(hù)現(xiàn)場(chǎng). . ;其間用到;其間用到AXAX和和BXBX寄存器寄存器POP BXPOP BXPOP AX POP AX ;恢復(fù)現(xiàn)場(chǎng);恢復(fù)現(xiàn)場(chǎng)4 4、查表換碼指令、查表換碼指令XLATXLATXLATXLAT是一條直接查表并讀表格中元素值的指令。是一條直接查表并讀表格中元素值的指令。查表
35、的默認(rèn)段為查表的默認(rèn)段為DSDS,若表格不在當(dāng)前默認(rèn)的,若表格不在當(dāng)前默認(rèn)的DSDS段中,指令就應(yīng)該提供帶有段跨越前綴的操作段中,指令就應(yīng)該提供帶有段跨越前綴的操作數(shù)。數(shù)。指令格式:指令格式:XLAT XLAT 表名(可省略)表名(可省略) 指令功能:將段基地址默認(rèn)為指令功能:將段基地址默認(rèn)為DSDS,偏移地址為,偏移地址為BXBXALAL的內(nèi)存單元的字節(jié)內(nèi)容送至的內(nèi)存單元的字節(jié)內(nèi)容送至ALAL。(即將表。(即將表中的一個(gè)字節(jié)內(nèi)容傳送到中的一個(gè)字節(jié)內(nèi)容傳送到ALAL中)。中)。指令操作過程:指令操作過程:(1 1)建立一個(gè)換碼表,其最大容量為()建立一個(gè)換碼表,其最大容量為(0 0255255
36、)共)共256256字節(jié)。將字節(jié)。將表首址的偏移地址置入表首址的偏移地址置入BXBX。(2 2)將要轉(zhuǎn)換的字節(jié)單元在)將要轉(zhuǎn)換的字節(jié)單元在表中的序號(hào)(從表中的序號(hào)(從0 0算起)算起)送入送入ALAL。偏移地址。偏移地址EAEABXBXALAL。(3 3)將)將DSDS* *10H+BX+AL10H+BX+AL存儲(chǔ)單元的字節(jié)存儲(chǔ)單元的字節(jié)內(nèi)容再送到內(nèi)容再送到ALAL中,中,此時(shí)此時(shí)ALAL內(nèi)容就是查表的結(jié)果。內(nèi)容就是查表的結(jié)果。(1 1)設(shè))設(shè)DSDSA000HA000H,表中元素存放,已知程序,表中元素存放,已知程序段如下:段如下:MOV BXMOV BX,0010H0010HMOV ALM
37、OV AL,06H06HXLATXLAT求指令運(yùn)行的結(jié)果?求指令運(yùn)行的結(jié)果? XLATXLAT指令操作示意圖指令操作示意圖 查表中序號(hào)查表中序號(hào)為為6 6的元素的元素 要求把存儲(chǔ)單元要求把存儲(chǔ)單元MEM1MEM1和和MEM2MEM2兩個(gè)字?jǐn)?shù)據(jù)互換。兩個(gè)字?jǐn)?shù)據(jù)互換。解:實(shí)現(xiàn)存儲(chǔ)單元解:實(shí)現(xiàn)存儲(chǔ)單元MEM1MEM1和和MEM2MEM2之間內(nèi)容交換的幾種方案。之間內(nèi)容交換的幾種方案。方案方案1 1:用:用MOVMOV指令指令MOV AXMOV AX, MEM1 MEM1MOV BXMOV BX, MEM2MEM2MOV MEM1MOV MEM1, BX BX MOV MEM2MOV MEM2, AX
38、AX方案方案2 2:用:用XCHGXCHG指令指令MOV AXMOV AX, MEM1MEM1XCHG AXXCHG AX, MEM2MEM2MOV MEM1MOV MEM1, AXAX方案方案3 3:用:用PUSHPUSHPOPPOP指令指令PUSH MEM1PUSH MEM1PUSH MEM2PUSH MEM2POP MEM1POP MEM1POP MEM2POP MEM22 2輸入、輸出指令輸入、輸出指令I(lǐng)NIN、OUTOUTININ和和OUTOUT指令為指令為累加器專用累加器專用的傳送指令。的傳送指令。 (1 1)輸入指令)輸入指令I(lǐng)NIN指令格式:指令格式:IN IN 累加器,端口地
39、址累加器,端口地址指令功能:把指定端口中的一個(gè)數(shù)據(jù)(字節(jié)或字)輸入至指令功能:把指定端口中的一個(gè)數(shù)據(jù)(字節(jié)或字)輸入至ALAL或或AXAX。當(dāng)端口地址號(hào)為當(dāng)端口地址號(hào)為00H00HFFHFFH時(shí),可用直接尋址方式(或者間時(shí),可用直接尋址方式(或者間接尋址方式)接尋址方式)當(dāng)端口地址號(hào)為當(dāng)端口地址號(hào)為100H100HFFFFHFFFFH,只可用間接尋址方式。使用,只可用間接尋址方式。使用DXDX作間址寄存器。作間址寄存器。例:例:IN ALIN AL,20H20H;從;從20H20H端口輸入一個(gè)字節(jié)至端口輸入一個(gè)字節(jié)至ALALIN AXIN AX,20H20H;從;從20H20H和和21H21H
40、兩個(gè)端口輸入一個(gè)字至兩個(gè)端口輸入一個(gè)字至AXAXIN ALIN AL,DXDXIN AXIN AX,DXDX(2 2)輸出指令)輸出指令OUTOUT指令格式:指令格式:OUT OUT 端口地址,累加器端口地址,累加器指令功能:把累加器指令功能:把累加器ALAL(字節(jié))或者(字節(jié))或者AXAX(字)中(字)中的數(shù)據(jù)輸出到指定的端口。的數(shù)據(jù)輸出到指定的端口。例:例:OUT 20HOUT 20H,ALAL;將;將ALAL中一字節(jié)輸出到中一字節(jié)輸出到20H20H端口端口OUT 20HOUT 20H,AXAX;將;將AXAX中一個(gè)字輸出到中一個(gè)字輸出到20H20H端口和端口和21H21H端口端口OUT
41、DXOUT DX,ALALOUT DXOUT DX,AXAX例:實(shí)現(xiàn)例:實(shí)現(xiàn)28H28H和和29H29H端口輸入一個(gè)字到端口輸入一個(gè)字到DATAWORDDATAWORD變變量量 IN AXIN AX,28H28H MOV DATAWORD MOV DATAWORD,AXAX例:從端口例:從端口3FCH3FCH送一個(gè)字到送一個(gè)字到AXAX寄存器寄存器 MOV DXMOV DX,3FCH3FCH IN AX IN AX,DX DX ;(;(ALAL)(3FCH3FCH) (AHAH)(3FDH3FDH) 例:設(shè)數(shù)字例:設(shè)數(shù)字0 09 9的的ASCIIASCII碼(其最高位帶奇校驗(yàn)位)依碼(其最高位
42、帶奇校驗(yàn)位)依次存放在內(nèi)存中次存放在內(nèi)存中ASCASC開始的存儲(chǔ)區(qū)。現(xiàn)從開始的存儲(chǔ)區(qū)?,F(xiàn)從9 9號(hào)端口輸號(hào)端口輸入任意一位十進(jìn)制數(shù),要求將該十進(jìn)制數(shù)轉(zhuǎn)換為相入任意一位十進(jìn)制數(shù),要求將該十進(jìn)制數(shù)轉(zhuǎn)換為相應(yīng)的帶奇校驗(yàn)的應(yīng)的帶奇校驗(yàn)的0 09 9的的ASCIIASCII碼并再輸出到碼并再輸出到9 9號(hào)端口,號(hào)端口,試編此程序段。試編此程序段。解:設(shè)解:設(shè)DSDS1000H1000H,ASCASC的編碼地址的編碼地址PAPA10030H10030H程序段:程序段:MOV AXMOV AX,1000H1000HMOV DSMOV DS,AXAXMOV BXMOV BX,0030H0030HIN ALIN
43、 AL,09H 09H ;從;從09H09H端口輸入待查值端口輸入待查值A(chǔ)LAL06H06HXLAT XLAT ;查表轉(zhuǎn)換;查表轉(zhuǎn)換OUT 09HOUT 09H,AL AL ;查表結(jié)果輸出到;查表結(jié)果輸出到09H09H端口。端口。若若9 9號(hào)端口輸入值為號(hào)端口輸入值為6 6,則查表換碼后輸出值為,則查表換碼后輸出值為B6HB6H。 XLATXLAT查表示意圖查表示意圖3 3目標(biāo)地址傳送指令目標(biāo)地址傳送指令LEALEA、LDSLDS、LESLES(1 1)LEALEA指令指令 指令格式:指令格式:LEA 16LEA 16位通用寄存器,存儲(chǔ)器操作數(shù)位通用寄存器,存儲(chǔ)器操作數(shù)功能:把存儲(chǔ)器操作數(shù)的功
44、能:把存儲(chǔ)器操作數(shù)的1616位位偏移地址偏移地址裝入裝入1616位通用寄位通用寄存器。存器。例:例: LEA SP LEA SP,0500H 0500H ;SP0500HSP0500H LEA BXLEA BX,1000H 1000H ;BX1000HBX1000H LEA BX LEA BX,BXBXSISI06H 06H ;BXBXBXBXSISI06H06H例:例:LEA BXLEA BX,AREA AREA ;AREAAREA是變量名,是變量名,BXAREABXAREA的偏移量的偏移量LEA BXLEA BX,AREA AREA ;把;把AREAAREA的偏移地址取到的偏移地址取到BX
45、BX等價(jià)于等價(jià)于MOV BXMOV BX,OFFSET AREAOFFSET AREA(2 2)LDSLDS指令指令指令格式:指令格式:LDS LDS 通用寄存器(通常是通用寄存器(通常是SISI),存儲(chǔ)器操作數(shù)),存儲(chǔ)器操作數(shù)指令功能:指令功能:SISI存儲(chǔ)器單元的存儲(chǔ)器單元的低地址字低地址字內(nèi)容內(nèi)容 DSDS存儲(chǔ)器單元的存儲(chǔ)器單元的高地址字高地址字內(nèi)容內(nèi)容用于指定段基址值和偏移地址值用于指定段基址值和偏移地址值例:例:LDS SILDS SI,2130H 2130H 設(shè)設(shè)DSDS3000H3000H,(32130H32130H)3C1F3C1FH H 字存儲(chǔ)單元字存儲(chǔ)單元32130H321
46、30H的內(nèi)容為的內(nèi)容為3C1FH3C1FH;(32132H32132H)2000H 2000H 字存儲(chǔ)單元字存儲(chǔ)單元32132H32132H的內(nèi)容為的內(nèi)容為2000H2000H。則在指令執(zhí)行后,則在指令執(zhí)行后,SISI3C1FH3C1FH(偏移地址);(偏移地址);DSDS2000H2000H(段(段基址)基址)(3 3)LESLES指令:指令:指令格式:指令格式:LES LES 通用寄存器(通常是通用寄存器(通常是DIDI),存儲(chǔ)器操作數(shù)),存儲(chǔ)器操作數(shù)指令功能:指令功能:DIDI存儲(chǔ)器單元的存儲(chǔ)器單元的低地址字低地址字內(nèi)容內(nèi)容 ESES存儲(chǔ)器單元的存儲(chǔ)器單元的高地址字高地址字內(nèi)容內(nèi)容用于指
47、定段基址值和偏移地址值用于指定段基址值和偏移地址值例:例:LES DILES DI,BXBX 設(shè)設(shè)DSDSB000HB000H,BXBX080AH080AH, (B080AHB080AH)05AEH 05AEH 字存儲(chǔ)單元字存儲(chǔ)單元B080AHB080AH的內(nèi)容為的內(nèi)容為05AEH05AEH;(B080CHB080CH)4000H 4000H 字存儲(chǔ)單元字存儲(chǔ)單元B080CHB080CH的內(nèi)容為的內(nèi)容為4000H4000H。 則指令執(zhí)行后,則指令執(zhí)行后,DIDI05AEH05AEH,ESES4000H4000H目標(biāo)地址傳送指令目標(biāo)地址傳送指令常用于在常用于在串操作串操作時(shí)建立初始的地址指針。時(shí)
48、建立初始的地址指針。4 4標(biāo)志傳送指令(標(biāo)志傳送指令(無操作數(shù)無操作數(shù))(1 1)LAHFLAHF指令格式:指令格式:LAHFLAHF指令功能:指令功能:AHFLAGSAHFLAGS低低8 8位(位(SFSF、ZFZF、AFAF、PFPF、CFCF)(2 2)SAHFSAHF指令格式:指令格式:SAHFSAHF指令功能:指令功能:FLAGSFLAGS對(duì)應(yīng)位對(duì)應(yīng)位 AHAH的第的第7 7、6 6、4 4、2 2、0 0位位(3 3)PUSHFPUSHF指令格式:指令格式:PUSHFPUSHF指令功能:指令功能:FLAGSFLAGS(1616位)內(nèi)容入堆棧位)內(nèi)容入堆棧 SPSPSPSP2 2 S
49、S SS10H10HSPSP1FLAGS1FLAGS高高8 8位位 SSSS10H10HSPFLAGSSPFLAGS低低8 8位位(4 4)POPFPOPF指令格式:指令格式:POPFPOPF指令功能:將堆棧內(nèi)容彈出到指令功能:將堆棧內(nèi)容彈出到FLAGSFLAGS(1616位)位) FLAGSFLAGS低低8 8位位(SSSS10H10HSPSP) FLAGSFLAGS高高8 8位位(SSSS10H10HSPSP1 1);); SPSPSPSP2 2PUSHFPUSHF和和POPFPOPF指令成對(duì)使用,可使各標(biāo)志位恢復(fù)為入棧指令成對(duì)使用,可使各標(biāo)志位恢復(fù)為入棧前的狀態(tài),用于保護(hù)和恢復(fù)調(diào)用子程序
50、前后標(biāo)志寄存前的狀態(tài),用于保護(hù)和恢復(fù)調(diào)用子程序前后標(biāo)志寄存器的內(nèi)容。器的內(nèi)容。 3 .3 .2 3 .3 .2 算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令n包括加法指令、減法指令、乘法指令、除包括加法指令、減法指令、乘法指令、除法指令、十進(jìn)制調(diào)整指令法指令、十進(jìn)制調(diào)整指令n對(duì)標(biāo)志位一般有影響對(duì)標(biāo)志位一般有影響n算術(shù)運(yùn)算雙操作數(shù)指令:算術(shù)運(yùn)算雙操作數(shù)指令: 除了除了目的為寄存器目的為寄存器/ /存儲(chǔ)器,源為立即數(shù)存儲(chǔ)器,源為立即數(shù) 其他情況其他情況必須有一個(gè)操作數(shù)為寄存器必須有一個(gè)操作數(shù)為寄存器 n算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令目的不能為目的不能為CSCSn算術(shù)運(yùn)算算術(shù)運(yùn)算單操作數(shù)指令單操作數(shù)指令操作數(shù)操作數(shù)不
51、能為立即不能為立即數(shù)數(shù)1 1加法指令加法指令(1 1)不帶進(jìn)位加法指令)不帶進(jìn)位加法指令A(yù)DDADD指令格式:指令格式:ADD ADD 目的,源目的,源指令功能:目的指令功能:目的目的目的+ +源源用于單字運(yùn)算用于單字運(yùn)算(2 2)帶進(jìn)位加指令)帶進(jìn)位加指令A(yù)DCADC指令格式:指令格式:ADC ADC 目的,源目的,源指令功能:目的指令功能:目的目的目的+ +源源+ +上次運(yùn)算后的上次運(yùn)算后的CFCF主要用于多字節(jié)數(shù)的加法運(yùn)算,并影響標(biāo)志位,運(yùn)算前應(yīng)清主要用于多字節(jié)數(shù)的加法運(yùn)算,并影響標(biāo)志位,運(yùn)算前應(yīng)清CFCF。(3 3)加)加1 1指令指令I(lǐng)NCINC指令格式:指令格式:INC INC 目
52、的目的指令功能:目的指令功能:目的目的目的+1+1常用于循環(huán)程序中修改地址指針或循環(huán)次數(shù)。常用于循環(huán)程序中修改地址指針或循環(huán)次數(shù)。目的:寄存器(不能為段寄存器)、存儲(chǔ)器目的:寄存器(不能為段寄存器)、存儲(chǔ)器源:寄存器、存儲(chǔ)器、立即數(shù)源:寄存器、存儲(chǔ)器、立即數(shù)例:雙精度數(shù)加法實(shí)現(xiàn)例:雙精度數(shù)加法實(shí)現(xiàn)0002 F365H+0005 E024H0002 F365H+0005 E024H 設(shè)(設(shè)(DX,AXDX,AX)=0002 F365H=0002 F365H (BX,CXBX,CX)=0005 E024H=0005 E024H 則指令應(yīng)為:則指令應(yīng)為:ADD AXADD AX,CX CX ;執(zhí)行后
53、;執(zhí)行后CF=1CF=1ADC DXADC DX,BX BX ;DX0002+0005+1DX0002+0005+1 執(zhí)行后(執(zhí)行后(DX,AXDX,AX)=0008 D389H=0008 D389H2 2減法指令減法指令(1 1)不帶借位減法指令)不帶借位減法指令SUBSUB指令格式:指令格式:SUB SUB 目的,源目的,源指令功能:目的指令功能:目的目的目的- -源源用于單字運(yùn)算用于單字運(yùn)算(2 2)帶借位減法指令)帶借位減法指令SBBSBB指令格式:指令格式:SBB SBB 目的,源目的,源指令功能:目的指令功能:目的目的目的- -源源- -上次運(yùn)算后的上次運(yùn)算后的CFCF主要用于多字
54、節(jié)數(shù)的加法運(yùn)算,并影響標(biāo)志位,運(yùn)算前應(yīng)清主要用于多字節(jié)數(shù)的加法運(yùn)算,并影響標(biāo)志位,運(yùn)算前應(yīng)清CFCF。(3 3)減)減1 1指令指令DECDEC指令格式:指令格式:DEC DEC 目的目的指令功能:目的指令功能:目的目的目的-1-1常用于循環(huán)程序中修改地址指針或循環(huán)次數(shù)。常用于循環(huán)程序中修改地址指針或循環(huán)次數(shù)。目的:寄存器(不能為段寄存器)目的:寄存器(不能為段寄存器) 、存儲(chǔ)器、存儲(chǔ)器源:寄存器、存儲(chǔ)器、立即數(shù)源:寄存器、存儲(chǔ)器、立即數(shù)例:例:x,y,zx,y,z均為均為3232位雙精度數(shù),分別存放的地址為位雙精度數(shù),分別存放的地址為X X、X+2X+2; Y Y、Y+2Y+2;Z Z、Z+
55、2Z+2的字存儲(chǔ)單元中,用一組指令實(shí)現(xiàn)算術(shù)表的字存儲(chǔ)單元中,用一組指令實(shí)現(xiàn)算術(shù)表達(dá)式達(dá)式x+y-z+24x+y-z+24,并用,并用W W、W+2W+2字存儲(chǔ)單元存放。字存儲(chǔ)單元存放。 MOV AX,X MOV AX,X MOV DX,X+2 MOV DX,X+2 ADD AX,Y ADD AX,Y ADC DX,Y+2 ADC DX,Y+2 ;x+yx+y SUB AX,Z SUB AX,Z SBB DX,Z+2 SBB DX,Z+2 ;x+y-zx+y-z ADD AX,24 ADD AX,24 ADC DX,0ADC DX,0 ;x+y-z+24x+y-z+24 MOV W,AX MOV
56、 W,AX MOV W+2,DX MOV W+2,DX ;用;用W W、W+2W+2字存儲(chǔ)單元存放字存儲(chǔ)單元存放(5 5)比較指令)比較指令 CMP CMP 指令格式:指令格式: CMP CMP 目的,源目的,源指令功能:目的指令功能:目的- -源,產(chǎn)生標(biāo)志源,產(chǎn)生標(biāo)志通過兩個(gè)操作數(shù)的相減產(chǎn)生的標(biāo)志來比較兩數(shù)是否相等通過兩個(gè)操作數(shù)的相減產(chǎn)生的標(biāo)志來比較兩數(shù)是否相等比較參考標(biāo)志:比較參考標(biāo)志:1 1、無符號(hào)數(shù):、無符號(hào)數(shù):CF=0CF=0(無借位),目的(無借位),目的 源源2 2、兩個(gè)正數(shù):、兩個(gè)正數(shù):SF=0SF=0(減后結(jié)果為正數(shù)),目的(減后結(jié)果為正數(shù)),目的 源源3 3、兩個(gè)符號(hào)數(shù):、
57、兩個(gè)符號(hào)數(shù): OF=0 OF=0(無溢出)且(無溢出)且SF=0SF=0(符號(hào)位為(符號(hào)位為0 0),目的),目的 源源 OF=1 OF=1(有溢出)且(有溢出)且SF=1SF=1(符號(hào)位為(符號(hào)位為1 1),目的),目的 源源 即即OFOF SF=0SF=0,目的,目的 源源4 4、任意兩個(gè)數(shù):、任意兩個(gè)數(shù):ZF=1ZF=1(減后結(jié)果為(減后結(jié)果為0 0),目的),目的= =源源3 3乘法指令乘法指令(1 1)無符號(hào)數(shù)乘法指令)無符號(hào)數(shù)乘法指令 MUL MUL指令格式:指令格式:MUL MUL 源(寄存器源(寄存器/ /存儲(chǔ)器)存儲(chǔ)器)(2 2)有符號(hào)數(shù)乘法指令)有符號(hào)數(shù)乘法指令 IMUL
58、IMUL指令格式:指令格式:IMUL IMUL 源(寄存器源(寄存器/ /存儲(chǔ)器)存儲(chǔ)器)指令功能:指令功能:字節(jié)乘:(字節(jié)乘:(AXAX)(ALAL)* *(8 8位源)位源)字乘:(字乘:(DXDX,AXAX)(AXAX)* *(1616位源)位源)指令執(zhí)行后:指令執(zhí)行后:OF=CF=0OF=CF=0表示運(yùn)算結(jié)果的高一半為表示運(yùn)算結(jié)果的高一半為0 0OF=CF=1OF=CF=1表示運(yùn)算結(jié)果的高一半(表示運(yùn)算結(jié)果的高一半(AHAH或或DXDX)包含有效)包含有效數(shù)字?jǐn)?shù)字例:設(shè)例:設(shè)ALALA5HA5H(即(即5BH5BH的補(bǔ)碼)的補(bǔ)碼) BL BL11H11H執(zhí)行指令執(zhí)行指令 MUL BL
59、MUL BL ;AXALAXAL* *BLBLA5HA5H* *11H11H0AF5H0AF5H ;AXAX0AF5H0AF5H, CFCFOFOF1 1執(zhí)行指令執(zhí)行指令I(lǐng)MUL BLIMUL BL ;AXALAXAL* *BLBL5BH5BH* *11H11H060BH060BHF9F5HF9F5H ;AXAXF9F5HF9F5H, CFCFOFOF1 1 4 4除法指令除法指令(1 1)無符號(hào)數(shù)除法指令)無符號(hào)數(shù)除法指令 DIV DIV指令格式:指令格式:DIV DIV 源(寄存器源(寄存器/ /存儲(chǔ)器)存儲(chǔ)器)(2 2)有符號(hào)數(shù)除法指令)有符號(hào)數(shù)除法指令 IDIV IDIV指令格式:指令
60、格式:IDIV IDIV 源(寄存器源(寄存器/ /存儲(chǔ)器)存儲(chǔ)器)指令功能:指令功能:字除以字節(jié):(字除以字節(jié):(ALAL)(AXAX)/ /(8 8位源)位源) (AHAH)余數(shù)余數(shù)雙字除以字:(雙字除以字:(AXAX)(DXDX,AXAX)/ /(1616位源)位源) (DXDX)余數(shù)余數(shù)注意:注意:被除數(shù)的位數(shù)必須是除數(shù)的兩倍,兩者位數(shù)相同則應(yīng)被除數(shù)的位數(shù)必須是除數(shù)的兩倍,兩者位數(shù)相同則應(yīng)先對(duì)被除數(shù)進(jìn)行位數(shù)轉(zhuǎn)換。先對(duì)被除數(shù)進(jìn)行位數(shù)轉(zhuǎn)換。(3 3)擴(kuò)展指令)擴(kuò)展指令 CBW CBW,CWD CWD 指令格式:指令格式:CBWCBW指令功能:指令功能: ALAX ALAX 字節(jié)擴(kuò)展成字字節(jié)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年中核湖南礦業(yè)招聘筆試參考題庫附帶答案詳解
- 第二單元第一課 電腦的大管家 操作系統(tǒng) 教學(xué)設(shè)計(jì) 2024-2025學(xué)年新世紀(jì)版(2018)初中信息技術(shù)七年級(jí)上冊(cè)
- 4《竇娥冤》節(jié)選(教學(xué)設(shè)計(jì))-2024-2025學(xué)年高一語文下學(xué)期同步教學(xué)教學(xué)設(shè)計(jì)專輯(統(tǒng)編版必修下冊(cè))
- 第12課 從明朝建立到清軍入關(guān) 教學(xué)設(shè)計(jì)-2024-2025學(xué)年高一歷史上學(xué)期統(tǒng)編版(2019)必修中外歷史綱要上
- 2024年12月中國(guó)獸醫(yī)協(xié)會(huì)公開招聘2人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 第四單元《 參考活動(dòng)1 制作風(fēng)力發(fā)電機(jī)》教學(xué)設(shè)計(jì) 2024-2025學(xué)年初中綜合實(shí)踐活動(dòng)蘇少版八年級(jí)上冊(cè)
- 第15課《閱讀材料 不可不知的放映快捷鍵》教學(xué)設(shè)計(jì) 2023-2024學(xué)年青島版(2018)初中信息技術(shù)八年級(jí)下冊(cè)
- 第7課 近代科學(xué)與文化 教學(xué)設(shè)計(jì)-2023-2024學(xué)年浙江省部編版歷史與社會(huì)九年級(jí)下冊(cè)
- 《祝?!贰堆b在套子里的人》聯(lián)讀教學(xué)設(shè)計(jì)-2023-2024學(xué)年統(tǒng)編版高中語文必修下冊(cè)
- 三基醫(yī)學(xué)習(xí)題含參考答案
- 【歷史】唐朝建立與“貞觀之治”課件-2024~2025學(xué)年統(tǒng)編版七年級(jí)歷史下冊(cè)
- 集中注意力 課件- 高中心理健康
- 兒科學(xué)教學(xué)課件腎病綜合征
- 2023高中物理步步高大一輪 第四章 專題強(qiáng)化七 圓周運(yùn)動(dòng)的臨界問題
- delta-臺(tái)達(dá)dvp eh系列plc使用說明書ehs
- Q∕GDW 12152-2021 輸變電工程建設(shè)施工安全風(fēng)險(xiǎn)管理規(guī)程
- 集團(tuán)權(quán)屬公司管理制度
- 五金沖壓件作業(yè)指導(dǎo)書
- 食品工業(yè)企業(yè)誠(chéng)信管理體系建立及實(shí)施
- 汽車吊車吊裝施工方案
- 《植物保護(hù)學(xué)通論》PPT課件.ppt
評(píng)論
0/150
提交評(píng)論