微機(jī)原理學(xué)生課件6第三章_第1頁
微機(jī)原理學(xué)生課件6第三章_第2頁
微機(jī)原理學(xué)生課件6第三章_第3頁
微機(jī)原理學(xué)生課件6第三章_第4頁
微機(jī)原理學(xué)生課件6第三章_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論