匯編語(yǔ)言第三章實(shí)方式指令尋址與指令系統(tǒng)_第1頁(yè)
匯編語(yǔ)言第三章實(shí)方式指令尋址與指令系統(tǒng)_第2頁(yè)
匯編語(yǔ)言第三章實(shí)方式指令尋址與指令系統(tǒng)_第3頁(yè)
匯編語(yǔ)言第三章實(shí)方式指令尋址與指令系統(tǒng)_第4頁(yè)
匯編語(yǔ)言第三章實(shí)方式指令尋址與指令系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩164頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第3章 實(shí)方式指令尋址與指令系統(tǒng)n3.1 指令的基本指令的基本尋址方式尋址方式n3.2 實(shí)方式實(shí)方式32位指令尋址位指令尋址 n3.3 實(shí)方式指令系統(tǒng)實(shí)方式指令系統(tǒng)n3.4 字符設(shè)備字符設(shè)備I/O功能調(diào)用功能調(diào)用3.1指令的基本尋址方式 n8086 CPU的指令系統(tǒng)的基本指令包括: 數(shù)據(jù)傳送類(lèi)指令數(shù)據(jù)傳送類(lèi)指令 算術(shù)運(yùn)算類(lèi)指令算術(shù)運(yùn)算類(lèi)指令 位操作類(lèi)指令位操作類(lèi)指令 串操作類(lèi)指令串操作類(lèi)指令 控制轉(zhuǎn)移類(lèi)指令控制轉(zhuǎn)移類(lèi)指令 處理機(jī)控制類(lèi)指令處理機(jī)控制類(lèi)指令3.1.1指令的基本格式 n大多數(shù)數(shù)據(jù)傳送類(lèi)指令、算術(shù)運(yùn)算類(lèi)指令、位操作類(lèi)指令及串操作類(lèi)指令,其操作數(shù)指令有相同的語(yǔ)句格式和操作規(guī)定。n指令一

2、般由操作碼OP 、尋址方式MOD和一個(gè)或多個(gè)操作數(shù)OD等字段組成。操作碼OP尋址方式MOD操作數(shù)OD指令的表示形式nPC微機(jī)的多數(shù)指令有一個(gè)或兩個(gè)操作數(shù),當(dāng)然也可以沒(méi)有操作數(shù),常見(jiàn)的表示形式如下:OP 操作數(shù)操作數(shù)OP 目的操作數(shù)目的操作數(shù) 源操作數(shù)源操作數(shù) OP 示例:n單操作數(shù)指令只需指定一個(gè)操作數(shù)。例如將寄存器AX的內(nèi)容加1后,其和回送到AX,指令的符號(hào)表示形式為: INC AX ; AX+1-AXn雙操作數(shù)指令需要指定兩個(gè)操作數(shù).當(dāng)源操作數(shù)和目的操作數(shù)進(jìn)行運(yùn)算后,多數(shù)指令將其結(jié)果回送到目的操作數(shù)的位置。例如寄存器BX與CX的內(nèi)容相減后,其差送入BX的指令為: SUB BX,CX ; B

3、X-CX-BXn沒(méi)有操作數(shù)指令,即隱含操作數(shù)指令,是指在OD位置雖然未明確給出操作數(shù),但在指令OP中隱含有事先安排的操作數(shù)。例如: CLC ; 0-CF3.1.2 尋址方式n立即尋址n寄存器尋址n直接尋址n寄存器間接尋址n寄存器相對(duì)尋址n基址變址尋址n相對(duì)基址變址尋址立即尋址(Immediate Addressing)n立即尋址方式中,指令操作碼和操作數(shù)都在存儲(chǔ)器代碼段中。n匯編格式:n(n為立即操作數(shù),是用8位或16位二進(jìn)制補(bǔ)碼表示的有符號(hào)數(shù))n功能:操作數(shù)存放在存儲(chǔ)器,指令下一單元的內(nèi)容為立即操作數(shù)n。n圖形表示: 示例nMOV AX, 10執(zhí)行后(AX)=?該例中源操作數(shù)為立即尋址方式,

4、立即數(shù)為10,存放在指令的下一單元。執(zhí)行:10AX執(zhí)行后:(AX)=000AH 圖形表示:一、立即尋址n指令中的源操作數(shù)是立即數(shù),即源操作數(shù)是參加操作的數(shù)據(jù)本身n例:MOV AX,1200H12H00HAH ALMOV代代碼碼段段 寄存器尋址(Register Addressing)n寄存器尋址方式的操作數(shù)在指令指明的寄存器中。功能:操作數(shù)直接存放在寄存器中。n圖形表示: 寄存器尋址示例: n下列程序執(zhí)行后,(AX)=?,(BX)=? MOV AX,1234H MOV BX,5678H ADD AX,BXn該程序中MOV指令為數(shù)據(jù)傳送指令操作符,ADD指令為加法指令操作符,三條指令皆為雙操作數(shù)

5、指令。第一、二條指令A(yù)X、BX皆為目的操作數(shù)地址,為寄存器尋址方式。第三條指令中,AX為目的操作數(shù)地址,BX為源操作數(shù)地址。源地址和目的地址皆為寄存器尋址方式。n執(zhí)行: 1234HAX 5678HBX (AX)+(BX)AXn執(zhí)行后:(AX)=68ACH,(BX)=5678Hn圖形表示:寄存器尋址示例(續(xù)): 直接尋址(Direct Addressing)n指令操作碼OP后直接給出操作數(shù)的16位偏移地址EA。OP與直接地址在代碼段,操作數(shù)據(jù)一般在數(shù)據(jù)段。n功能:指令下一字單元的內(nèi)容是操作數(shù)的偏移地址EA。n圖形表示:直接尋址示例: n寄存器和存儲(chǔ)器內(nèi)容為:(AX)=1212H,BUF為數(shù)據(jù)段定

6、義的變量,其偏移地址是2000H,(DS)=3000H,(32000H)=4545H。執(zhí)行指令:MOV AX ,BUF執(zhí)行后:(AX)=?執(zhí)行:(32000H)AX執(zhí)行后:(AX)=4545H圖形表示:二、直接尋址n指令中直接給出操作數(shù)的偏移地址n例:MOV AX,1200H22H11H1200H偏移地址偏移地址 數(shù)數(shù)據(jù)據(jù)段段AH AL直接尋址n直接尋址方式下,操作數(shù)的段地址默認(rèn)為數(shù)據(jù)段,但允許段重設(shè),即由指令定義段。n例:MOV AX,ES:1200H寄存器間接尋址(Register Indirect Addressing)n寄存器間接尋址方式中,寄存器R的內(nèi)容為操作數(shù)的偏移地址EA,操作數(shù)

7、在存儲(chǔ)器中,即:EA=BX / BP / DI / SI功能:操作數(shù)存放在存儲(chǔ)器,寄存器R存放操作數(shù)的偏移地址EA。偏移地址EA計(jì)算方法如下:EA=SISI作變址寄存器。 DIDI作變址寄存器。BX BX作基址寄存器。BP BP作基址寄存器?!纠考拇嫫骱痛鎯?chǔ)器內(nèi)容分別為:(AX)=0,(BP)=0030H,(SS)=2000H,(20030H)=1234Hn執(zhí)行指令:MOV AX ,BP n執(zhí)行后:(AX)=?,(BP)=?,(SS)=?,(20030H)=?n圖形表示如右: 寄存器間接尋址示例:寄存器間接尋址例n例:MOV AX,BX 設(shè)BX=1200H22H11H1200H偏移地址偏移地

8、址AH AL 11 22數(shù)數(shù)據(jù)據(jù)段段代代碼碼段段MOV寄存器間接尋址n由寄存器間接給出操作數(shù)的偏移地址;n存放偏移地址的寄存器稱為間址寄存器,它們是:BX,BP,SI,DIn操作數(shù)的段地址(數(shù)據(jù)處于哪個(gè)段)取決于選擇哪一個(gè)間址寄存器: BX,SI,DI BP默認(rèn)在數(shù)據(jù)段默認(rèn)在數(shù)據(jù)段默認(rèn)在堆棧段默認(rèn)在堆棧段寄存器相對(duì)尋址(Register Relative Addressing)n寄存器相對(duì)尋址方式操作數(shù)的偏移地址EA為寄存器的內(nèi)容加位移量,操作數(shù)在存儲(chǔ)器中。n匯編格式:XR(X表示位移量,是8位或16位二進(jìn)制補(bǔ)碼表示的有符號(hào)數(shù))n功能:操作數(shù)存放在存儲(chǔ)器,寄存器R的內(nèi)容加位移量X為操作數(shù)的偏移

9、地址EA。n圖形表示如下:偏移地址EA計(jì)算方法如下:EA=SI+X SI作變址寄存器。 DI+X DI作變址寄存器。BX+X BX作基址寄存器。BP+X BP作基址寄存器。寄存器相對(duì)尋址示例: n設(shè)執(zhí)行前: (AX)=0040H,(BX)=0030H,(DS)=2000H,(20036H)=0050H n執(zhí)行指令:ADD 6BX,AXn執(zhí)行后:(AX)=?,(BX)=?,(DS)=?,(20036H)=?n圖形表示如下: 執(zhí)行:(執(zhí)行:(20036H)+(AX) 20036H執(zhí)行后:(執(zhí)行后:(AX)=0040H,(,(BX)=0030H,(,(DS)=2000H,(,(20036H)=009

10、0H。寄存器相對(duì)尋址示例(續(xù)): 基址變址尋址(Based Indexed Addressing)n基址變址尋址方式中,操作數(shù)的偏移地址EA是指令中基址寄存器內(nèi)容加上變址寄存器內(nèi)容之和,操作數(shù)在存儲(chǔ)器中。n匯編格式: BR + IRn功能:操作數(shù)存放在存儲(chǔ)器,BR的內(nèi)容加IR的內(nèi)容是操作數(shù)的偏移地址EA。偏移地址EA計(jì)算方法如下:基址變址尋址示例: n設(shè)BX=100H,SI=80H,DS=4000H,nMOV AX,BXSI 相對(duì)基址變址尋址(Relative Based Indexed Addressing)n相對(duì)基址變址尋址方式中,操作數(shù)的偏移地址EA是指令中基址寄存器內(nèi)容、變址寄存器內(nèi)容

11、、位移量三項(xiàng)之和,操作數(shù)在存儲(chǔ)器中。n匯編格式:XBR+IRn功能:操作數(shù)存放在存儲(chǔ)器,BR的內(nèi)容加IR的內(nèi)容加位移量X是操作數(shù)的偏移地址EA。偏移地址EA計(jì)算方法如下:相對(duì)基址變址尋址示例: n設(shè)COUNT=0140H,BX=600H,SI=10H,DS=2000H,nMOV AX,COUNTBXSI舉例: n設(shè)DS=4000H,1、MOV AX,3020H2、VAR DW 86 MOV AX,VAR3、SI=1800H,MOV AX,SI4、COUNT DW 5,6,7,8SI=06HMOV AX,COUNTSI3.1.3數(shù)據(jù)尋址與數(shù)據(jù)結(jié)構(gòu)的關(guān)系n多種尋址方式能方便、靈活的存取操作數(shù), 支

12、持高級(jí)語(yǔ)言的某些數(shù)據(jù)結(jié)構(gòu)。n1.簡(jiǎn)單變量尋址n2.數(shù)組或表格數(shù)據(jù)的尋址n3.記錄型數(shù)組的尋址 3.1.4程序轉(zhuǎn)移尋址n尋址方式對(duì)多數(shù)指令而言,是要計(jì)算出操作數(shù)的地址,但是也由少數(shù)指令是為了形成程序轉(zhuǎn)移的地址(如無(wú)條件轉(zhuǎn)移指令JMP、調(diào)用指令CALL等)。n程序正常順序執(zhí)行時(shí),每取出一條指令執(zhí)行IP+n-IP,其中n為取出指令的字節(jié)數(shù);然后形成下一條指令的地址: PA = CS * 24 + IPn但是如果程序發(fā)生轉(zhuǎn)移時(shí),需要計(jì)算出轉(zhuǎn)移偏移地址EA并修改IP,有時(shí)還需要修改CS的值。這種情況操作的對(duì)象是一個(gè)地址,地址的內(nèi)容是要取出的指令,而不是上述講到的操作數(shù),因此稱之為程序轉(zhuǎn)移尋址。程序轉(zhuǎn)移方

13、式:n段內(nèi)轉(zhuǎn)移是指程序在同一段代碼內(nèi),僅改變IP的值而不改變CS的值所發(fā)生的轉(zhuǎn)移。n而段間轉(zhuǎn)移是程序要從一個(gè)代碼段轉(zhuǎn)移到另一個(gè)代碼段,則不僅改變IP的值,同時(shí)也要改變CS的值。3.23.2實(shí)方式實(shí)方式3232位指令尋址位指令尋址n 實(shí)地址方式32位指令尋址,指在32位的PC機(jī)上使用16位的存儲(chǔ)機(jī)制,執(zhí)行32位的非保護(hù)方式及非虛擬方式的指令,達(dá)到直接存取32位寄存器和32位存儲(chǔ)器操作數(shù)的目的。3.3實(shí)方式指令系統(tǒng)n指令系統(tǒng)是一臺(tái)機(jī)器所有指令的集合。 Pentium系列機(jī)指令系統(tǒng)龐大、類(lèi)型多樣,約有300多條指令,其中包括基本指令100多條。 具有支持多進(jìn)程、多任務(wù)、虛擬存儲(chǔ)器和多媒體等功能的32

14、位指令。3.3.1常用指令類(lèi)型集n1.數(shù)據(jù)傳送類(lèi)指令n2.算術(shù)運(yùn)算類(lèi)指令n3.邏輯和移位操作類(lèi)指令n4.串操作與重復(fù)前綴類(lèi)指令n5.控制轉(zhuǎn)移類(lèi)指令n6.處理機(jī)控制類(lèi)指令n7.其它指令本講義約定:nOPD表示目的操作數(shù); OPS表示源操作數(shù); (OPS)表示OPS的內(nèi)容; (OPD)表示OPD的內(nèi)容; -表示傳送; R表示通用寄存器; Sr表示段寄存器; M表示主存儲(chǔ)器; nXXXX:XXXX 表示組合號(hào), “:”表示其前后組成一個(gè)數(shù); L表示操作數(shù)的長(zhǎng)度; d表示立即數(shù); B/W/D表示字節(jié)或字或雙字。3.3.2數(shù)據(jù)傳送類(lèi)指令n通用數(shù)據(jù)傳送指令n堆棧操作指令n標(biāo)志寄存器傳送指令n地址傳送指令n

15、輸入輸出指令通用數(shù)據(jù)傳送指令n1.傳送指令MOVn2.數(shù)據(jù)交換指令XCHGn3.查表轉(zhuǎn)換指令 XLAT語(yǔ)句格式:MOV OPD,OPSn功能:將源操作數(shù)傳送入目的地址,源地址內(nèi)容不變。即(OPS)OPD。n下圖描述了MOV指令在傳送數(shù)據(jù)時(shí)允許傳送的路徑及類(lèi)型。1.傳送指令MOVMOV指令在傳送數(shù)據(jù)時(shí)允許傳送的路徑及類(lèi)型注意:n(1) OPD,OPS的類(lèi)型(8/16/32位)必須一致.n(2) OPD不能使用立即數(shù)。n(3) 雙操作數(shù)不能同時(shí)為內(nèi)存中的數(shù)據(jù)。n(4) 段寄存器不能直接送立即數(shù).n(5) 指令執(zhí)行后不影響FLAGS的標(biāo)志位的狀態(tài).n(6) 不能任意改變CS示例:存儲(chǔ)器與寄存器間數(shù)據(jù)

16、傳送。nMOV AX,BUF ;BUF是變量,源操作數(shù)為直接尋址nMOV BH,DI ;源操作數(shù)為寄存器間接尋址nMOV DI,ES:3SI ;源操作數(shù)為變址尋址,使用跨段前綴nMOV BP,3BX+SI ;源操作數(shù)為基址加變址尋址nMOV BUFA,DL ;BUFA是一字節(jié)變量nMOV BP,AX ;使用SS段寄存器nMOV DS:BP,DL ;使用跨段前綴nMOV BUF,DS ;BUF是個(gè)字變量nMOV ES ,BUF示例:存儲(chǔ)器與寄存器間數(shù)據(jù)傳送。nBUF DW 1,2,3,4,5,6,0MOV CX,A8MOV SI,2MOV BUFSI,CX2.數(shù)據(jù)交換指令XCHGn語(yǔ)句格式:XC

17、HG OPD,OPSn功能:將源地址與目的地址中的內(nèi)容互換。 即(OPD)OPS,(OPS)OPD。n寄存器與存儲(chǔ)器之間數(shù)據(jù)交換。nMOV AX,5678H;(AX)=5678HnMOV BX,0FFFFH ;(BX)=0FFFFHnXCHG AX,BX;(AX)=0FFFH, (BX)=5678HMOVSX和MOVZX指令n格式:MOVSX OPD, OPS MOVZX OPD, OPSn它們將OPS的內(nèi)容-OPD,但是對(duì)于OPD左邊空缺的位,MOVSX全部用OPS的符號(hào)填充(作符號(hào)延伸), 可以對(duì)有符號(hào)的數(shù)進(jìn)行符號(hào)擴(kuò)展;而MOVZX是全部以零(0)填充,可對(duì)無(wú)符號(hào)數(shù)進(jìn)行0擴(kuò)展. 注意:OP

18、D的位數(shù)比OPS的位數(shù)長(zhǎng)示例:nMOV CL, 88H MOVZX AX, CL ;AX = 0088H MOVSX BX, CL ;BX = FF88Hn另外也可如下書(shū)寫(xiě)指令:nMOVSX CX, BL MOVSX EAX, BUFnMOVZX AX, CL MOVSX EBX, ALnMOVZX ESI, BUF MOVZX EDX,DI3.查表轉(zhuǎn)換指令 XLAn語(yǔ)句格式:XLAT OPS或XLATn功能:將(BX)為首址(AL)為位移量的字節(jié) 存 儲(chǔ) 單 元 中 的 數(shù) 據(jù) 送 A L 寄 存 器 。 即(BX+AL)AL。堆棧操作指令n1.進(jìn)棧指令PUSHn2.出棧指令POPn3.PU

19、SHA/PUSHAD指令n4.POPA/POPAD指令1進(jìn)棧指令PUSHn語(yǔ)句格式: PUSH OPS ; W/D, R/Sr/M/dn功能:將寄存器、段寄存器、立即數(shù)或存儲(chǔ)器中的一個(gè)字?jǐn)?shù)據(jù)壓入堆棧頂部,指令視操作數(shù)長(zhǎng)度為字(2字節(jié))或雙字(4字節(jié))和地址為16位/32位,先將SP/ESP - 2/4-SP/ESP,后將OPS-SP/ESP。2出棧指令POPn語(yǔ)句格式: POP OPD ; W/D, R/Sr/M/dn功能: 視OPD長(zhǎng)度為字或雙字,先將當(dāng)前SP/ESP指向的內(nèi)容-OPD,后將SP/ESP+2/4-SP/ESP 。n從POP指令功能可看出,該指令為PUSH指令的逆過(guò)程,一般成對(duì)

20、使用。3.PUSHA/PUSHAD指令n格式: PUSHA ; 壓入8個(gè)字通用寄存器. PUSHAD ; 壓入8個(gè)雙字通用寄存器. 4.POPA/POPAD指令n格式: POPA ;彈出到8個(gè)16位通用寄存器 POPAD ; 彈出到8個(gè)32位通用寄存器標(biāo)志寄存器傳送指令n1.標(biāo)志送AH指令LAHFn2.AH送標(biāo)志指令SAHFn3.標(biāo)志寄存器進(jìn)棧指令PUSHFn4.標(biāo)志寄存器出棧指令POPF1標(biāo)志送AH指令LAHFn語(yǔ)句格式:LAHFn功能:將標(biāo)志寄存器的低8位送入AH寄存器。即(FLAGS)7-0AH。該指令的執(zhí)行對(duì)標(biāo)志位無(wú)影響。n【例】標(biāo)志寄存器傳送。執(zhí)行前:(FLAGS)=0485H,(A

21、X)=0FFFFH執(zhí)行指令:LAHF執(zhí)行后 : AH =85H2.1 32位可編程寄存器體系二、基本控制寄存器 CFPFAFTFIFZFSFDFVMACVIFIDOFIOPLNTRFVIF31 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0FLAGSEFLAGS標(biāo)志寄存器及其位序號(hào)標(biāo)志寄存器及其位序號(hào)2AH送標(biāo)志指令SAHFn語(yǔ)句格式:SAHFn功能:將AH的內(nèi)容送入標(biāo)志寄存器的低8位,高8位不變。即(AH)FLAGS7-0。n從該指令功能可看出,SAHF為L(zhǎng)AHF的逆過(guò)程。 3標(biāo)志寄存器進(jìn)出棧指令PUSHF/POPFn語(yǔ)句格式:

22、nPUSHF 功能:將標(biāo)志寄存器的內(nèi)容壓入堆棧。即(FLAGS)- 堆棧。 nPOPFn功能:將堆棧頂端的內(nèi)容送到標(biāo)志寄存器。即堆棧- (FLAGS )。 地址傳送指令n1傳送偏移地址指令 LEAn2傳送偏移地址及數(shù)據(jù)段首址指令LDSn3傳送偏移地址及附加數(shù)據(jù)段指令LES1傳送偏移地址指令 LEAn語(yǔ)句格式: LEA OPD,OPS ;OPS的EA-OPD ;OPD是16/32位的R,OPS是Mn功能:主存按源地址的尋址方式計(jì)算偏移地址,將偏移地址送入指定寄存器。n【例】主存偏移地址的獲取。MOV BX,0100H;(BX)=0100HMOV SI, 0210H;(SI) =0210HLEA

23、BX,1234BX+SI ; (BX)=1544H1傳送偏移地址指令 LEAn設(shè)BUF的偏移地址為120H,BX=0A00H,SI=0010HLEA DI,BUFLEA DX,BXSI2LDS/LES/LFS/LGS/LSS指令n語(yǔ)句格式:LDS/LES/LFS/LGS/LSS OPD,OPS ;EA = OPSn功能: 地址傳送LDS等指令中,OPD為R(16位),OPS為M(32位).操作對(duì)FLAGS無(wú)影響,執(zhí)行后結(jié)果為:(EA)-R ;全程指針的偏移地址(EA+2)- LDS/LES/LFS/LGS/LSS ;全程指針的段地址2LDS/LES/LFS/LGS/LSS指令n設(shè)變量BUF的段

24、地址=0CA0H,偏移地址=0100H,BUF DW 1,2,3,4D32_BUF DD BUFLDS SI,D32_BUF3.3.4 邏輯運(yùn)算和位操作類(lèi)指令邏輯運(yùn)算指令n1求反指令NOTn2邏輯乘指令A(yù)NDn3測(cè)試指令TESTn4邏輯加指令ORn5按位加指令XOR 一、邏輯運(yùn)算n邏輯運(yùn)算指令對(duì)操作數(shù)的要求大多與MOV指令相同?!胺恰边\(yùn)算指令要求操作數(shù)不能是立即數(shù);n除“非”運(yùn)算指令外,其余指令的執(zhí)行都會(huì)使標(biāo)志位OF=CF=0n語(yǔ)句格式:NOT OPDn功能:將目的地址中的內(nèi)容逐位取反后送入目的地址。即(OPD)求反OPD 【例】邏輯非運(yùn)算。MOVAX,878AH;(AX)=878AHNOTA

25、X ;(AX)=7875H1求反指令NOTn語(yǔ)句格式:AND OPD, OPSn功能:將目的操作數(shù)和源操作數(shù)進(jìn)行邏輯乘運(yùn)算,結(jié)果存目的地址。即(OPD)(OPS)OPD。該指令用于清除目的操作數(shù)中與源操作數(shù)置0的對(duì)應(yīng)位。說(shuō)明:邏輯乘的運(yùn)算法則為:11=1,10=0,01=0,00=0【例】將AL中第3位和第7位清零。MOVAL,0FFH ANDAL,77H 2邏輯乘指令A(yù)ND“與”指令的應(yīng)用n實(shí)現(xiàn)兩操作數(shù)按位相與的運(yùn)算nAND BL,SIn使目標(biāo)操作數(shù)的某些位不變,某些位清零nAND AL,0FHn在操作數(shù)不變的情況下使CF和OF清零nAND AX,AXn語(yǔ)句格式:TEST OPD,OPS功能

26、:源地址和目的地址的內(nèi)容執(zhí)行按位的邏輯乘運(yùn)算,結(jié)果不送入目的地址。即(OPD)(OPS)?!纠繙y(cè)試AX中的第12位是否為0,不為0則轉(zhuǎn)L。TEST AX,1000HJNE L 3測(cè)試指令TESTn語(yǔ)句格式:OR OPD,OPS功能:將目的操作數(shù)和源操作數(shù)進(jìn)行邏輯加運(yùn)算,結(jié)果存目的地址。即(OPD)(OPS)OPD。說(shuō)明:邏輯加的運(yùn)算法則為:11=1,10=1,01=1,00=0?!纠繉L寄存器中第3位和第7位置1。MOVAL,0 OR AL,88H 4邏輯加指令ORn語(yǔ)句格式: XOR OPD,OPS功能:目的操作數(shù)與源操作數(shù)做按位加運(yùn)算,結(jié)果送入目的地址。即(OPD)(OPS) OPD

27、。說(shuō)明:按位加的運(yùn)算法則為;11=0,10=1,01=1,00=0?!纠堪次患舆\(yùn)算。MOVAL,45H;(AL)=45HXORAL,31H;(AL)=74H5按位加指令XOR移位指令 n移位指令包括算術(shù)移位指令、邏輯移位指令和循環(huán)移位指令,分別進(jìn)行左移和右移操作。這些指令均有統(tǒng)一的語(yǔ)句格式:SAL/SHL OPD, OPS ;左移SAR OPD, OPS ;算術(shù)右移 SHR OPD, OPS ;邏輯右移其中,OPD是8/16/32位的R/M;OPS是計(jì)數(shù)值(即移位次數(shù)),有三種情形:OPS即可是8位的立即數(shù)或CL的內(nèi)容(移位前次數(shù)-CL)。其功能為將目的操作數(shù)的所有位按操作符規(guī)定的方式移動(dòng)1

28、位或按寄存器CL規(guī)定的次數(shù)(0255)移動(dòng),結(jié)果送入目的地址。目的操作數(shù)是8位(或16位)的寄存器數(shù)據(jù)或存儲(chǔ)器數(shù)據(jù)。語(yǔ)句格式:SAL OPD,1 或SHL OPD,1 SAL OPD,CL或SHL OPD,CL功能:將(OPD)向左移動(dòng)CL指定的次數(shù),最低位補(bǔ)入相應(yīng)的,的內(nèi)容為最后移入位的值。1算術(shù)左移和邏輯左移指令SAL(SHL)算術(shù)左移和邏輯左移n算術(shù)左移指令: SAL OPRD,1 SAL OPRD,CLn邏輯左移指令: SHL OPRD,1 SHL OPRD,CL有符號(hào)數(shù)有符號(hào)數(shù)無(wú)符號(hào)數(shù)無(wú)符號(hào)數(shù)移動(dòng)一位后,若移動(dòng)一位后,若CF與最高不相等,則與最高不相等,則OF=1;否則;否則OF=0

29、語(yǔ)句格式:SAR OPD,1或SAR OPD,CLnCF功能:將(OPD)向右移動(dòng)CL指定的次數(shù)且最高位保持不變;CF的內(nèi)容為最后移入位的值。2算術(shù)右移指令SARMOVBH,0F4H;(BH)=0F4HMOVCL, 2;(CL)=2SARBH, CL;(BH)=0FDH,(CF)=0該例語(yǔ)句“SARBH,CL”實(shí)際上完成了(BH)BH的運(yùn)算,所以,用SAR指令可以實(shí)現(xiàn)對(duì)有符號(hào)數(shù)除2n的運(yùn)算(n為移位次數(shù))。【例】算術(shù)右移運(yùn)算n語(yǔ)句格式:SHR OPD,1或SHR OPD,CLn功能:將(OPD)向右移動(dòng)CL規(guī)定的次數(shù),最高位補(bǔ)入相應(yīng)個(gè)數(shù)的,CF的內(nèi)容為最后移入位的值。 3邏輯右移指令SHR邏輯

30、右移n格式: SHR OPRD,I SHR OPRD,CL0CF無(wú)符號(hào)數(shù)無(wú)符號(hào)數(shù)的右移的右移移動(dòng)一位后,若次高位與最高位不相等,則移動(dòng)一位后,若次高位與最高位不相等,則OF=1;否則;否則OF=0邏輯右移例:nMOV AL,68HnMOV CL,2nSHR AL,CL0CF0 1 1 0 1 0 AL0 0 0 0 0 1 1 0 1 0 0ALCF0 00 0 0 1 1 0 1 0 ALCF0 0移動(dòng)移動(dòng)1次次移動(dòng)移動(dòng)2次次n語(yǔ)句格式:ROL OPD,1或ROL LPD,CLn功能:將目的操作數(shù)的最高位與最低位連成一個(gè)環(huán),將環(huán)中的所有位一起向左移動(dòng)CL規(guī)定的次數(shù)。CF的內(nèi)容為最后移入位的值

31、。4循環(huán)左移指令ROLn語(yǔ)句格式: ROR OPD,1或ROR OPD,CLn功能:將目的操作數(shù)的最高位與最低位連成一個(gè)環(huán),將環(huán)中的所有位一起向右移動(dòng)CL規(guī)定的次數(shù),CF的內(nèi)容為最后移入位的值。5循環(huán)右移指令RORn語(yǔ)句格式: RCL OPD, 1或RCL OPD,CLn功能:將目的操作數(shù)連同CF標(biāo)志一起向左循環(huán)移動(dòng)CL規(guī)定的次數(shù)。 6帶進(jìn)位的循環(huán)左移指令RCLn語(yǔ)句格式:RCR OPD,1或RCR OD,CLn功能:將目的操作數(shù)連同CF標(biāo)志一起向右循環(huán)移動(dòng)所規(guī)定的次數(shù)。 7帶進(jìn)位的循環(huán)右移指令RCRnSAL AX,1;設(shè)AX初值=8701H,移位1位后,AX=0E02H,CF=1;nSHR

32、BX,CL;設(shè)BX初值=8701H,CL=2,CF=1;n移位后BX=21C0H,CF=0,CL=2;n將存儲(chǔ)單元中4個(gè)字節(jié)的內(nèi)容連續(xù)左移一位。nA DW 0FC85HnB DW 4321HnSHL A,1;A單元的內(nèi)容=0F90AH,CF=1;nRCL B,1;B單元的內(nèi)容=8643H,CF=0;例輸入輸出指令n1輸入指令I(lǐng)Nn2輸出指令OUT1輸入指令I(lǐng)Nn輸入指令用來(lái)從指定的外設(shè)寄存器取信息送入累加器。它有四種形式:n(1)語(yǔ)句格式:INAL,PORT 功能:(PORT) ALn(2)語(yǔ)句格式:INAX,PORT 功能:(PORT) AXn(3)語(yǔ)句格式:INAL,DX 功能:(DX)

33、ALn(4)語(yǔ)句格式:INAX,DX 功能:(DX) AL2輸出指令OUTn輸出指令用來(lái)把累加器的內(nèi)容送往指定的外設(shè)存儲(chǔ)器,它有四種形式:n(1)語(yǔ)句格式:OUTPORT,AL 功能:(AL)PORTn(2)語(yǔ)句格式:OUTPORT,AX 功能:(AX)PORTn(3)語(yǔ)句格式:OUTDX,AL 功能:(AL)DXn(4)語(yǔ)句格式:OUTDX,AX 功能:(AX)DX3.1.3算術(shù)運(yùn)算類(lèi)指令n加法指令n減運(yùn)算指令n乘運(yùn)算指令n除運(yùn)算指令 加法指令n1加1指令 INCn2加指令A(yù)DDn3帶進(jìn)位加指令A(yù)DCn1加1指令 INCn語(yǔ)句格式:INC OPDn功能:將目的操作數(shù)加1,結(jié)果送目的地址。即(

34、OPD)+1OPD。nINC指令是一個(gè)單操作數(shù)指令,操作數(shù)可以是寄存器或存儲(chǔ)器操作數(shù)。如:INC BX,即(BX)+1BX。加1指令可用于對(duì)計(jì)數(shù)器和地址指針進(jìn)行調(diào)整。 2加指令A(yù)DDn語(yǔ)句格式:ADD OPD, OPSn功能:將目的操作數(shù)與源操作數(shù)相加,結(jié)果存入目的地址中,源地址的內(nèi)容不改變。n即(OPD)+(OPS)OPD。n語(yǔ)句格式:ADC OPD,OPSn功能:將目的操作數(shù)加源操作數(shù)再加低位進(jìn)位,結(jié)果送目的地址。n即(OPD)+(OPS)+CF OPD。n【例】無(wú)符號(hào)雙字加法運(yùn)算。MOVAX,4652H;(AX)=4652HADDAX,0F0F0H;(AX)=3742H,CF=1MOVD

35、X,0234H;(DX)=0234HADCDX,0F0F0H;(DX)=0F325H,CF=03帶進(jìn)位加指令A(yù)DC減運(yùn)算指令n1減1指令DECn2減指令SUBn3求補(bǔ)指令NEGn4帶借位減指令 SBBn5比較指令 CMP1減1指令DECn語(yǔ)句格式:DEC OPD n功能:將目的操作數(shù)減1,結(jié)果送目的地址。即(OPD)1OPD。nDEC指令是一個(gè)單操作數(shù)指令,操作數(shù)可以是寄存器或存儲(chǔ)器操作數(shù)。n如:DEC CX。即(CX)1CX。n減1指令DEC也一般用于對(duì)計(jì)數(shù)器和地址指針的調(diào)整。n語(yǔ)句格式:SUB OPD,OPSn功能:目的操作數(shù)減源操作數(shù),結(jié)果存于目的地址,源地址內(nèi)容不變。n即(OPD)(O

36、PS)OPDn【例】減法運(yùn)算。nMOVAX ,5678H;(AX)=5678HSUBAX ,1234H;(AX)=4444HnMOVBX ,3354H;(BX)=3354HSUBBX ,3340H;(BX)=0014H2減指令SUBn語(yǔ)句格式:NEG OPDn功能:將目的操作數(shù)的每一位求反(包括符號(hào)位)后加1,結(jié)果送目的地址。n即(OPD)+1OPD。n【例】求補(bǔ)運(yùn)算。MOVAX,0FF64HNEGAL;(AX)=0FF9CHSUBAL,9DH;(AX)=0FFFFHNEGAX;(AX)=0001HDECAL;(AX)=0000HNEGAX;(AX)=0000H3求補(bǔ)指令NEGn語(yǔ)句格式:SB

37、B OPD ,OPSn功能:目的操作數(shù)減源操作數(shù)再減低位借位CF,結(jié)果送目的地址。n即(OPD)(OPS)CF OPD4帶借位減指令 SBB5比較指令 CMPn語(yǔ)句格式:CMP OPD,OPSn功能:目的操作數(shù)減源操作數(shù),結(jié)果只影響標(biāo)志位,不送入目的地址。n即(OPD)(OPS)。n【例】比較AL的內(nèi)容數(shù)值大小。nCMPAL,50;(AL)50nJBBELOW ;(AL)=50,( AL)50ALnINCAH;(AH)+1AHnBELOW:乘運(yùn)算指令n1無(wú)符號(hào)數(shù)乘法指令MULn2有符號(hào)乘指令I(lǐng)MUL1無(wú)符號(hào)數(shù)乘法指令MULn語(yǔ)句格式: MUL OPSn功能: 若是字節(jié)數(shù)據(jù)相乘,(AL)與OPS

38、相乘得到字?jǐn)?shù)據(jù)存入AX中;若是字?jǐn)?shù)據(jù)相乘,則(AX)與OPS相乘得到雙字?jǐn)?shù)據(jù),高字存入DX、低字存入AX中。n即字節(jié)乘法:(AL)* (OPS) AX,字乘法:(AX) * (OPS) DX,AX n【例】無(wú)符號(hào)數(shù)0A3H與11H相乘。nMOVAL,0A3H;(AL)=0A3HnMOVBL, 11H;(BL)=11HnMULBL ;(AX)=0AD3H2有符號(hào)乘指令I(lǐng)MULn語(yǔ)句格式:IMUL OPSn功能:字節(jié)乘法:(AL)*(OPS)AX,字乘法:(AX)*(OPS)DX、AX。nIMUL指令除計(jì)算對(duì)象是帶符號(hào)二進(jìn)制數(shù)外,其他都與MUL一樣,但計(jì)算結(jié)果不同。 n【例】有符號(hào)數(shù)0B4H與11

39、H相乘。nMOVAL,0B4H;(AL)=B4HnMOVBL,11H;(BL)=11HnIMULBL ;(AX)=0FAF4H 除運(yùn)算指令n1無(wú)符號(hào)除指令DIVn2有符號(hào)除指令I(lǐng)DIV1無(wú)符號(hào)除指令DIVn語(yǔ)句格式:DIV OPSn功能:字節(jié)除法:(AX)/(OPS) AL(商)、AH(余數(shù))字除法:(DX、AX)/(OPS) AX(商)、DX(余數(shù))n【例】寫(xiě)出實(shí)現(xiàn)無(wú)符號(hào)數(shù)0400H / 0B4H運(yùn)算的程序段。MOVAX,0400H;(AX)=0400HMOVBL,0B4H;(BL)=0B4HDIVBL ;商(AL)=05H,余數(shù)(AH)=7CH n語(yǔ)句格式:IDIV OPSn功能:字節(jié)除法

40、:(AX)/(OPS) AL(商)、AH(余數(shù))字除法:(DX,AX)/(OPS) AX (商)、DX(余數(shù))除法指令DIV和IDIV雖然對(duì)標(biāo)志的影響未定義,但可產(chǎn)生溢出。n【例】寫(xiě)出實(shí)現(xiàn)有符號(hào)數(shù)0400H /0B4H運(yùn)算的程序段。MOVAX,0400H;(AX)=0400HMOVBX,0B4H;(BX)=0B4HIDIVBX ;(AL)=0F3H,(AH)=24H2有符號(hào)除指令I(lǐng)DIV符號(hào)擴(kuò)展指令 n1字節(jié)轉(zhuǎn)換成字指令CBWn2將字轉(zhuǎn)換成雙字指令CWD1字節(jié)轉(zhuǎn)換成字指令CBW語(yǔ)句格式:CBWn功能:將AL中的符號(hào)位數(shù)據(jù)擴(kuò)展至AH。n【例】將字節(jié)數(shù)據(jù)擴(kuò)展成字?jǐn)?shù)據(jù)。MOVAL,0A5H;(AL)

41、=0A5HCBW ;(AX)=0FFA5HADDAL,70H;(AL)=25HCBW ;(AX)=0025Hn語(yǔ)句格式:CWDn功能:將AX中的符號(hào)位數(shù)據(jù)擴(kuò)展至DX 。n【例】將字?jǐn)?shù)據(jù)擴(kuò)展成雙字?jǐn)?shù)據(jù)。MOVDX, 0;(DX)=0MOVAX, 0FFABH;(AX)=0FFABHCWD;(DX)=0FFFFH (AX)=0FFABH2將字轉(zhuǎn)換成雙字指令CWD 十進(jìn)制調(diào)整指令n1壓縮BCD碼調(diào)整指令n2非壓縮BCD碼調(diào)整指令(1)加法的十進(jìn)制調(diào)整指令DAA n語(yǔ)句格式:DAAn功能:如果AL寄存器中低4位大于9或輔助進(jìn)位(AF)=1,則(AL)=(AL)+6且(AF)=1;如果(AL)=0A0H

42、或(CF)=1,則(AL)=(AL)+60H且(CF)=1。同時(shí),SF、ZF、PF均有影響。n【例】壓縮BCD碼的加法運(yùn)算。MOV AL,68H ;(AL)=68H,表示壓縮BCD碼68MOV BL,28H ;(BL)=28H,表示壓縮BCD碼28ADD AL,BL;二進(jìn)制加法:(AL)=68H+28H=90HDAA ;十進(jìn)制調(diào)整:(AL)=96H ;實(shí)現(xiàn)壓縮BCD碼加法:68+28=96(2)減法的十進(jìn)制調(diào)整指令DASn語(yǔ)句格式:DASn功能:如果(AF)=1或AL寄存器中低4位大于9,則(AL)=(AL)6且(AF)=1;如果(AL)=0A0H或(CF)=1,則(AL)=(AL)60H且(

43、CF)=1。同時(shí)SF、ZF、PF均受影響。n【例】壓縮BCD碼的減法運(yùn)算。nMOVAL,68H ;(AL)=68H,表示壓縮BCD碼68MOVBL,28H ;(BL)=28H,表示壓縮BCD碼28SUBAL,BL ;二進(jìn)制減法:(AL)=68H28H=40HDAS ;十進(jìn)制調(diào)整:(AL)=40H ;實(shí)現(xiàn)壓縮BCD碼減法:6828=402非壓縮BCD碼調(diào)整指令n(1)加法的非壓縮BCD碼調(diào)整指令A(yù)AAn(2)減法的非壓縮BCD碼調(diào)整指令A(yù)ASn(3)乘法的非壓縮BCD碼調(diào)整指令A(yù)AMn(4)除法的非壓縮BCD碼調(diào)整指令A(yù)ADn語(yǔ)句格式:AAA n功能:如果AL的低4位大于9或(AF)=1,則:(

44、AL)=(AL)+6(AH)=(AH)+1(AF)=(CF)=1且AL高4位清零。否則:(CF)=(AF)=0AL高4位清零。(1)加法的非壓縮BCD碼調(diào)整指令A(yù)AAn語(yǔ)句格式:AAS n功能:如果AL的低4位大于9或(AF)=1,則:(AL)=(AL)6(AH)=(AH)1(AF)=(CF)=1AL高4位清零。否則:(CF)=(AF)=0 AL高4位清零。其他標(biāo)志位OF、PF、SF、ZF不確定。(2)減法的非壓縮BCD碼調(diào)整指令A(yù)ASn語(yǔ)句格式:AAM n功能:被調(diào)整的乘積在AX中,對(duì)AL按10取模,則:(AL)0AHAH(商):AL(余數(shù))其中AH為商,AL為余數(shù),標(biāo)志位AF、CF、OF、

45、PF、SF、ZF受影響。 (3)乘法的非壓縮BCD碼調(diào)整指令A(yù)AM語(yǔ)句格式:AAD n功能:除法運(yùn)算前,先調(diào)整被除數(shù)AX內(nèi)容,使: (AL)=(AL)+(AH)*0AH (AH)=0即把非壓縮型十進(jìn)制數(shù)變成二進(jìn)制數(shù)。(4)除法的非壓縮BCD碼調(diào)整指令A(yù)AD3.3.4 邏輯運(yùn)算和位操作類(lèi)指令邏輯運(yùn)算指令n1求反指令NOTn2邏輯乘指令A(yù)NDn3測(cè)試指令TESTn4邏輯加指令ORn5按位加指令XORn語(yǔ)句格式:NOT OPDn功能:將目的地址中的內(nèi)容逐位取反后送入目的地址。即(OPD)求反OPD 【例】邏輯非運(yùn)算。MOVAX,878AH;(AX)=878AHNOTAX ;(AX)=7875H1求反

46、指令NOTn語(yǔ)句格式:AND OPD, OPSn功能:將目的操作數(shù)和源操作數(shù)進(jìn)行邏輯乘運(yùn)算,結(jié)果存目的地址。即(OPD)(OPS)OPD。該指令用于清除目的操作數(shù)中與源操作數(shù)置0的對(duì)應(yīng)位。說(shuō)明:邏輯乘的運(yùn)算法則為:11=1,10=0,01=0,00=0【例】將AL中第3位和第7位清零。MOVAL,0FFH ANDAL,77H 2邏輯乘指令A(yù)NDn語(yǔ)句格式:TEST OPD,OPS功能:源地址和目的地址的內(nèi)容執(zhí)行按位的邏輯乘運(yùn)算,結(jié)果不送入目的地址。即(OPD)(OPS)?!纠繙y(cè)試AX中的第12位是否為0,不為0則轉(zhuǎn)L。TEST AX,1000HJNE L 3測(cè)試指令TESTn語(yǔ)句格式:OR

47、OPD,OPS功能:將目的操作數(shù)和源操作數(shù)進(jìn)行邏輯加運(yùn)算,結(jié)果存目的地址。即(OPD)(OPS)OPD。說(shuō)明:邏輯加的運(yùn)算法則為:11=1,10=1,01=1,00=0?!纠繉L寄存器中第3位和第7位置1。MOVAL,0 OR AL,88H 4邏輯加指令ORn語(yǔ)句格式: XOR OPD,OPS功能:目的操作數(shù)與源操作數(shù)做按位加運(yùn)算,結(jié)果送入目的地址。即(OPD)(OPS) OPD。說(shuō)明:按位加的運(yùn)算法則為;11=0,10=1,01=1,00=0。【例】按位加運(yùn)算。MOVAL,45H;(AL)=45HXORAL,31H;(AL)=74H5按位加指令XOR移位指令 n移位指令包括算術(shù)移位指令、

48、邏輯移位指令和循環(huán)移位指令,分別進(jìn)行左移和右移操作。這些指令均有統(tǒng)一的語(yǔ)句格式:SAL/SHL OPD, OPS ;左移SAR OPD, OPS ;算術(shù)右移 SHR OPD, OPS ;邏輯右移其中,OPD是8/16/32位的R/M;OPS是計(jì)數(shù)值(即移位次數(shù)),有三種情形:OPS即可是8位的立即數(shù)或CL的內(nèi)容(移位前次數(shù)-CL)。其功能為將目的操作數(shù)的所有位按操作符規(guī)定的方式移動(dòng)1位或按寄存器CL規(guī)定的次數(shù)(0255)移動(dòng),結(jié)果送入目的地址。目的操作數(shù)是8位(或16位)的寄存器數(shù)據(jù)或存儲(chǔ)器數(shù)據(jù)。語(yǔ)句格式:SAL OPD,1 或SHL OPD,1 SAL OPD,CL或SHL OPD,CL功能

49、:將(OPD)向左移動(dòng)CL指定的次數(shù),最低位補(bǔ)入相應(yīng)的,的內(nèi)容為最后移入位的值。1算術(shù)左移和邏輯左移指令SAL(SHL)語(yǔ)句格式:SAR OPD,1或SAR OPD,CLnCF功能:將(OPD)向右移動(dòng)CL指定的次數(shù)且最高位保持不變;CF的內(nèi)容為最后移入位的值。2算術(shù)右移指令SARMOVBH,0F4H;(BH)=0F4HMOVCL, 2;(CL)=2SARBH, CL;(BH)=0FDH,(CF)=0該例語(yǔ)句“SARBH,CL”實(shí)際上完成了(BH)BH的運(yùn)算,所以,用SAR指令可以實(shí)現(xiàn)對(duì)有符號(hào)數(shù)除2n的運(yùn)算(n為移位次數(shù))?!纠克阈g(shù)右移運(yùn)算n語(yǔ)句格式:SHR OPD,1或SHR OPD,CL

50、n功能:將(OPD)向右移動(dòng)CL規(guī)定的次數(shù),最高位補(bǔ)入相應(yīng)個(gè)數(shù)的,CF的內(nèi)容為最后移入位的值。 3邏輯右移指令SHRn語(yǔ)句格式:ROL OPD,1或ROL LPD,CLn功能:將目的操作數(shù)的最高位與最低位連成一個(gè)環(huán),將環(huán)中的所有位一起向左移動(dòng)CL規(guī)定的次數(shù)。CF的內(nèi)容為最后移入位的值。4循環(huán)左移指令ROLn語(yǔ)句格式: ROR OPD,1或ROR OPD,CLn功能:將目的操作數(shù)的最高位與最低位連成一個(gè)環(huán),將環(huán)中的所有位一起向右移動(dòng)CL規(guī)定的次數(shù),CF的內(nèi)容為最后移入位的值。5循環(huán)右移指令RORn語(yǔ)句格式: RCL OPD, 1或RCL OPD,CLn功能:將目的操作數(shù)連同CF標(biāo)志一起向左循環(huán)移

51、動(dòng)CL規(guī)定的次數(shù)。 6帶進(jìn)位的循環(huán)左移指令RCLn語(yǔ)句格式:RCR OPD,1或RCR OD,CLn功能:將目的操作數(shù)連同CF標(biāo)志一起向右循環(huán)移動(dòng)所規(guī)定的次數(shù)。 7帶進(jìn)位的循環(huán)右移指令RCR3.3.5串操作類(lèi)指令n串操作指令 : 數(shù)據(jù)傳送類(lèi)指令每次只能傳送一個(gè)數(shù)據(jù),若要傳送大批數(shù)據(jù)就需要重復(fù)編程,這樣就浪費(fèi)了大量的時(shí)間和空間。為此8086提供了一組處理主存中連續(xù)存放數(shù)據(jù)串的指令,這就是串操作指令。 下圖流程圖總結(jié)了串操作的過(guò)程 串操作流程圖串操作流程圖n語(yǔ)句格式: MOVSB字節(jié)串傳送 MOVSW字串傳送功能:將以SI為指針的源串中的一個(gè)字節(jié)(或字)存儲(chǔ)單元中的數(shù)據(jù)傳送至以DI為指針的目的地址

52、中去,并自動(dòng)修改指針,使之指向下一個(gè)字節(jié)(或字)存儲(chǔ)單元。即:(DS:SI)ES:DI。 當(dāng)DF=0時(shí),(SI)和(DI)增量。當(dāng)DF=1時(shí),(SI)和(DI)減量。1傳送指令MOVSn語(yǔ)句格式: CMPSB字節(jié)串比較 CMPSW字串比較功能:將SI所指的源串中的一個(gè)字節(jié)(或字)存儲(chǔ)單元中的數(shù)據(jù)與DI所指的目的串中的一個(gè)字節(jié)(或字)存儲(chǔ)單元中的數(shù)據(jù)相減,并根據(jù)相減的結(jié)果設(shè)置標(biāo)志,但結(jié)果并不保存。即:(SI)(DI)。 修改串指針,使之指向串中的下一個(gè)元素。當(dāng)DF=0時(shí),(SI)和(DI)增量。當(dāng)DF=1時(shí),(SI)和(DI)減量。2串比較指令CMPS n語(yǔ)句格式: SCASB字節(jié)串搜索 SCA

53、SW字串搜索功能:AL(字節(jié))或AX(字)中的內(nèi)容與DI所指的目的串中的一個(gè)字節(jié)(或字)存儲(chǔ)單元中的數(shù)據(jù)相減,根據(jù)相減結(jié)果設(shè)置標(biāo)志位,結(jié)果不保存,即: 字節(jié)操作:(AL)(DI),字操作:(AX)(DI)。 修改指針使之指向串中的下一個(gè)元素。當(dāng)DF=0時(shí),(DI)增量。當(dāng)DF=1時(shí),(DI)減量。3串搜索指令SCASn語(yǔ)句格式: LODSB從字節(jié)串中取數(shù) LODSW從字串中取數(shù)功能:將SI所指的源串中的一個(gè)字節(jié)(或字)存儲(chǔ)單元中的數(shù)據(jù)取出來(lái)送入AL(或AX)中。即: 字節(jié)操作:(SI)AL,字操作:(SI)AX。 修改指針SI,使它指向串中的下一個(gè)元素。當(dāng)DF=0時(shí),(SI)增量。當(dāng)DF=1時(shí),(SI)減量。 4從源串中取數(shù)指令LODSn語(yǔ)句格式: STOSB往字節(jié)串中存數(shù)(2)STOSW往字串中存數(shù)功能:將AL或AX中的數(shù)據(jù)送入DI所指的目的串中的字節(jié)(或字)存儲(chǔ)單元中。即: 字節(jié)操作:(AL)DI,字操作:(AX)DI。 修改指針DI,使之指向串中的下一個(gè)元素。當(dāng)DF=0時(shí),(DI)增量)。當(dāng)DF=1時(shí),(DI)減量。5往目的串中存數(shù)指令STOSn(1)REP REP前綴用在MOVS、STOS 、LODS指令前。功能:每執(zhí)行一次串指令(CX)1,直到(CX)=0,重復(fù)執(zhí)行結(jié)束。n(2)REPZ 該指令一般用在CMP、SCAS指令前。功能:每執(zhí)行一次串指令(CX

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論