




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、3.3.4 串操作指令l串串內存中延續存放的字節或字類型內存中延續存放的字節或字類型的數據的數據.l 以字節以字節B為單位的字節串;為單位的字節串;l 以字以字W為單位的字串。為單位的字串。l字符串長度可達字符串長度可達64K字節。字節。l串操作指令共有五種根本指令,可以對串操作指令共有五種根本指令,可以對字符串進展傳送、比較、搜索及存和取字符串進展傳送、比較、搜索及存和取操作。操作。 *l待操作的數據串稱為源串,目的地址稱為目的串。待操作的數據串稱為源串,目的地址稱為目的串。l兩種情況:兩種情況:l1、兩個操作數均為串數據;、兩個操作數均為串數據;l MOVS 用于將一串從源挪動到目的用于將
2、一串從源挪動到目的l CMPS 用于將兩串逐一比較用于將兩串逐一比較l2、兩個操作數一為、兩個操作數一為AL/AX,另一為串,另一為串l STOS 用于將用于將AL/AX中字節中字節/字填充到目的串字填充到目的串l LODS 用于從源串中取字節用于從源串中取字節/字到字到AL/AXl SCAS 用于在目的串中查找特定的字節用于在目的串中查找特定的字節/字字串操作指令的操作數見表3.8串操作指令的特點商定l源串普通存放在數據段,偏移地址由源串普通存放在數據段,偏移地址由SI指定。邏輯地址為指定。邏輯地址為DS:SI,允許段超越;,允許段超越;l目的串必需在附加段目的串必需在附加段(ES),偏移地
3、址由,偏移地址由DI指定,邏輯地址為指定,邏輯地址為ES:SI ;l每執行一次串指令,地址指針每執行一次串指令,地址指針SI和和DI將自動修正,修正方向由將自動修正,修正方向由DF決決議。議。l DF=0 增址增址 +1/+2; CLDl DF=1 減址減址 - 1/- 2; STDl數據塊長度字節或字數放在數據塊長度字節或字數放在CX中;中;l可添加自動反復前綴以實現串操作的反復執行可添加自動反復前綴以實現串操作的反復執行;l 也可設計普通循環來實現也可設計普通循環來實現串操作的普通流程取源串首/尾 地址取目的串首/尾地址設循環次數串長度設置方向DF 串操作指令串操作指令修正串長度值修正串長
4、度值傳送完否?傳送完否?反復前綴l反復次數隱含在反復次數隱含在CX存放器中,反復過程中會自存放器中,反復過程中會自動修正動修正CX值。值。lREP 無條件反復無條件反復lREPE 相等反復相等反復lREPZ 為零反復為零反復lREPNE 不相等反復不相等反復lREPNZ 不為零反復不為零反復條件條件反復反復CX0且且ZF=1CX0且且ZF=0CX0 反復反復串操作指令l串傳送串傳送 MOVSl串比較串比較 CMPSl串掃描串掃描 SCASl串讀取串讀取 LODSl串送存串送存 STOS1、串傳送指令MOVS l格式:格式: 1) MOVS 目的串,原串目的串,原串l MOVSB ;字節串傳送字
5、節串傳送,傳送一個傳送一個8位的元素。位的元素。l ES:DIDS:SIl SISI1,DIDI1l MOVSW ;字串傳送,傳送一個字串傳送,傳送一個16位的元位的元素。素。l ES:DIDS:SIl SISI2,DIDI2l串傳送指令常與無條件反復前綴串傳送指令常與無條件反復前綴REP連用連用可實現可實現存儲器存儲器到存儲到存儲器的數器的數據傳送據傳送 LEA SI,DATA1 LEA DI,DATA2 MOV CX,200 CLD REP MOVSB l例:用串傳送指令實現例:用串傳送指令實現200個字節數據的串的傳送:個字節數據的串的傳送: LEA SI,DATA1 LEA DI,DA
6、TA2 MOV CX,200 CLDAGAIN: MOVSB DEC CX JNZ AGAIN l先執行,再判別先執行,再判別l先判別,再執行先判別,再執行REP MOVSB 執行的操作:l假設假設CX=0時,串指令執行終了,否那么執行時,串指令執行終了,否那么執行lCX=CX-1l執行串指令執行串指令MOVSBl再前往執行再前往執行循環過程為:先判別,再執行循環過程為:先判別,再執行 CX=0 ,為循環終了的條件。,為循環終了的條件。2、串比較指令CMPS l格式:格式:l CMPSBl CMPSWl功能:由功能:由(DS:SI) (ES:DI)的差值的差值l 設置標志位設置標志位 A,C,
7、O,P,S,Z。l SISI1/2,DIDI1/2l指令的執行不改動操作數,僅影響標志位。指令的執行不改動操作數,僅影響標志位。l串比較指令常與條件反復前綴串比較指令常與條件反復前綴REPE/REPNE連用。連用。 LEA SI,DATA1 LEA DI,DATA2 MOV CX,200 CLD REPE CMPSB JNZ UNMAT MAT: UNMAT: l例:比較兩個串能否一樣例:比較兩個串能否一樣 (兩個串長度一樣兩個串長度一樣 LEA SI,DATA1 LEA DI,DATA2 MOV CX,200 CLDAGAIN: CMPSB JNE UNMAT DEC CX JNZ AGAI
8、N MAT: UNMAT : REPE CMPSB 執行的操作:lCX0且且ZF=1一樣時,繼續執行一樣時,繼續執行否否那么終了執行串指令那么終了執行串指令,跳出循環。跳出循環。lCX=CX-1l執行串指令執行串指令CMPSl反復執行反復執行循環過程為:先判別,再執行循環過程為:先判別,再執行循環終了的條件:循環終了的條件:CX=0或或ZF=0有不同有不同 。串比較指令例測試測試200個字節數據能否傳送正確個字節數據能否傳送正確,如有錯誤,將如有錯誤,將第一個出現的錯誤位置記錄下來第一個出現的錯誤位置記錄下來,存到存到BX里里lLEA SI,MEM1lLEA DI,MEM2lMOV CX,20
9、0lCLD lXOR AL,ALlREPE CMPSB lJZ STOP DEC SI MOV BX,SISTOP: CX0,ZF=0 出現不等元素出現不等元素 CX=0 ,ZF=0 最后一個元素不等最后一個元素不等 CX=0, ZF=1 兩串相等兩串相等終了循環終了循環后,后,CX與與ZF的形狀的形狀3、串搜索指令SCASl格式:格式:l SCASBl SCASWl操作:與操作:與CMPS指令類似,只是源操作數是指令類似,只是源操作數是AX/AL 。l AL/AX (ES:DI), DIDI1/2l運用:運用:l常用于在目的串常用于在目的串(指定存儲區域指定存儲區域)中尋覓某個關鍵字。中尋覓
10、某個關鍵字。關鍵字存放在關鍵字存放在AX或或AL中。中。l指令常可與條件反復前綴指令常可與條件反復前綴REPE/REPNE連用連用程序段:START: LEASI , BLOCKLEADI , PDATALEABX, NDATAMOVCX , 100 LOP:LODSB;取源串的一個字節送ALTESTAL , 80H;測試符號位JNZMINUS;是負數,轉移到MINUSSTOSB;正數存入正數區域JMPNEXTMINUS:XCHGBX, DI;交換正、負數指針STOSB;負數送入負數區XCHG BX, DI;恢復正、負數指針NEXT: DECCX;次數減1JNZLOP;未處置完,繼續HLT4、
11、串讀取指令LODSl格式:格式:l LODSBl LODSWl操作:對字節:操作:對字節: AL (DS:SI)l 對對 字:字: AX (DS:SI)l SISI1/2l用于將內存某個區域的數據串依次裝入累加用于將內存某個區域的數據串依次裝入累加器,以便顯示或輸出到接口。器,以便顯示或輸出到接口。lLODS指令普通不加反復前綴。指令普通不加反復前綴。5、串送存指令STOS l格式:格式:l STOSBl STOSWl操作:對字節:操作:對字節: AL (ES:DI)l 對對 字:字: AX (ES:DI)l DIDI1/2l可與反復前綴可與反復前綴REP連用連用串送存指令例 將內存某個區域清
12、零l設計思想:設計思想: 串首串首/尾地址送尾地址送ES:DI串長度送串長度送CX置方向標志置方向標志DF0送累加器送累加器AL反復執行串送存指令反復執行串送存指令 REP STOS3.4.5 程序控制傳送指令l 轉移指令轉移指令 JMP、JCCl 循環控制循環控制 LOOP、LOOPZ、LOOPNZl 過程調用和前往過程調用和前往 CALL、RETl 中斷指令中斷指令 INT、IRET、INTOl控制程序的執行順序。控制程序的執行順序。l本質為經過改動本質為經過改動IP或或CS、IP的值的值l 來改動程序的執行順序。來改動程序的執行順序。 一一 轉移指令轉移指令無條件轉移指令無條件轉移指令J
13、MP 無條件轉移到目的地址,執行新的指令無條件轉移到目的地址,執行新的指令有條件轉移指令有條件轉移指令JCC 在具備一定條件的情況下轉移到目的地址在具備一定條件的情況下轉移到目的地址l轉移指令的本質:改動轉移指令的本質:改動IP(IP(或或CSCS、IP)IP)的值。的值。l分為分為l一切轉移指令不會影響標志位。一切轉移指令不會影響標志位。1、無條件轉移指令、無條件轉移指令JMPl格式:格式:l JMP OPRD目的地址目的地址與與JMP在同在同一代碼段一代碼段與與JMP不在不在同一代碼段同一代碼段代代碼碼段段2代代碼碼段段1段內段內轉移轉移段間段間轉移轉移段內轉移段內轉移指令中直接給出目的地
14、址指令中直接給出目的地址由指令中的存放器或存儲器由指令中的存放器或存儲器操作數指出目的地址操作數指出目的地址段內直接尋址段內直接尋址段內間接尋址段內間接尋址轉移的目的地址在當前代碼段內轉移的目的地址在當前代碼段內段間轉移段間轉移轉移的目的地址在另一代碼段內轉移的目的地址在另一代碼段內段間直接尋址段間直接尋址段間間接尋址段間間接尋址由指令中的存儲器操作數指由指令中的存儲器操作數指出目的地址出目的地址指令中直接給出目的地址指令中直接給出目的地址l段內直接尋址段內直接尋址l 格式:格式:JMP Label JMP指令的下一條指令的下一條指令的偏移地址指令的偏移地址短轉移:位移量在短轉移:位移量在-1
15、28 +127 之間。之間。 SHORT 近轉移:位移量在近轉移:位移量在-32768+32767 之間之間. NEAR PTR JMP Label代代碼碼段段位移量位移量功能:功能:IP 當前當前IP + 位移量位移量l稱為相對尋址稱為相對尋址標號標號 JMP SHORT L1 MOV AX , 0 MOV BX , 0 MOV CX , 0L1: MOV DX , CX JMP NEAR PTR L2 .L2: MOV AL , 0l例:例:l例:例:l段內間接尋址段內間接尋址l 格式:格式:JMP r16 /mem16 l 功能:功能:IP r16 /mem16l例:例:l JMP BX
16、l JMP WORD PTR BX+SIl段間直接尋址段間直接尋址由指令中的由指令中的32位存儲器操作數位存儲器操作數 給出目的地址。給出目的地址。格式:格式: JMP FAR PTR Label功能:功能: IP Label的偏移地址的偏移地址 CS Label所在段的段基址所在段的段基址l段間間接尋址段間間接尋址JMP DWORD PTR mem32遠地址標號遠地址標號l JMP DWORD PTR BXXXHXXHXXHXXHBXIPCSJMP指令碼指令碼代代碼碼段段1代代碼碼段段2數數據據段段IP BX字字CS BX+2字字例:例:lJMP FAR PTR L12 、條件轉移指令l格式
17、:格式: JCC LABELl在滿足一定條件下,程序轉移到目的地址執行,在滿足一定條件下,程序轉移到目的地址執行,不滿足條件時,繼續執行下一條指令。不滿足條件時,繼續執行下一條指令。l條件轉移指令均為段內短轉移,即轉移范圍為:條件轉移指令均為段內短轉移,即轉移范圍為: -128-+127l轉移條件是判別標志位形狀轉移條件是判別標志位形狀l 5個可測試標志個可測試標志C、S、Z、O、Pl 轉移條件單測5個標志: C、S、Z、O、PJC /JB/JNAE 低于低于JNC/JNB/JAE 高于或等于高于或等于JZ/JEJNZ/JNEJSJNSJP/JPEJNP/JPOJOJNO組合測:無符號數的高低
18、:組合測無符號數的高低:組合測Z、C JA/JNBE ;高于轉移;高于轉移 CZ=0 JNA/JBE ;低于或等于轉移;低于或等于轉移 CVZ=1 比較有符號數大小:組合測比較有符號數大小:組合測S、O、Z JG/JNLE ;大于轉移;大于轉移 SO=0 Z=0 JGE/JNL ;大于或等于轉移;大于或等于轉移 SO=0 JL/JNGE ;小于轉移;小于轉移 SO=0 且且 Z=0 JLE/JNG ;小于或等于轉移;小于或等于轉移SO=1或或Z=1測測CX: JCXZ : 假設假設CX=0,轉移,轉移例例1: ADD AL ,8 JNC L1 ADC AH ,0 L1: MOV BX , AX
19、例例2:CMP AL ,BL JA L1 ;(高于,轉移高于,轉移 L1: 例例3: MOV CX, 4 L1: ADD AL ,1 DEC CX JNE L1 MOV BL ,AL 二 反復循環控制指令l控制程序在以當前控制程序在以當前IP為中心的為中心的-128+127范圍范圍內循環執行;內循環執行;l循環次數由循環次數由CX存放器指定。存放器指定。 LOOP LOOPZ LOOPNZJCXZ無條件循環指令無條件循環指令LOOPl格式:格式:l LOOP Labell循環條件:循環條件:l CX 0l執行的操作:執行的操作:l CX=CX-1l 假設假設CX0,就繼續循環;否那么,終了循環
20、就繼續循環;否那么,終了循環 。l 例:例: MOV CX, 4 L1: ADD AL ,1 LOOP L1 MOV BL ,AL 相當于:相當于:DEC CX JNZ Label條件循環指令條件循環指令LOOPZ/LOOPNZl格式:格式:l LOOPZ LABELl LOOPE LABELl循環條件:循環條件:l CX 0且且 ZF=1l格式:格式:l LOOPNZ LABELl LOOPNE LABELl循環條件:循環條件:l CX 0 且且 ZF=0JCXZ OPRDlCX=0時轉移到目的地址,否那么順序執行時轉移到目的地址,否那么順序執行JCXZ的下一條指令。的下一條指令。l用在循環
21、之前,在循環次數為用在循環之前,在循環次數為0時,直接跳過時,直接跳過循環。循環。l MOV CX ,BX l JCXZ GONElAGAIN: l LOOP AGAINlGONE:l例:例: l MOV CX, 4l L1: ADD AL ,1l CMP AL,BL l LOOPNZ L1l MOV BL ,ALl 三、三、 過程調用過程調用CALL和前往和前往RET段內調用段內調用段間調用段間調用段內直接調用段內直接調用段內間接調用段內間接調用段間直接調用段間直接調用段間間接調用段間間接調用子過程調用的流程子過程調用的流程l主程序中運用一條調用指令主程序中運用一條調用指令 CALL PRO
22、Cl先維護斷點地址先維護斷點地址l然后改動然后改動IP 或或CSIPl執行子過程,終了后要前往執行子過程,終了后要前往l 原調用途斷點繼續執行原調用途斷點繼續執行l 主程序。所以子過程要擔任恢復主程序。所以子過程要擔任恢復l 斷點,用一條斷點,用一條 RET 指令來恢復。指令來恢復。l在斷點處繼續執行主程序在斷點處繼續執行主程序斷點斷點入口入口地址地址CALLRET主程序主程序子過子過程程lCALL的功能:的功能:l 將將CALL指令的下一條指令斷點的地址偏移地指令的下一條指令斷點的地址偏移地址或段地址與偏移地址壓入堆棧址或段地址與偏移地址壓入堆棧 ;l 將子過程的入口地址子過程第將子過程的入
23、口地址子過程第1條指令的偏移地址條指令的偏移地址賦給賦給 IP或或CS/IP,即進入子程序。,即進入子程序。lRET的功能的功能l 將斷點地址由堆棧彈出到將斷點地址由堆棧彈出到IP 或或CS與與 IP ,即前往原,即前往原程序。程序。l留意留意CALL和和RET指令指令對堆棧的影響對堆棧的影響段內調用段內調用子過程與原調用程序在同一代碼段,子過程與原調用程序在同一代碼段,在調用之前只需維護斷點的偏移地在調用之前只需維護斷點的偏移地址址格式:格式: CALL PROC 近過程近過程名名 CALL r16/mem16例:例:CALL NEAR PTR TIME ; 直接調用直接調用 CALL WO
24、RD PTR SI ;間接調用間接調用段間調用段間調用子過程與原調用程序不在同一代碼段,子過程與原調用程序不在同一代碼段,在調用之前需維護斷點的段基地址在調用之前需維護斷點的段基地址和偏移地址。先將斷點的和偏移地址。先將斷點的CS壓棧,壓棧,再壓入再壓入IP。格式:格式: CALL PROC CALL mem32例:例: CALL FAR PTR TIME CALL DWORD PTR SICALL OPRD 前往指令 RETlRETRET指令普通位于子程序的最后。段內調用的前往時是段指令普通位于子程序的最后。段內調用的前往時是段內前往,段間調用的前往時是段間前往。內前往,段間調用的前往時是段
25、間前往。l格式格式1 1: RET RETl 功能:從堆棧中彈出斷點地址功能:從堆棧中彈出斷點地址(POP IP,POP CS)(POP IP,POP CS),前往,前往原程序。原程序。l l格式格式2 2:帶彈出值的:帶彈出值的RET RET l RET OPD RET OPD ;OPDOPD為為1616位無符號整數位無符號整數l 執行的操作:執行的操作:l恢復斷點恢復斷點POP IP, POP CS)POP IP, POP CS)lSP=SP+OPD,SP=SP+OPD,修正修正SPSP指針,使棧定回復到參數入棧以前的位指針,使棧定回復到參數入棧以前的位置。置。l 使程序方便的廢除假設干執
26、行使程序方便的廢除假設干執行CALLCALL前入棧的參數。前入棧的參數。例:lPUSH AXlPUSH BXlCALL PROC1lRET 4l中斷中斷l中斷的過程中斷的過程l中斷的來源:中斷的來源:l外部中斷:外部設備發來的中斷懇求中斷懇求信號外部中斷:外部設備發來的中斷懇求中斷懇求信號 。管理。管理I/O設備與設備與CPU之間的通訊。之間的通訊。l內部中斷:內部中斷:CPU執行某條指令引起的中斷執行某條指令引起的中斷l中斷向量號中斷向量號 N中斷類型號、中斷號中斷類型號、中斷號l 0255 共共256種中斷類型種中斷類型l中斷向量中斷效力程序的入口地址:這是必需知道的關鍵信中斷向量中斷效力
27、程序的入口地址:這是必需知道的關鍵信息。息。 4個字節,段基址:偏移量個字節,段基址:偏移量l中斷向量表:按中斷向量號的順序存放中斷向量的表格。中斷向量表:按中斷向量號的順序存放中斷向量的表格。l中斷向量表的長度:中斷向量表的長度:256*4 B=1KB l8086中斷表的地址:中斷表的地址:00000H 003FFHlIP N*4lCS N*4+24.中斷指令有關中斷的概念:l詳見教材第詳見教材第7章章中斷指令 INT n l格式:格式:l INT nl闡明:闡明:l n4 =存放中斷效存放中斷效力子程序入口地址的力子程序入口地址的單元的地址。單元的地址。中斷類型號中斷類型號n=0 255n
28、 4 XXHXXHXXHXXH入口偏移地址賦給入口偏移地址賦給IP入口段地址賦給入口段地址賦給CS中斷向量表中斷向量表中斷指令操作:操作:將將FLAGS壓入堆棧;壓入堆棧;制止新的可屏蔽中斷和單步中斷制止新的可屏蔽中斷和單步中斷 IF=TF=0斷點維護:將斷點維護:將INT指令的下一條指令的地址指令的下一條指令的地址32位入棧;位入棧;取中斷效力程序入口地址。取中斷效力程序入口地址。 執行中斷程序執行中斷程序 中斷指令例l執行執行INT 21H指令后指令后l IP=?l CS=?21H4=0084H 23H11H00H20HIP CS溢出中斷指令INTOl格式:格式:l INTO l假設假設OF=1,那么啟動一個類型為那么啟動一個類型為4的中斷過程的中
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 銅冶煉過程中的環保設備研發進展預測分析研究考核試卷
- 金屬加工中的金屬加工設備維護管理信息系統考核試卷
- 礦石催化反應與催化機理考核試卷
- 銀冶煉中的冶煉廠智能化改造與生產調度考核試卷
- 針織品生產計劃與優化考核試卷
- 外科縫合穿針教學
- 口腔護士職業實踐心得
- 麻醉科每月醫療質量控制
- 冷菜制作的衛生與安全
- 妊娠高血壓疾病查房要點
- 大學語文試題及答案安徽
- 近七年寧夏中考化學真題及答案2024
- 2025至2030中國芳綸纖維行業需求預測及發展前景趨勢研究報告
- 十一學校小升初入學測試數學真題及詳細解答
- Braden 壓力性損傷評分表詳解
- 婚內賭博欠債協議書范本
- 造價咨詢項目管理制度
- 徐圩港區疏港航道整治工程報告書
- XX公司事故隱患內部報告獎勵制度1
- 兒童重癥肺炎護理常規
- 裝飾裝修施工方案
評論
0/150
提交評論