資源描述:
《《x指令系統(tǒng)》PPT課件》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、三、邏輯類指令1.邏輯運(yùn)算指令●運(yùn)算規(guī)則:按位操作,無(wú)進(jìn)/借位●對(duì)標(biāo)志位的影響(除NOT指令外):CFOFSFZFPFAF00***無(wú)定義根據(jù)運(yùn)算結(jié)果設(shè)置“與”運(yùn)算指令格式:ANDdst,src“或”運(yùn)算指令格式:ORdst,src“非”運(yùn)算指令格式:NOTopr“異或”運(yùn)算指令格式:XORdst,src測(cè)試指令格式:TESTdst,src說(shuō)明:TEST相當(dāng)于AND運(yùn)算,但是不保存結(jié)果,僅影響標(biāo)志。(1)邏輯”與”AND對(duì)兩個(gè)操作數(shù)進(jìn)行按位邏輯“與”操作。格式:ANDdest,src用途:保留操作數(shù)的某幾位,清零其他位。例1:保留AL中低4位,高4位清
2、0。ANDAL,0FH例2:AL中有字符’a’~’z’,將其轉(zhuǎn)換成大寫(xiě)。(‘a(chǎn)’=61h,‘A’=41h)ANDAL,01001111B例:測(cè)試AL的bit7,bit5,bit2是否都是1。ANDAL,10100100BCMPAL,10100100BJZYES;ifmatch,gotoYES……;ifnotmatch……YES:……;goeshereifall‘1’對(duì)兩個(gè)操作數(shù)進(jìn)行按位邏輯”或”操作。格式:ORdest,src用途:對(duì)操作數(shù)的某幾位置1;對(duì)兩操作數(shù)進(jìn)行組合。例:把AL中的非壓縮BCD碼變成相應(yīng)十進(jìn)制數(shù)的ASCII碼。ORAL,30H(2
3、)邏輯”或”O(jiān)R例:把AH和AL中的非壓縮BCD碼組合成壓縮的BCD碼,放到AL中。MOVCL,4SHLAH,CLORAL,AH例:把AL的第5位置為1ORAL,00100000B對(duì)操作數(shù)進(jìn)行按位邏輯”非”操作。格式:NOTmem/reg例:NOTCXNOTBYTEPTR[DI](3)邏輯“非”(取反)NOT對(duì)兩個(gè)操作數(shù)按位進(jìn)行”異或”操作。格式:XORdest,src用途:對(duì)reg清零(自身異或)把reg/mem的某幾位變反(與’1’異或)例:把AX寄存器清零。例2:把DH的bit4,3變反①M(fèi)OVAX,0XORDH,18H②XORAX,AX③AND
4、AX,0④SUBAX,AX(4)邏輯”異或”XOR操作與AND指令類似,但不將”與”的結(jié)果送回,只影響標(biāo)志位。TEST指令常用于位測(cè)試,與條件轉(zhuǎn)移指令一起用。例:測(cè)試AL的內(nèi)容是否為負(fù)數(shù)。TESTAL,80H;檢查AL中D7=1?JNZMINUS;是1(負(fù)數(shù)),轉(zhuǎn)MINUS……;否則(正數(shù))不轉(zhuǎn)移MINUS:…………(5)測(cè)試指令TEST邏輯運(yùn)算指令常見(jiàn)的用法總結(jié)⑴清進(jìn)位標(biāo)志位:ANDAX,AX或ORAL,AL等⑵清零操作數(shù):XORAX,AX不僅把AX清零,而且也影響了狀態(tài)標(biāo)志⑶把某幾位取反:用XOR指令,把要取反的位和1異或,不變的位和0異或⑷清零或
5、置位某幾位:用AND指令清零,用OR指令置位四、串操作指令8086/8088指令系統(tǒng)中有一組十分有用的串操作指令,這些指令的操作對(duì)象不只是單個(gè)的字節(jié)或字,而是內(nèi)存中地址連續(xù)的字節(jié)串或字串。在每次基本操作后,能夠自動(dòng)修改地址,為下一次操作做好準(zhǔn)備。串操作指令還可以加上重復(fù)前綴,此時(shí)指令規(guī)定的操作將一直重復(fù)下去,直到完成預(yù)定的重復(fù)次數(shù)。串操作指令共有以下五條:MOVS(Movestring)串傳送CMPS(Comparestring)串比較SCAS(Scanstring)串掃描LODS(Loadfromstring)從串中取數(shù)據(jù)STOS(Storeinto
6、string)存數(shù)據(jù)到串中串操作指令功能說(shuō)明⑴MOVS指令MOVSB或MOVSW以字節(jié)或字為單位在存儲(chǔ)單元之間傳送數(shù)據(jù)可以使用REP前綴⑵LODS指令LODSB或LODSW從內(nèi)存中取出字節(jié)或字到累加器AL或AX可以使用REP前綴,但意義不大。⑶STOS指令STOSB或STOSW從累加器中存字節(jié)或字到存儲(chǔ)器可以使用REP前綴⑷CMPS指令CMPSB或CMPSW以字節(jié)或字為單位進(jìn)行兩個(gè)存儲(chǔ)器操作數(shù)的比較可以使用REPE/REPZ前綴用源操作數(shù)-目的操作數(shù)⑸SCAS指令SCASB或SCASW在數(shù)據(jù)串中查找AL或AX中的內(nèi)容??梢允褂肦EPNE/REPNZ前綴
7、表4.9串操作指令指令類型指令格式操作功能對(duì)標(biāo)志的影響OSZAPC串傳送指令MOVSDstring,SstringMOVSBMOVSW((ES):(DI))?((DS):(SI))(SI)?(SI)?1或(SI)?(SI)?2(DI)?(DI)?1或(DI)?(DI)?2××××××串裝入指令LODSSstringLODSBLODSW(AL)/(AX)?((DS):(SI))(SI)?(SI)?1或(SI)?(SI)?2××××××串保存指令STOSDstringSTOSBSTOSW((ES):(DI))?(AL)/(AX)(DI)?(DI)?1或(D
8、I)?(DI)?2××××××串比較指令CMPSSstring,DstringCMPSBCMP