版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、3.3.3邏輯運(yùn)算和移位指令1、邏輯運(yùn)算指令邏輯運(yùn)算類指令共有5條,分別為與、或、非、異或、測(cè)試。這些指令的共同特點(diǎn):邏輯運(yùn)算的對(duì)象為無符號(hào)數(shù)按位操作,本位運(yùn)算不會(huì)影響其它位運(yùn)算無進(jìn)/借位對(duì)標(biāo)志位的影響(除NOT指令外):CF0OF0SFZFPFAF無定義根據(jù)運(yùn)算結(jié)果設(shè)置1(1) 邏輯與指令 AND格式:ANDDST,SRC用途:對(duì)兩個(gè)操作數(shù)進(jìn)行按位邏輯“與”操作,例如保留操作數(shù)的某幾位不變,清零其它位。操作:DST(DST)(SRC)例1:保留AL中低4位,高40。ANDAL,0FH2例2:測(cè)試AL的bit7、bit5、bit2是否都是1。ANDCMP JZAL, 10100100BAL,
2、10100100BYES; if match, go to YES; if not match YES:; goes here if match符號(hào)地址,注意其形式3邏輯或指令 OR(2)格式:ORDST, SRC用途:對(duì)兩個(gè)操作數(shù)進(jìn)行按位邏輯“或”操作,例如對(duì)操作數(shù)的某幾位置1;兩操作數(shù)進(jìn)行組合。(DST)(SRC)操作:DST例1:把AL中的非壓縮BCD碼變成相應(yīng)十進(jìn)制數(shù)的ASCII碼。ORAL, 30H4例2:把AH和AL中的非壓縮BCD碼組縮的BCD碼, 放到AL壓MOV SHLORCL, 4 AH, CLAL, AH邏輯例3:把AL的第5位置為1ORAL, 00100000B5NOT
3、(3)邏輯非指令格式:NOTDST用途:對(duì)操作數(shù)進(jìn)行按位邏輯“非”操作,其效果是按位求反。操作:DST(DST)例:NOTNOTCXBYTE PTRDI6XOR(4)邏輯異或指令格式:XORDST, SRC用途:對(duì)兩個(gè)操作數(shù)按位進(jìn)行“異或”操作。利用異或操作,可把寄存器或內(nèi)存單元的某幾位變反(與1異或),或者對(duì)寄存器清零(自身異或)操作:DST(DST)(SRC)例1:把AX寄存器清零。 MOV AX,0 SUB AX,AX ANDAX,0 XORAX,AX例2:把DH的位4、位3變反。 XORDH,18H7(5) 測(cè)試指令TEST格式:TESTDST,SRC用途:TEST指令用于位測(cè)試,與條
4、件轉(zhuǎn)移指令一起用操作:(DST)(SRC)說明:操作與AND指令類似,但不將“與”的結(jié)果送回,只影響標(biāo)志位。例如:測(cè)試AL的內(nèi)容是否為負(fù)數(shù)。TESTJNZMINUS: AL,80HMINUS;檢查ALD7=1?;是1(負(fù)數(shù)),轉(zhuǎn)MINUS;否則(正數(shù))不轉(zhuǎn)移不為0轉(zhuǎn)移8使用邏輯指令的注意事項(xiàng)與說明指令的目的操作數(shù)不允許使用立即數(shù)最多只能有一個(gè)為內(nèi)存尋址NOT指令不影響標(biāo)志位其它指令根據(jù)運(yùn)算結(jié)果置標(biāo)志位SF、ZF、PF 作用是按位置1或清092、移位指令(1)非循環(huán)移位指令算術(shù)指令SAL(ShiftSAR(Shift SHL(Shift SHR(ShiftArithmeticArithmetic
5、 Left) Right)Left)Right)算術(shù)右移指令邏輯指令邏輯右移指令格式:SALDST,CNT(4條指令格式相同)說明:CNT為移位次數(shù),若移一位,可直接寫1;否則,用CL指明移位次數(shù)。10移位指令執(zhí)行的操作如下圖所示:0SAL/SHLCF(a)算術(shù)/邏輯多次算術(shù)移位后,有可能溢出CF算術(shù)右移,符號(hào)不變滿足除以2的關(guān)系。對(duì)于正數(shù)和負(fù)數(shù)都實(shí)用SAR(b)算術(shù)右移CF邏輯右移,最補(bǔ)0(c)邏輯右移0,邏輯數(shù)只有位置的不同,沒有大小之別SHR11算術(shù)移位把操作數(shù)看做有符號(hào)數(shù);邏輯移位把操作數(shù)看做無符號(hào)數(shù)。移位位數(shù)放在CL寄存器中。MOVSHRCL,4AL,CL;AL中的內(nèi)容右移4位如果只
6、移1位,可以直接寫在指令中:SHRAL,1;AL只右移一位影響C、P、S、Z、O標(biāo)志(移出位都進(jìn)入C)結(jié)果未溢出時(shí):1位操作數(shù)2(不溢出時(shí))右移1位操作數(shù)2(不會(huì)溢出)12例:把AL中的數(shù)x乘以10。解:因?yàn)?0=8+2=23+21,所以可用移位實(shí)現(xiàn)乘10 操作,程序如下:SAL MOV SAL SALADDAL,1AH,AL AL,1 AL,1 AL,AH; 2x; 留下2x這一結(jié)果; 4x; 8x; 8x+2x = 10 x13(2)循環(huán)移位指令指令 ROL不帶進(jìn)位位的循環(huán)不帶進(jìn)位位的循環(huán)右移指令 RORRCL RCR(指令格式都相同)帶進(jìn)位位的循環(huán)指令帶進(jìn)位位的循環(huán)右移指令格式:ROL
7、DST,CNT說明:移位位數(shù)放在CL寄存器中,如果只移1位,也可以直接寫在指令中。循環(huán)移位指令只影響標(biāo)志位CF和OF。14這4條指令的功能如下圖所示:最最低位最最低位CFCF(a) ROL(c) RCL最進(jìn)入最低位和CF最最最低位最低位CFCF(b) ROR(d) RCR最低位進(jìn)入和CF最15用移位操作代替乘除法可提高運(yùn)算速度。例:前例中計(jì)算 x10。 (1)采用乘法指令:MOVMULBL,10BL共需7077個(gè)T周期。(2)采用移位和加法指令:SALMOV SAL SALADDAL,1AH,AL AL,1 AL,1AL,AH;2T2T2T2T3T只需11個(gè)T周期,所用時(shí)間僅為乘法指令的1/7
8、。16例1:將AL的高4位與低4位互換。MOVROLCL,4AL,CL例2:將一個(gè)字AX的內(nèi)容除以2,并把結(jié)果進(jìn)行四舍五入操作。SAR AX,1 ADC AX,0考慮能否用邏輯右移指令實(shí)現(xiàn)上述操作?SHR AX,1P61)17器例:設(shè)在1000H開始存有四個(gè)壓縮的BCD碼12、34、56、78。 要求把它們轉(zhuǎn)換為ASCII碼存放在3000H開始的單元中。1000H3000H假定DS、ES都已設(shè)置為數(shù)據(jù)段的段基址。181234567832H31H34H33H36H35H38H37HMOV MOV MOVBBB: MOVAND ORSI,1000H DI,3000H BX,4 AL,SI AL,0
9、FH AL,30H;SIBCD首址;DIASCII首址;置計(jì)數(shù)器初值;ALBCD碼,第一次取12H高4位02H;轉(zhuǎn)換為ASCII碼32H;保存結(jié)果STOSB LODSB MOV CL,4 SHR AL,CL;邏輯右移4位;得到高4位ASCII碼;保存結(jié)果;(BX)(BX)-1;(BX)0,則繼續(xù)循環(huán)ORAL,30HSTOSB DEC BXJNZBBB193.3.4串操作指令所謂串是指順序放在內(nèi)存中的一組相同類型的數(shù)據(jù),并不局限于由ACSII碼的字符串。串操作就是對(duì)這組相同類型數(shù)據(jù)元素進(jìn)行相同處理(如傳送、比較)。8086共設(shè)置了5類字符串操作指令。定:源操作串在數(shù)據(jù)段中(DS) 、并用SI作指
10、針;目的操作串在附加段中(ES),并用DI作指針,即源操作,目的操作數(shù)指針為ES:DI。數(shù)指針為每次串操作后,串操作指令自動(dòng)修改SI和DI,加減由DF標(biāo)志決定(1、2)。201、串傳送指令 MOVSB / MOVSW格式:MOVSBMOVSWMOVSDST,SRC操作:MOVSB: ES:DISI(DS:SI)(SI)1,DI(DI)1MOVSW: ES:DISI(DS:SI)(SI)2, DI(DI)2要求:SRC用尋址,DST用ES:DI尋址MOVS傳送字節(jié)還是字,由操作數(shù)類型決定 數(shù)據(jù)類型要一致21例:用串傳送指令實(shí)現(xiàn)200個(gè)字節(jié)的數(shù)據(jù)傳送。程序段為:LEA LEA MOV CLD RE
11、PHLTSI,MEM1DI,MEM2 CX,200DF0MOVSB重復(fù),次數(shù)為CX內(nèi)容222、串比較指令 CMPSB / CMPSW比較指令與串比較指令的目的操作數(shù)和源操作數(shù)的位置不同格式:CMPSBCMPSW定義的位置換 減法的位置也換結(jié)果相同CMPSSRC, DST操作:CMPSB: (DS:SI)-(ES:DI)SI(SI)1, DI(DI)1CMPSW: (DS:SI)-(ES:DI)SI(SI)2, DI(DI)2說明: SRC用尋址,DST用ES:DI尋址; 比較結(jié)果只反映在標(biāo)志位上,串本身無變化;不回送比較結(jié)果; 數(shù)據(jù)類型要一致; 本指令可用來檢查兩個(gè)串是否相等。233、串掃描指
12、令SCASB / SCASW格式: SCASBSCASWSCASDST操作: (AL)(ES:DI), DI(AX)(ES:DI), DI說明: 源操作數(shù)固定在AL、AX(DI)1(DI)2,DST用ES:DI尋址; 搜索指令仍執(zhí)行減法操作,結(jié)果只影響標(biāo)志位。 字節(jié)搜索,關(guān)鍵字放在AL中;字搜索,關(guān)鍵字放在AX中。 本指令用于在串中查找指定的信息。24例:在ES段的偏移1000H開始處存有10個(gè)ASCII碼。搜索E,若找到則記下搜索次數(shù)及存放地 址,并在屏幕上顯示Y;若未能找到則顯示N。ES段1000HABCDEF在屏幕上顯示字符的程序段:MOV MOVDL, AH,221H254142434
13、44546.MOV MOV MOV CLDDI,1000H;(DI)串偏移地址;(CX)串長度;搜索關(guān)鍵字=E;從低地址到高地址進(jìn)行搜索;若未找到, 繼續(xù)搜索;找到, 轉(zhuǎn)至FOUND;串中無E,(DL)N;轉(zhuǎn)至DONE;指針回退;ADDRE的地址CX, 0AH AL, EREPNZSCASBJZFOUNDMOV JMP FOUND:DECMOV SUB MOV MOVDL, N DONE DIADDR, DI DI, 1000H NUM, DI DL, Y AH, 221H;NUM搜索次數(shù)(應(yīng)+1);(DL)YDONE:MOV不為0重復(fù),次數(shù)為CX內(nèi)容HLT264、串裝入指令LODSB / L
14、ODSW格式:LODSBLODSWLODS操作:ALAXSRC(), SI), SI(SI)1(SI)2說明:每次都從源數(shù)據(jù)區(qū)取出一個(gè)值送AL或AX中;串裝入指令通常不加重復(fù)前綴。LODSB等價(jià)于:LODSW等價(jià)于:MOVAL,SIMOVAX,SIINCSIINC SIINCSI27例:假設(shè)加法計(jì)算已經(jīng)完成,要求將和的結(jié)果送顯示。為此,要先化成 ASCII碼再送顯示,程序段如下:STR138H35H36H32H85 被6 加LEA MOV STDMOVSI,SUM+3 CX,4;減量修改AH,02數(shù)2STR2916339H31H36H33HLP:LODSBADD AL,30H加數(shù);轉(zhuǎn)換ASCI
15、I碼;(DL)字符;顯示字符MOVDL,AL21H CXLPDEC JNZSUM07H07H02H06H結(jié)果28.5、串指令STOSB / STOSW格式: STOSBSTOSWSTOSDST操作: (ES:DI)(ES:DI)(AL),DI(AX),DI(DI)1(DI)2說明: 用于把一塊區(qū)域填充成某一初始值,即對(duì)區(qū)進(jìn)行初始化。區(qū)域首地址要預(yù)先設(shè)置到ES:DI到串中的字節(jié)數(shù)據(jù)要預(yù)先存到AL到串中的字?jǐn)?shù)據(jù)要預(yù)先存到AX29例2:把1000H開始的100例1:把 從 A000H 開 始 的2KB內(nèi)存單元清零。單元填2AH(*)個(gè)程序段如下:程序段如下:MOV MOV MOVCLDDI, 1000HAL, 2AH CX, 100MOV MOV MOV CLDREPDI,0A000H AX,0CX,1024STOSWREP STOSB30重復(fù)前綴有的串操作指令前
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【初中生物】真菌-2024-2025學(xué)年七年級(jí)生物上冊(cè)同步教學(xué)課件(人教版2024)
- 【初中生物】微生物的分布-2024-2025學(xué)年七年級(jí)生物上冊(cè)同步備課課件(人教版2024)
- 2024就智能工廠建設(shè)與運(yùn)營的合資合同
- 2024年度清雪業(yè)務(wù)承包合同
- 2024年度特許經(jīng)營與加盟合同
- 2024建設(shè)工程的項(xiàng)目合作協(xié)議合同范本
- 2024個(gè)人小額貸款合同
- 2024股份合伙人合同范本
- 2024年工程設(shè)計(jì)合作伙伴協(xié)議
- 2024年度原材料采購擔(dān)保合同
- 2023-2024學(xué)年南京地區(qū)五年級(jí)語文上冊(cè)期中自測(cè)(統(tǒng)編版)
- 船舶系固設(shè)備操作規(guī)程
- 新時(shí)代大中小學(xué)思政課一體化建設(shè)研究
- 工業(yè)自動(dòng)化系統(tǒng)集成項(xiàng)目驗(yàn)收方案
- 新教科版科學(xué)六年級(jí)上冊(cè)全冊(cè)實(shí)驗(yàn)匯總 (超全)
- 王洪圖黃帝內(nèi)經(jīng)80課時(shí)講稿
- 攤鋪機(jī)司機(jī)班組級(jí)安全教育試卷
- 重癥肌無力指南
- 限制被執(zhí)行人駕駛令申請(qǐng)書
- 項(xiàng)目主要施工管理人員情況
- 個(gè)人借條電子版模板
評(píng)論
0/150
提交評(píng)論