字符串處理指令_第1頁
字符串處理指令_第2頁
字符串處理指令_第3頁
字符串處理指令_第4頁
字符串處理指令_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

字符串處理指令字符串:一系列存放在存儲器中的字或字節(jié)數(shù)據(jù),不管他們是不是ASCII碼。字符串長度可達64K字節(jié),組成字符串的字節(jié)或字稱為字符串元素,每種字符串指令對字符串對字符串元素只進行同一種操作。8086提供5條1字節(jié)的字符串操作指令,專門對存儲器中的字節(jié)串和字串數(shù)據(jù)進行傳送、比較、掃描、存儲及裝入等5種操作。使用字符串操作指令時,可以有兩種方法告訴匯編程序是進行字節(jié)操作還是字操作。一種方法是用指令中的源串和目的串名來表明是字節(jié)還是字,另一種方法是在指令助記符后加B說明是字節(jié),加W說明是字操作。這樣每種指令都有3種格式。字符串傳送,MOVS目的串,源串MOVSBMOVSW字符串比較,CMPS目的串,源串CWPSBCMPSW字符串掃描,SCAS目的串SCASBSCASW字符串裝入,LODS源串LODSBLODSW字符串存儲,STOS目的串STOSBSTOSW字符串指令執(zhí)行時,必須遵守以下隱含約定:源串位于當前數(shù)據(jù)段,由DS尋址,源串的元素由SI作指針,即源串字符的起始地址為DS:SI。源串允許使用段超越前綴來修改段地址。目的串必須位于當前的附加段中,由ES尋址,目的串元素由DI做指針,即目的串字符的首地址為ES:DI,但目的串不允許使用短超越前綴修改ES。如果要在同一段內進行串運算,必須使DS和ES指向同一段。每執(zhí)行一次字符串指令,指針SI和DI會自動進行修改,以便指向下一待操作單元。DF標志控制字符的處理方向。DF=0為遞增方向,這時DS:SI指向源串首地址,每進行一次串操作,使SI和DI增加,字節(jié)串操作時,SI和DI分別增1,字串操作時,SI和DI分別增2,;DF=1為遞減方向,這時,DS:SI指向源串末地址,每執(zhí)行一次串操作,使SI和DI分別減量,字節(jié)串操作時減1,字串操作時減2.可用標志操作指令STD和CLD來改變DF的值,STD使DF置1,CLD使DF清零。要處理的字符串長度(字或字節(jié)數(shù))放在CX寄存器中。為了加快串運算指令的執(zhí)行速度,可在基本指令前加重復前綴,是數(shù)據(jù)傳指令重復執(zhí)行。每重復執(zhí)行一次,地址指針SI和DI都根據(jù)方向標志自動進行修改,CX的值則將自動減1.能與基本指令配合使用的重復前綴有:REP無條件重復REPE\REPZ相等\結果為零則重復REPNE\REPNZ不相等\結果不為零則重復無條件重復指令REP常與傳送指令(MOVS)連用,連續(xù)進行字符串傳送操作,直到整個字符串傳送完畢,CX=0為止。重復前綴REPE和REPZ具有相同的含義,它們常與串比較指令(CMPS)連用,用于字符串比較操作。當兩個字符串相等(ZF=1)和CX0時,則進行重復比較,直到ZF=0或CX=0為止。重復前綴REPNE和REPNZ也具有相同的意義,它們常與串掃描指令(SCAS)連用,當結果非零時(ZF=0)和CX0時,重復進行,直到ZF=1或CX=0為止。帶有重復前綴的串運算時間可能很長,在指令執(zhí)行過程中允許有中斷進入,因此在處理每個元素之前都在查詢是否有中斷請求,一旦外部有中斷進入,CPU將暫停執(zhí)行當前的串操作指令,轉去執(zhí)行相應得中斷服務程序,使中斷服務完成后,再去執(zhí)行被中斷的串操作指令。分別介紹:MOVS字符串操作指令指令格式:MOVS目的串,源串指令功能:把由SI指針的源串中的一個字節(jié)或一個字傳送到由DI作指針的目的串中,且自動修改指針SI和DI在實際應用中,人們經常需要在存儲單元之間傳送數(shù)據(jù)。然而,MOVS指令不能直接在存儲單元之間傳送數(shù)據(jù),為了實現(xiàn)這種操作,必須以某一通用寄存器為橋梁,先把一個存儲單元的數(shù)據(jù)送到指定的通用寄存器中,再把寄存器中的數(shù)據(jù)傳送到另一個存儲單元中,每進行一次傳送操作,還必須修改地址指針。如果改用MOVS指令,便能方便地實現(xiàn)這種功能,它不但能把數(shù)據(jù)從內存中的某一地址傳送到另一地址,還能自動修改源和目的地址。若使用重復前綴,還可以利用一條指令傳送一批數(shù)據(jù)。例要求把數(shù)據(jù)段中以SRC_MESS為偏移地址的一串字符“HELLO!"傳送到附加段中以NEW_LOC開始的單元中。實現(xiàn)該操作的程序如下:DATASEGMENT;數(shù)據(jù)段SRC_MESSDB"HELLO!";源串DATAENDS;EXTRASEGMENT;附加段NEW_LOCDB6DUP(?);存放目的串EXTRAENDS;CODESEGMENT;代碼段ASSUMECS:CODE,DS:DATA,ES:EXTRASTART:MOVAX,DATAMOVDS,AN;DS=數(shù)據(jù)段段址MOVAX,EXTRAMOVES,AX;ES=附加段段址LEASI,SRC_MESS;SI指向源串偏移地址LENDI,NEW_LOC;DI指向目的串偏移地址MOVCX,6;CX作串長度計數(shù)器CLD;清方向標志,地址增量REPMOVSB;重復傳送串中的各字節(jié),直到CX=0為止CODEENDSENDSTART例中的REPMOVSB也可用指令代替:AGAIN:MOVSNEW_LOC,SRC_MESSDECCXJNZAGAIN比較這兩種方法,顯然可以發(fā)現(xiàn),使用有重復前綴REP的MOVSB指令,程序更簡潔。2/CMPS字符串比較指令指令格式:CMPS目的串,源串指令功能:從S

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論