處理機(jī)控制指令_第1頁(yè)
處理機(jī)控制指令_第2頁(yè)
處理機(jī)控制指令_第3頁(yè)
處理機(jī)控制指令_第4頁(yè)
處理機(jī)控制指令_第5頁(yè)
已閱讀5頁(yè),還剩34頁(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)介

處理機(jī)控制指令1)標(biāo)志處理指令▲設(shè)置和清除標(biāo)志的指令,只影響指令指定的標(biāo)志22)處理機(jī)控制指令①暫停指令HLT格式HLT執(zhí)行使CPU處于暫停狀態(tài)用于等待外部中斷,中斷處理結(jié)束后,繼續(xù)執(zhí)行HLT后的下一條指令例、、、、、、STI;允許外部中斷HLT;等待中斷MOVAX,0、、、、、、3②空操作指令NOP格式NOP指令不執(zhí)行任何操作例:(也可用NOP指令進(jìn)行短延時(shí)(教材中的一些例子用到)其機(jī)器碼占一個(gè)字節(jié)單元,在調(diào)試程序時(shí),修改程序用。47.串處理指令

串的基本概念順序存放在內(nèi)存中的一組數(shù)據(jù),稱為串。用串的首(末)地址、元素類型、串的長(zhǎng)度表示。5

串操作種類①串傳送將串從內(nèi)存某一區(qū)域傳送到另一區(qū)域。②從串取從串中取出某一元素。③存入串將某個(gè)數(shù)據(jù)存入串中。④串比較對(duì)兩個(gè)串進(jìn)行比較。⑤搜索串在串中搜索(查找)某數(shù)據(jù)(關(guān)鍵字)6

串處理指令格式重復(fù)控制前綴串指令控制重復(fù)次數(shù)基本操作

MOVSB、MOVSW

串傳送REPLODSB、LODSW

從串取REPZSTOSB、STOSW

存入串REPNZCMPSB、CMPSW

串比較

SCASB、SCASW

搜索串例

REPMOVSBREPZCMPSBREPNZSCASW7①串指令串傳送MOVS

從串取LODS

存入串STOS

串比較CMPS

搜索串SCAS

8串指令的特點(diǎn)①指令給出串操作的種類、類型,而操作數(shù)隱含給出。如MOVSB;字節(jié)

MOVSW;字②源串由DS:SI指向的單元目的串由ES:DI指向的單元③指令執(zhí)行后,指針據(jù)DF標(biāo)志、操作類型自動(dòng)修改字節(jié)操作1;字操作2DF=0用+;DF=1用-9④對(duì)只有一個(gè)存儲(chǔ)器操作數(shù)的串指令如LODS(從串?。㏒TOS(存入串)SCAS(搜索串)另一個(gè)操作數(shù)在AL(字節(jié)操作)或AX(字操作)⑤CMPS(串比較)、SCAS(串搜索)影響標(biāo)志,MOVS(串傳送)、LODS(從串取)、STOS(存入串)不影響標(biāo)志。10

串傳送◢◢格式MOVSB

字節(jié)傳送

MOVSW

字傳送◢◢

MOVSB執(zhí)行操作

(ES:DI)←(DS:SI)

字節(jié)傳送

(SI)←(SI)1

修改源串指針

(DI)←(DI)1修改目的串指針其中:DF=0,用+DF=1,用-◢◢

MOVSW執(zhí)行操作

(ES:DI)←(DS:SI)

字傳送

(SI)←(SI)2修改源串指針

(DI)←(DI)2修改目的串指針11從串取◢◢格式LODSB 取字節(jié)

LODSW取字◢◢LODSB執(zhí)行操作

(AL)←(DS:SI)

從源串取入AL

(SI)←(SI)1修改源串指針◢◢

LODSW執(zhí)行操作

(AX)←(DS:SI)

從源串取入AX

(SI)←(SI)2

修改源串指針12存入串◢◢格式STOSB存入字節(jié)

STOSW存入字◢◢

STOSB執(zhí)行操作

(ES:DI)←(AL)

將AL存入目的串

(DI)←(DI)1修改目的串指針◢◢STOSW執(zhí)行操作

(ES:DI)←(AX)

將AX存入目的串

(DI)←(DI)2

修改目的串指針13串比較◢◢格式CMPSB

字節(jié)比較

CMPSW

字比較◢◢

CMPSB執(zhí)行操作

(DS:SI)-(ES:DI)

字節(jié)比較

(SI)←(SI)1修改源串指針

(DI)←(DI)1修改目的串指針◢◢

CMPSW執(zhí)行操作

(DS:SI)-(ES:DI)

字比較

(SI)←(SI)2修改源串指針

(DI)←(DI)2修改目的串指針注意:1.源串-目的串

2.兩數(shù)相減,只影響標(biāo)志,不影響操作數(shù)14搜索串◢◢格式SCASB

取字節(jié)

SCASW

取字◢◢

SCASB執(zhí)行操作

(AL)-(ES:DI)

從目的串搜索字節(jié)

(DI)←(DI)1修改目的串指針◢◢

SCASW執(zhí)行操作

(AX)-(ES:DI)

從目的串搜索字節(jié)

(DI)←(DI)2修改目的串指針兩數(shù)相減,只影響標(biāo)志,不影響操作數(shù)。15②重復(fù)控制前綴重復(fù)前綴REP當(dāng)相等重復(fù)前綴REPZ/REPE當(dāng)不相等重復(fù)前綴REPNZ/REPNE16重復(fù)前綴REP執(zhí)行過(guò)程:(1)當(dāng)(CX)=0

,結(jié)束REP,執(zhí)行REP下一條指令。(2)當(dāng)(CX)≠0,將CX的內(nèi)容減1,執(zhí)行REP后的串指令,返回(1)。例

LEADI,destinationLEASI,sourceMOVCX,20

REPMOVSBMOVAX,0

只在(CX)=0時(shí)退出循環(huán)17當(dāng)相等重復(fù)前綴REPZ執(zhí)行過(guò)程:(1)

當(dāng)(CX)=0,結(jié)束REPZ,執(zhí)行REPZ下一條指令;(2)

當(dāng)(CX)≠0,將CX的內(nèi)容減1,執(zhí)行REPZ后的串指令;(3)

當(dāng)ZF=1,返回(1);(4)

當(dāng)ZF≠1,則結(jié)束REPZ,

執(zhí)行REPZ下一條指令。

(CX)減1操作不影響標(biāo)志

ZF標(biāo)志由串操作決定18當(dāng)不相等重復(fù)前綴REPNZ執(zhí)行過(guò)程:(1)

當(dāng)(CX)=0,結(jié)束REPNZ,執(zhí)行REPNZ下一條指令。(2)當(dāng)(CX)≠0,將CX的內(nèi)容減1,執(zhí)行REPNZ后的串指令。(3)

當(dāng)ZF=0,返回(1);(4)

當(dāng)ZF≠0,則結(jié)束REPNZ,

執(zhí)行REPNZ下一條指令。19例1用REPMOVS進(jìn)行數(shù)據(jù)塊傳送。編程:①設(shè)置傳送方向用CLD使DF=0,地址增加方向(正向)用STD使DF=1,地址減小方向(反向)②設(shè)置源串地址將源串首地址(DF=0),或末地址(DF=1)放入DS、SI中。③設(shè)置目的串地址將目的串首地址(DF=0),或末地址(DF=1)放入ES、DI中。④設(shè)置串長(zhǎng)度將串的長(zhǎng)度(傳送次數(shù))放入CX中。⑤字節(jié)傳送用REPMOVSB字傳送用REPMOVSW20例1

編程將存放在str1中的4字節(jié)字符串傳送到str2定義的緩沖區(qū)中?!瓺’‘C’‘B’‘A’str1str221data1SEGMENTstr1DB‘ABCD’;源串data1ENDSdata2SEGMENTstr2DB4DUP(?);緩沖區(qū)data2ENDScodeSEGMENT、、、、、、CLD;DF=0,正方向傳送MOVAX,data1;源串首地址的段值→DSMOVDS,AXLEASI,str1;源串首地址的偏值→SIMOVAX,data2;目的串首地址的段值→ESMOVES,AXLEADI,str2;目的串首地址的偏值→DIMOVCX,4;串長(zhǎng)度CXREPMOVSB;串傳送、、、、、、codeENDS22data1SEGMENTstr1DB‘ABCD’data1ENDSdata2SEGMENTstr2DB4DUP(?)data2EMDScodeSEGMENT、、、、、、CLDMOVAX,data1MOVDS,AXLEASI,str1MOVAX,data2MOVES,AXLEADI,str2MOVCX,4REPMOVSB、、、、、、codeENDS假設(shè)程序經(jīng)匯編、連接后,裝入內(nèi)存的情況如下:23程序執(zhí)行結(jié)果:24例2比較string1和string2的兩串,長(zhǎng)度為8字節(jié)25用REPZCMPS進(jìn)行串比較編程:①設(shè)置比較方向(STD或CLD)②設(shè)置源串、目的串地址將源串首地址(DF=0時(shí)),或末地址(DF=1時(shí))放入DS、SI將目的串首地址(DF=0時(shí)),或末地址(DF=1時(shí))放入ES、DI③設(shè)置串長(zhǎng)度將串的長(zhǎng)度放入CX中④按字節(jié)比較用REPZCMPSB按字比較用REPZCMPSW26執(zhí)行完REPZCMPS后,根據(jù)ZF判斷兩串比較結(jié)果。若ZF=1,兩串相等,此時(shí):

CX=0,表明串中所有元素已比較完畢

SI、DI指向串尾的下一單元。若ZF=0,兩串不等,此時(shí):

CX的值為剩下的未比較的元素個(gè)數(shù)。

SI、DI指向不相等元素的下一元素。27codeSEGMENT、、、、、、CLD;DF=0,正向比較MOVAX,SEGstring1;源串首地址→DS:SIMOVDS,AXLEASI,string1MOVAX,SEGstring2;目的串首地址→ES:DIMOVES,AXLEADI,string2MOVCX,8;串長(zhǎng)度→CXREPZCMPSB;串比較JZequal;利用ZF判斷比較結(jié)果不相等處理JMPexitequal:相等處理exit:、、、codeENDS28codeSEGMENT、、、、、、CLD;DF=0,正向比較MOVAX,SEGstring1;源串首地址→DS:SIMOVDS,AXLEASI,string1MOVAX,SEGstring2;目的串首地址→ES:DIMOVES,AXLEADI,string2MOVCX,8;串長(zhǎng)度→CXREPZCMPSB

JZequal不相等處理JMPexitequal:相等處理exit:、、、codeENDSJNZnotequ相等處理JMPexitnotequ:不相等處理exit:、、、29執(zhí)行完REPZCMPSB后,此時(shí):ZF=1,兩串相等CX=0,兩串所有元素已比較完SI、DI串尾的下一單元例30執(zhí)行完REPZCMPSB后,此時(shí):ZF=0,兩串不等CX=3,剩下的未比較的元素個(gè)數(shù)SI、DI指向不相等元素的下一元素。例31例3用REPNZSCAS在串中找關(guān)鍵字。編程步驟:①設(shè)置查找方向②設(shè)置串地址將串的首地址(DF=0時(shí)),或末地址(DF=1時(shí))放入ES、DI中。③設(shè)置關(guān)鍵字將關(guān)鍵字放入AL(關(guān)鍵字為字節(jié))或

放入AX(關(guān)鍵字為字)。④設(shè)置串長(zhǎng)度將串的長(zhǎng)度放入CX中。⑤查找字節(jié)用REPNZSCASB查找字用REPNZSCASW32執(zhí)行完REPNZSCAS后,根據(jù)ZF判斷查找結(jié)果。若ZF=1,則串中有關(guān)鍵字,此時(shí):

CX的值為剩下的未搜索的元素個(gè)數(shù),

DI指向關(guān)鍵字元素的下一元素,

而關(guān)鍵字在(DI)-1的位置若ZF=0,則串中無(wú)關(guān)鍵字,此時(shí):

CX=0,表明串中所有元素以搜索完畢

DI指向串尾的下一單元。33例、、、

溫馨提示

  • 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)論