第3章 指令系統(tǒng)2_第1頁
第3章 指令系統(tǒng)2_第2頁
第3章 指令系統(tǒng)2_第3頁
第3章 指令系統(tǒng)2_第4頁
第3章 指令系統(tǒng)2_第5頁
已閱讀5頁,還剩65頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1三、邏輯運算和移位類邏輯運算邏輯運算移位操作移位操作與與或或非非異或異或非循環(huán)移位非循環(huán)移位循環(huán)移位循環(huán)移位邏輯移位邏輯移位算術移位算術移位不帶進位位的移位不帶進位位的移位帶進位位的移位帶進位位的移位21. 邏輯運算n邏輯運算指令對操作數(shù)的要求大多與邏輯運算指令對操作數(shù)的要求大多與MOV指指令相同。令相同?!胺欠恰边\算指令要求操作數(shù)不能是立運算指令要求操作數(shù)不能是立即數(shù);即數(shù);n除除“非非”運算指令外,其余指令的執(zhí)行都會使運算指令外,其余指令的執(zhí)行都會使標志位標志位OF=CF=03“與”指令n格式:格式: AND OPRD1,OPRD2n操作:操作: 兩操作數(shù)按位相兩操作數(shù)按位相“與與”,結

2、果送目標,結果送目標地地 址址4“與”指令的應用n實現(xiàn)兩操作數(shù)相與的運算;實現(xiàn)兩操作數(shù)相與的運算;n使目標操作數(shù)的某些位不變,某些位清零;使目標操作數(shù)的某些位不變,某些位清零;n在操作數(shù)不變的情況下使在操作數(shù)不變的情況下使CF和和OF清零。清零。5“與”指令的應用nAND BL,BXnAND AL,0FHnAND AX,AX6“或”運算指令n格式:格式: OR OPRD1,OPRD2n操作:操作: 兩操作數(shù)按位相兩操作數(shù)按位相“或或”,結果送目,結果送目標標 地址地址7“或”運算指令的應用n實現(xiàn)兩操作數(shù)相實現(xiàn)兩操作數(shù)相“或或”的運算;的運算;n使某些位不變,某些位置使某些位不變,某些位置“1”

3、n在不改變操作數(shù)的情況下使在不改變操作數(shù)的情況下使OF=CF=08應用程序例OR AX,DIOR CL,0FHOR AX,AX OR AL,AL JPE GOON OR AL,80H GOON:.偶校驗轉移偶校驗轉移(PF=1)將一個二將一個二進制數(shù)進制數(shù)9變變?yōu)樽址麨樽址??9“非”運算指令n格式:格式:NOT OPRDNOT OPRDn操作:操作數(shù)按位取反再送回原地址操作:操作數(shù)按位取反再送回原地址n指令中的操作數(shù)不能是立即數(shù)指令中的操作數(shù)不能是立即數(shù)n指令的執(zhí)行對標志位無影響指令的執(zhí)行對標志位無影響n例:例:NOT BYTE PTRBXNOT BYTE PTRBX10“異或”運算指令n格

4、式:格式: XOR OPRD1,OPRD2n操作:操作: 兩操作數(shù)相兩操作數(shù)相“異或異或”,結果送目標,結果送目標 地址地址n兩操作數(shù)自身相異或,結果為零兩操作數(shù)自身相異或,結果為零 XOR AX,AX11“測試”指令n格式:格式: TEST OPRD1,OPRD2n操作:操作: 執(zhí)行執(zhí)行“與與”運算,但運算的結果不運算,但運算的結果不 送回目標地址。送回目標地址。n應用:應用: 常用于測試某些位的狀態(tài)常用于測試某些位的狀態(tài)12“測試”指令例n從地址為從地址為38F0H的端口中讀入一個字節(jié)數(shù),的端口中讀入一個字節(jié)數(shù),如果該數(shù)的如果該數(shù)的bit1位為位為1,則可從,則可從38FEH端口端口將將D

5、ATA為首地址的一個字輸出,否則就不為首地址的一個字輸出,否則就不能進行數(shù)據傳送。能進行數(shù)據傳送。 編寫相應的程序段。編寫相應的程序段。13“測試”指令例開開 始始取待輸出數(shù)的取待輸出數(shù)的偏移地址偏移地址讀入狀態(tài)字讀入狀態(tài)字測試測試bit1位狀態(tài)位狀態(tài)Bit1=1?取輸入口地址取輸入口地址取輸出口地址取輸出口地址 輸出一個字輸出一個字NY14“測試”指令例 LEA SI,DATA MOV DX,38F0HWATT:IN AL,DX TEST AL,02H JZ WATT ;ZF=1轉移轉移 MOV DX,38FEH MOV AX,SI OUT DX,AX152. 移位指令n非循環(huán)移位指令非循環(huán)

6、移位指令n循環(huán)移位指令循環(huán)移位指令n注:注: 移動一位時可由指令直接給出;移動兩位及以移動一位時可由指令直接給出;移動兩位及以上,則移位次數(shù)由上,則移位次數(shù)由CL指定。指定。16非循環(huán)移位指令n邏輯左移邏輯左移n算術左移算術左移n邏輯右移邏輯右移n算術右移算術右移17算術左移和邏輯左移n格式:格式: SAL OPRD,1 SAL OPRD,CL SHL OPRD,1 SHL OPRD,CL有符號數(shù)有符號數(shù)無符號數(shù)無符號數(shù)邏輯邏輯左移左移移動一位后,若移動一位后,若CF與最高位不相等(移位前與最高位不相等(移位前后的符號位不相同),則后的符號位不相同),則OF=1;否則;否則OF=00CF18邏

7、輯右移n格式:格式: SHR OPRD,1 SHR OPRD,CL0CF無符號數(shù)無符號數(shù)的右移的右移僅移動一位時,若次高位與最高位不相等,則僅移動一位時,若次高位與最高位不相等,則OF=1;否則;否則OF=019算術右移n格式:格式: SAR OPRD,1 SAR OPRD,CLn 操作操作有符號數(shù)有符號數(shù)的右移的右移CF20非循環(huán)移位指令的應用n左移可實現(xiàn)乘法運算左移可實現(xiàn)乘法運算n右移可實現(xiàn)除法運算右移可實現(xiàn)除法運算 見見21循環(huán)移位指令不帶進位位的循環(huán)移位不帶進位位的循環(huán)移位 帶進位位的循環(huán)移位帶進位位的循環(huán)移位循環(huán)移位指令的格式、對操作數(shù)的要求與非循環(huán)移位指循環(huán)移位指令的格式、對操作數(shù)

8、的要求與非循環(huán)移位指令相同;影響標志位令相同;影響標志位CF和和OF。左移左移 ROL右移右移 ROR左移左移 RCL右移右移 RCR22不帶進位位的循環(huán)移位CFCF23帶進位位的循環(huán)移位CFCF24循環(huán)移位指令的應用n用于對某些位狀態(tài)的測試;用于對某些位狀態(tài)的測試;n高位部分和低位部分的交換;高位部分和低位部分的交換;n與非循環(huán)移位指令一起組成與非循環(huán)移位指令一起組成32位或更長字位或更長字長數(shù)的移位。長數(shù)的移位。25程序例 MOV SI,1000H MOV DI,3000H MOV CX,4BBB:MOV AL,SI MOV BL,AL AND AL,0FH OR AL,30H MOV D

9、I,AL INC DI MOV AL,BLPUSH CXMOV CL,4SHR AL,CLOR AL,30HMOV DI,ALINC DIINC SIPOP CXDEC CXJNZ BBBHLT程序程序功能?功能?26程序功能n將將1000H開始存放的開始存放的四個壓縮四個壓縮BCD碼轉換碼轉換為為ASCII碼存放在碼存放在3000H開始的單元中開始的單元中去。去。12H34H56H78H1000H3000H27四、串操作指令n針對數(shù)據塊或字符串的操作;針對數(shù)據塊或字符串的操作;n可實現(xiàn)存儲器到存儲器的數(shù)據傳送;可實現(xiàn)存儲器到存儲器的數(shù)據傳送;n待操作的數(shù)據串稱為源串,目標地址稱為待操作的數(shù)據

10、串稱為源串,目標地址稱為目標串。目標串。28串操作指令的特點n源串一般存放在數(shù)據段,偏移地址由源串一般存放在數(shù)據段,偏移地址由SI指定。指定。允許段重設;允許段重設;n目標串必須在附加段,偏移地址由目標串必須在附加段,偏移地址由DI指定;指定;n指令自動修改地址指針,修改方向由指令自動修改地址指針,修改方向由DF決定。決定。DF=0 增地址方向;增地址方向;DF=1 減地址方減地址方向;向;n數(shù)據塊長度值由數(shù)據塊長度值由CX指定;指定;n可增加自動重復前綴以實現(xiàn)自動修改可增加自動重復前綴以實現(xiàn)自動修改CX內容。內容。29串操作指令流程取源串地址取源串地址取目標串地址取目標串地址設串長度設串長度

11、傳送一個字節(jié)或字傳送一個字節(jié)或字修改地址指針修改地址指針修改串長度值修改串長度值傳送完否?傳送完否?30重復前綴nREP 無條件重復無條件重復nREPE 相等重復相等重復nREPZ 為零重復為零重復nREPNE 不相等重復不相等重復nREPNZ 不為零重復不為零重復條件重復條件重復CX0ZF=1CX0 ZF=0CX0 重復重復31串操作指令n串傳送串傳送 MOVSn串比較串比較 CMPSn串掃描串掃描 SCASn串裝入串裝入 LODSn串送存串送存 STOS32串傳送指令n三種指令格式:三種指令格式: MOVS OPRD1,OPRD2 MOVSB MOVSW指令用于實現(xiàn)數(shù)據塊的傳送,常與無條件

12、重復前綴連用。指令用于實現(xiàn)數(shù)據塊的傳送,常與無條件重復前綴連用。33串傳送指令n對比用對比用MOV指令和指令和MOVS指令實現(xiàn)將指令實現(xiàn)將200個字節(jié)數(shù)據從內存的一個區(qū)域送到另一個個字節(jié)數(shù)據從內存的一個區(qū)域送到另一個區(qū)域的程序段。區(qū)域的程序段。34串傳送指令例n用串傳送指令實現(xiàn)用串傳送指令實現(xiàn)200個字節(jié)數(shù)據的傳送:個字節(jié)數(shù)據的傳送: LEA SI,MEM1 LEA DI,MEM2 MOV CX,200 CLD REP MOVSB HLT35串比較指令n格式:格式: CMPS OPRD1,OPRD2 CMPSB CMPSWn該指令用于兩個數(shù)據塊或兩個字符串之間的比較;該指令用于兩個數(shù)據塊或兩個

13、字符串之間的比較;n常與條件重復前綴連用,指令的執(zhí)行不改變操作數(shù),常與條件重復前綴連用,指令的執(zhí)行不改變操作數(shù),僅影響標志位。僅影響標志位。36串比較指令例n例例3-42測試上例中測試上例中200個字節(jié)數(shù)據是否傳送正個字節(jié)數(shù)據是否傳送正確,并把第一個不相等的字符及其地址分別傳確,并把第一個不相等的字符及其地址分別傳給給AL,BX:LEA SI,MEM1LEA DI,MEM2MOV CX,200CLD REPE CMPSB JZ STOP DEC SI MOV AL,SI MOV BX,SISTOP:HLT 37串掃描指令n格式:格式: SCAS OPRD SCASB SCASWn指令執(zhí)行:指令

14、執(zhí)行:AX(或(或AL)- OPRDn該指令常用于在某個區(qū)域中尋找關鍵字。該指令常用于在某個區(qū)域中尋找關鍵字。目目 標標操作數(shù)操作數(shù)38串裝入指令n格式:格式: LODS OPRD LODSB LODSWn操作:操作:對字節(jié):對字節(jié): AL (DS:SI)AL (DS:SI) 對對 字:字: AX (DS:SI)AX (DS:SI) 修改源串地址指針修改源串地址指針 SISI源操作數(shù)源操作數(shù)39串裝入指令n用于將內存某個區(qū)域的數(shù)據串依次裝入累加器,用于將內存某個區(qū)域的數(shù)據串依次裝入累加器,以便顯示或輸出到接口。以便顯示或輸出到接口。nLODS指令不影響標志位,一般不加重復前綴。指令不影響標志位

15、,一般不加重復前綴。40串送存指令n格式:格式: STOS OPRD STOSB STOSWn操作:操作:對字節(jié):對字節(jié): AL (ES:DI)AL (ES:DI) 對對 字:字: AX (ES:DI)AX (ES:DI) 修改目的串地址指針修改目的串地址指針 DIDInSTOSB 指令對標志位沒有影響。指令對標志位沒有影響。目目 標標操作數(shù)操作數(shù)41串送存指令的應用n利用前綴利用前綴REP將內存某個區(qū)域清零將內存某個區(qū)域清零 區(qū)域首地址送區(qū)域首地址送ES:DI串長度送串長度送CX置方向標志置方向標志DF0送累加器送累加器AL執(zhí)行串送存指令執(zhí)行串送存指令開始開始42五、程序控制指令n轉移指令轉

16、移指令n循環(huán)控制循環(huán)控制n過程調用過程調用n中斷控制中斷控制431. 轉移指令n無條件無條件轉移指令轉移指令 無條件轉移到目標地址,執(zhí)行新的指令無條件轉移到目標地址,執(zhí)行新的指令n有條件轉移指令有條件轉移指令 在具備一定條件的情況下轉移到目標地址在具備一定條件的情況下轉移到目標地址44轉移指令的轉移原理n通過通過修改修改代碼段寄存器代碼段寄存器CS及指令指針及指令指針I(yè)P的內容,使程序改變順序執(zhí)行的模式,轉的內容,使程序改變順序執(zhí)行的模式,轉到新的目標地址執(zhí)行。到新的目標地址執(zhí)行。45無條件轉移指令n指令格式:指令格式: JMP OPRDn無條件轉移的目標地址可以是在當前代碼段,無條件轉移的目

17、標地址可以是在當前代碼段,也可在另一代碼段(即無條件段內轉移指令和也可在另一代碼段(即無條件段內轉移指令和段間轉移指令)段間轉移指令)46無條件轉移指令n段內轉移段內轉移目標地址與目標地址與JMP指令在同一代碼段指令在同一代碼段n轉移方式:轉移方式: 直接轉移直接轉移指令中直接給出轉移的目標地址指令中直接給出轉移的目標地址 間接轉移間接轉移由指令中的寄存器或存儲器間接給出轉移由指令中的寄存器或存儲器間接給出轉移 目標地址目標地址47無條件段內轉移n直接轉移:直接轉移: JMP Lablen轉移目標地址:轉移目標地址: 段基地址不變;段基地址不變; 偏移地址偏移地址=當前當前IP+位移量位移量J

18、MPLabel代代碼碼段段位移量位移量近地址標號近地址標號48無條件段內轉移n間接轉移:間接轉移: JMP BX JMP WORD PTRBXJMP代代碼碼段段數(shù)數(shù)據據段段BX=1200XXHXXHIP指令碼指令碼49無條件段間轉移n直接轉移:直接轉移: JMP FAR Lable遠地址標號遠地址標號JMPLabel代代碼碼段段1代代碼碼段段2XXHXXHXXHXXHIPCS50無條件段間轉移n間接轉移:間接轉移: JMP DWORD PTRBXXXHXXHXXHXXHBXIPCSJMP指令碼指令碼代代碼碼段段1代代碼碼段段2數(shù)數(shù)據據段段51條件轉移指令n在滿足一定的條件下,程序轉移到目標地址

19、繼在滿足一定的條件下,程序轉移到目標地址繼續(xù)執(zhí)行;續(xù)執(zhí)行;n在條件轉移指令之前,應有一條為條件轉移指在條件轉移指令之前,應有一條為條件轉移指令的執(zhí)行形成條件的指令(如對標志位產生影令的執(zhí)行形成條件的指令(如對標志位產生影響的指令);響的指令);n條件轉移指令均為段內短轉移,即轉移范圍為:條件轉移指令均為段內短轉移,即轉移范圍為: -128-+127p142522. 循環(huán)控制指令n控制程序在以當前控制程序在以當前IP為中心的為中心的-128+127范圍范圍內循環(huán)執(zhí)行;內循環(huán)執(zhí)行;n循環(huán)次數(shù)由循環(huán)次數(shù)由CX寄存器指定。寄存器指定。 循環(huán)指令循環(huán)指令無條件循環(huán)指令無條件循環(huán)指令LOOP 條件循環(huán)指令

20、條件循環(huán)指令LOOPZ LOOPNZ53無條件循環(huán)指令n格式:格式: LOOP Lablen循環(huán)條件:循環(huán)條件: CX 0nLOOP指令的操作相當于:指令的操作相當于: DEC CX JNZ Lable54條件循環(huán)指令n格式:格式: LOOPZ Lable LOOPE Lablen循環(huán)條件:循環(huán)條件: CX 0 ZF=1n格式:格式: LOOPNZ Lable LOOPNE Lablen循環(huán)條件:循環(huán)條件: CX 0 ZF=0553. 過程調用和返回段內調用段內調用段間調用段間調用段內直接調用段內直接調用段內間接調用段內間接調用段間直接調用段間直接調用段間間接調用段間間接調用56調用指令與轉移

21、指令的比較n用于調用一個子過程;用于調用一個子過程;n調用前須保護斷點地址;調用前須保護斷點地址;n子過程執(zhí)行結束后要返回原調用處繼續(xù)執(zhí)行子過程執(zhí)行結束后要返回原調用處繼續(xù)執(zhí)行原程序原程序 斷點恢復。斷點恢復。57調用指令的執(zhí)行過程n將調用指令的下一條指令的地址(斷點)壓入將調用指令的下一條指令的地址(斷點)壓入堆棧;堆棧;n獲取子過程的入口地址(子過程第獲取子過程的入口地址(子過程第1條指令的條指令的偏移地址);偏移地址);n(執(zhí)行子過程,含相應參數(shù)的保存及恢復);(執(zhí)行子過程,含相應參數(shù)的保存及恢復);n將斷點偏移地址由堆棧彈出,返回原程序。將斷點偏移地址由堆棧彈出,返回原程序。58段內調

22、用n子過程與原調用程序在同一代碼段,在調子過程與原調用程序在同一代碼段,在調用之前只需保護斷點的偏移地址用之前只需保護斷點的偏移地址n格式:格式: CALL NEAR PROC近過程名近過程名斷點斷點入口入口地址地址59段內調用例nCALL WORD PTRSInCALL BXnCALL TIMRE直接調用直接調用間接調用間接調用60段間調用n子過程與原調用程序不在同一代碼段,子過程與原調用程序不在同一代碼段,在調在調用之前需保護斷點的段基地址和偏移地址。用之前需保護斷點的段基地址和偏移地址。n斷點地址的保護是先將斷點的斷點地址的保護是先將斷點的CS壓棧,再將壓棧,再將IP壓入堆棧。壓入堆棧。n指令格式:指令格式: CALL FAR PROC61段間調用例nCALL FAR TIMREnCALL 8000H:2130HnCALL DWORD PTRSI62返回指令n從堆棧中彈出斷點地址,返回原程序。從堆棧中彈出斷點地址,返回原程序。n格式:格式: RETRETnRETRET指令一般位于子程序的最后。指令一般位于子程序的最后。634. 中斷指令中斷與過程調用:中斷與過程調用:n中斷是隨機事件或異常事件引起,調用則是事中斷是隨機事件或異常事件引起,調用則是事先已在程序中安排好先已在程序中安排好 ; n響應中斷請求不僅要保護斷點地址,還要保護響應中斷請求不僅要保護斷點地址,還要保護FL

溫馨提示

  • 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

提交評論