




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、13.3.3 邏輯運算和移位指令邏輯運算指令(AND、OR、XOR、NOT) 運算規(guī)則:按位操作,無進/借位 對標志位的影響(除NOT指令外): CF OF SF ZF PF AF 0 0 * * * 無定義 根據(jù)運算結(jié)果設(shè)置 清空CF/OF有時利用這一點2(1) 邏輯”與” AND對兩個操作數(shù)進行按位邏輯“與”操作。格式:AND dest, src用途:保留操作數(shù)的某幾位,清零其他位。例1:保留AL中低4位,高4位清0。 AND AL, 0FH例2:AL中有字符az, 將其轉(zhuǎn)換成大寫。 AND AL, 01011111B3例3:測試AL的bit7,bit5,bit2是否都是1。AND AL,
2、 10100100BCMP AL, 10100100B JZ YES ; if match, go to YES ; if not match YES: ; goes here if all 1 4對兩個操作數(shù)進行按位邏輯”或”操作。格式:OR dest, src用途:對操作數(shù)的某幾位置1;對兩操作數(shù) 進行組合。(2) 邏輯”或” OR5例:OR BX,00FFH ;BH保持不變,BL置為0FFH例:把AL的第5位置為1 OR AL, 00100000B6對操作數(shù)進行按位邏輯”非”操作。格式:NOT mem/reg例:NOT CX NOT BYTE PTRDI(3) 邏輯“非”(取反) NOT
3、7對兩個操作數(shù)按位進行”異或”操作。格式:XOR dest, src用途:對reg清零(自身異或) 把reg/mem的某幾位變反(與1異或) 例1:把AX寄存器清零。 例2:把DH的bit4,3變反 MOV AX,0 XOR DH,18H XOR AX,AX AND AX,0 SUB AX,AX (4) 邏輯”異或” XOR 8操作與AND指令類似,但不將”與”的結(jié)果送回,只影響標志位。TEST指令常用于位測試,與條件轉(zhuǎn)移指令一起用。例:測試AL的內(nèi)容是否為負數(shù)。 TEST AL,80H ;檢查AL中D7=1? JNZ MINUS ;是1(負數(shù)),轉(zhuǎn)MINUS ;否則(正數(shù))不轉(zhuǎn)移MINUS:
4、 (5) 測試指令TEST92.移位指令(1)非循環(huán)移位指令 算術(shù)左移指令 SAL(Shift Arithmetic Left) 算術(shù)右移指令 SAR(Shift Arithmetic Right) 邏輯左移指令 SHL(Shift Left) 邏輯右移指令 SHR(Shift Right)這4條指令的格式相同,以SAL為例: SAL mem/reg,CL ;移位位數(shù)大于1時1 ;移位位數(shù)等于1時10移位指令執(zhí)行的操作如下圖所示:最低位最高位CF0(a)算術(shù)/邏輯左移 SAL/SHL最低位最高位CF(b)算術(shù)右移 SAR最低位最高位CF(c)邏輯右移 SHR0非循環(huán)移位指令功能示意圖11算術(shù)移
5、位把操作數(shù)看做有符號數(shù); 邏輯移位把操作數(shù)看做無符號數(shù)。移位位數(shù)放在CL寄存器中,如果只移1位,也 可以直接寫在指令中。例如: MOV CL,4 SHR AL,CL ;AL中的內(nèi)容右移4位影響C,P,S,Z,O標志。結(jié)果未溢出時: 左移1位操作數(shù)*2 右移1位操作數(shù)/212例:把AL中的數(shù)x乘10因為10=8+2=23+21,所以可用移位實現(xiàn)乘10操作。程序如下:SAL AL,1 ; 2xMOV AH,AL SAL AL,1 ; 4x SAL AL,1 ; 8x ADD AL,AH ; 8x+2x = 10 x13用移位操作代替乘除法可提高運算速度例:前例中計算 x10。(1)采用乘法指令:
6、MOVBL,10 MULBL 共需7077個T周期。(2)采用移位和加法指令: SALAL,1 ; 2T MOVAH,AL ; 2T SALAL,1 ; 2T SALAL,1 ; 2T ADDAL,AH ; 3T 只需11個T周期,僅相當于乘法的1/7。14 不含進位位的循環(huán)左移指令 ROL 不含進位位的循環(huán)右移指令 ROR 含進位位的循環(huán)左移指令 RCL 含進位位的循環(huán)右移指令 RCR格式同非循環(huán)移位指令。移位位數(shù)放在CL寄存器中,如果只移1位, 也可以直接寫在指令中。循環(huán)移位指令只影響標志位CF和OF。(2)循環(huán)移位指令15這4條指令的功能如下圖示:最低位最高位CF(a) ROL最低位最高
7、位CF(c) RCL最低位最高位CF(b) ROR最低位最高位CF(d) RCR循環(huán)移位指令功能示意圖16循環(huán)移位舉例:例1:將AL的高4位與低4位互換。 MOV CL,4 ROL AL,CL例3-25 執(zhí)行以下指令序列后AX=3347H,CF=1: MOV AX,99A3H ;AX置99A3H OR AX,0;AX值不變,但置CF為0 ROL AX,1;對AX進行循環(huán)左移 17串傳送指令使用舉例例3-26 在數(shù)據(jù)段中偏移地址為1000H開始的存儲區(qū)內(nèi)有一(字節(jié))字符串,其長度為100,要求把它們傳送到附加段中偏移地址為2000H開始的一片緩沖區(qū)內(nèi)。實現(xiàn)該功能的程序片段如下: MOV SI,1
8、000H;置源串偏移地址 MOV DI,2000H;置目的串偏移地址 MOV CX,100 ;置串長度 CLD ;方向標志復位 REP MOVSB ;字符串傳送3.3.4 串操作指令183.3.4 串操作指令串:順序放在內(nèi)存中的一組相同類型的數(shù)據(jù)。串操作:對串中的元素進行相同的操作。串操作的尋址方式: 源操作數(shù)指針DS:SI(DS可超越) 目的操作數(shù)指針ES:DI每次串操作后: 串操作指令自動修改SI和DI字節(jié)1,字2。DF標志決定(DF=0,;DF=1,)。(注意:退出串操作后,指針指向最后操作的元素的下一個元素)可完成兩個存儲單元之間的傳送、比較、搜索、存取 操作(也僅是串指令可以)字符串
9、長度默認在CX中,涉及存取或搜索的串操作指令,存取或搜索的關(guān)鍵字默認在AL(或AX)中。19表3.2.2 重復前綴 (1) 若 (CX) 0或ZF = 1,則退出,否則CX = CX - 1;(2) 執(zhí)行后續(xù)指令;(3) 重復 (1)、(2) 步驟。REPNE或REPNZ(1) 若 (CX) 0或ZF = 0,則退出,否則CX = CX - 1;(2) 執(zhí)行后續(xù)指令;(3) 重復 (1)、(2) 步驟。REPE或REPZ(1) 若 (CX) 0,則退出,否則CX = CX - 1;(2) 執(zhí)行后續(xù)指令;(3) 重復 (1)、(2) 步驟。REP功能重復前綴20串指令使用的一般方法設(shè)置源串地址設(shè)
10、置目標串地址設(shè)置串長度設(shè)置操作方向DF串指令MOV SI, 源串首地址(或LEA SI, 源串)MOV DI, 目的串首地址(或LEA DI, 目的串)MOV CX, 串長度CLD(或STD)串指令21指令執(zhí)行的操作為:MOVSB: (ES):(DI)(DS):(SI) SI1, DI1 MOVSW: (ES):(DI+1)(DI)(DS):(SI+1)(SI) SI2, DI2 指令也可寫成:MOVS dest,src但要求: src用DS:SI尋址,dest用ES:DI尋址 傳送是字節(jié)還是字,由操作數(shù)的類型決定串傳送指令MOVSB / MOVSW22串傳送指令使用舉例例3-26 在數(shù)據(jù)段中
11、偏移地址為1000H開始的存儲區(qū)內(nèi)有一(字節(jié))字符串,其長度為100,要求把它們傳送到附加段中偏移地址為2000H開始的一片緩沖區(qū)內(nèi)。實現(xiàn)該功能的程序片段如下: MOV SI,1000H;置源串偏移地址 MOV DI,2000H;置目的串偏移地址 MOV CX,100 ;置串長度 CLD ;方向標志復位 REP MOVSB ;字符串傳送23串比較指令CMPSB / CMPSW指令執(zhí)行的操作為:CMPSB: (DS):(SI)-(ES):(DI) SI1, DI1 CMPSW: (DS):(SI+1)(SI)-(ES):(DI+1)(DI) SI2, DI2 指令也可寫成:CMPS dest,
12、src比較的結(jié)果只反映在標志位上,串本身無變化。本指令可用來檢查兩個串是否相等。24串比較指令使用舉例例3-27 在數(shù)據(jù)段中偏移地址為1000H開始的存儲區(qū)內(nèi)有一(字節(jié))字符串,其長度為100,同樣在附加段中偏移地址為2000H開始的存儲區(qū)內(nèi)也有一長度相等的(字節(jié))字符串,現(xiàn)要求找出它們之間不相匹配的位置。 實現(xiàn)上述功能的程序片段如下; MOV SI,1000H ;裝入源串偏移地址 MOV DI,2000H ;裝入目的串偏移地址 MOV CX,100 ;裝入字符串長度 CLD ;方向標志復位 REPE CMPSB上述程序段執(zhí)行之后,SI或DI的內(nèi)容即為兩字符串中第一個不匹配字符的下一個字符的位
13、置。若兩字符串中沒有不匹配的字符,則當比較完畢后,CX0。25串掃描SCASB / SCASW執(zhí)行的操作: 對字節(jié):(AL)(ES):(DI) DI1 對字: (AX)(ES):(DI1)(DI) DI2搜索指令執(zhí)行的仍是比較(減法)操作,結(jié)果只影響標志位。要搜索的關(guān)鍵字放在AL(字節(jié))或AX(字)中。本指令用于在串中查找指定的信息。26 SCAS指令加上重復前綴后,可對串進行連續(xù)掃描比較:若前綴為REPZ,則表示比較結(jié)果相等且(ZF=1)且串未結(jié)束(CX0),則繼續(xù)比較。若前綴為REPNZ,則表示比較結(jié)果不相等(ZF=0)且串未結(jié)束(CX0)就繼續(xù)比較。27串掃描指令使用舉例例3-28 在附
14、加段中偏移地址為2000H開始的存儲區(qū)內(nèi)有一長度為100的(字節(jié))字符串,要求在該字符串中搜索空格符(ASCII碼為20H)。 實現(xiàn)此功能的程序片段如下: MOV DI,2000H;裝入目的串偏移地址 MOV AL,20H;裝入關(guān)鍵字節(jié) MOV CX,100;裝入字符串長度 REPNE SCASB上述程序執(zhí)行之后,DI的內(nèi)容即為相匹配字符的下一個字符的地址,CX中是剩下還未比較的字符個數(shù)。若字符串中沒有所要搜索的關(guān)鍵字節(jié),則當查完之后CX0。28例:在ES段的偏移1000H開始處存有10個ASCII碼。搜索E,若找到則記下搜索次數(shù)及存放地址,并在屏幕上顯示Y;若未找到則顯示N。(見右圖)在屏幕
15、上顯示一個字符的指令段如下: MOV DL, MOV AH,2 INT 21H 實現(xiàn)題目要求的程序段見下頁:1000H414243444546ABCDF. . .ES段E補29 MOV DI, 1000H ;(DI)串偏移地址 MOV CX, 0AH ;(CX)串長度 MOV AL, E ;搜索關(guān)鍵字=E CLD ;從低地址到高地址進行搜索 REPNZ SCASB ;若未找到, 繼續(xù)搜索 JZ FOUND ;找到, 轉(zhuǎn)至FOUND MOV DL, N ;串中無E,(DL)N JMP DONE ;轉(zhuǎn)至DONEFOUND:DEC DI ;指針回退 MOV ADDR, DI ;ADDRE的地址 SU
16、B DI, 1000H MOV NUM, DI ;NUM搜索次數(shù) MOV DL, Y ;(DL)YDONE: MOV AH, 2 INT 21H ;顯示字符 HLT 補30指令的操作為: 對字節(jié):(ES):(DI)(AL) DI1 對字:(ES):(DI+1)(DI)(AX) DI2本指令用于把一塊存儲區(qū)域填充成某一初始值(即對存儲區(qū)進行初始化)。存儲區(qū)域的首地址要預先設(shè)置到ES:DI中。要存儲到串中的數(shù)據(jù)要預先存到AL(AX)中。4.串存儲指令STOSB / STOSW31例1:把從A000H開始的2KB內(nèi)存單元清零。程序段如下: MOV DI,0A000H MOV AX,0 MOV CX,
17、1024 CLD REP STOSW 32例2:把1000H開始的100個存儲單元填入 ASCII碼2AH(*)。程序段如下: MOV DI, 1000H ; 首地址 MOV AL, 2AH ;* MOV CX, 100 ; 重復執(zhí)行100次 CLD ; 增量修改DI REPSTOSB33執(zhí)行的操作為: 對字節(jié):(AL)(DS):(SI) SI1 對字:(AX)(DS):(SI+1)(SI) SI2 串裝入指令通常不加重復前綴。LODSB等價于: LODSW等價于: MOV AL,SI MOV AX,SI INC SI INC SI INC SI 5.串裝入指令LODSB / LODSW3436H32H39H31HSTRING1STRIN
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年中國生態(tài)農(nóng)莊行業(yè)市場發(fā)展監(jiān)測及投資潛力預測報告
- 房地產(chǎn)市場報告 -2025年二季度青島寫字樓和零售物業(yè)市場報告
- 藥品銷售集中采購管理辦法
- 葫蘆島營商環(huán)境管理辦法
- 虹口區(qū)貨物倉儲管理辦法
- 行政事業(yè)類項目管理辦法
- 衡陽縣鄉(xiāng)鎮(zhèn)干部管理辦法
- 西南水泥智能化管理辦法
- 西工大教師考核管理辦法
- 許可證管理辦法學習報告
- 物業(yè)員工夏季防暑培訓
- 水廠反恐培訓教材
- 品管圈PDCA改善案例-降低住院患者跌倒發(fā)生率
- 煤化工產(chǎn)業(yè)鏈詳解文檔課件
- 大學英語4綜合教程課件教學課件教學
- Module 1 語法Grammar 一般現(xiàn)在時,一般過去時,一般將來時與現(xiàn)在進行時八年級英語上冊模塊語法精講精練(外研版)
- 2024年秋新人教版七年級上冊英語全冊課件(新版教材)
- 癌癥患者生活質(zhì)量量表EORTC-QLQ-C30
- 一般工商貿(mào)(輕工)管理人員安全生產(chǎn)考試題庫(含答案)
- 2023年山東省藝術(shù)本科(美術(shù)類)第一次投檔分數(shù)線
- 護理查房(模板)
評論
0/150
提交評論