邏輯運(yùn)算和移位指令.ppt

邏輯運(yùn)算和移位指令.ppt

ID:51962248

大?。?47.36 KB

頁數(shù):35頁

時間:2020-03-26

邏輯運(yùn)算和移位指令.ppt_第1頁
邏輯運(yùn)算和移位指令.ppt_第2頁
邏輯運(yùn)算和移位指令.ppt_第3頁
邏輯運(yùn)算和移位指令.ppt_第4頁
邏輯運(yùn)算和移位指令.ppt_第5頁
邏輯運(yùn)算和移位指令.ppt_第6頁
邏輯運(yùn)算和移位指令.ppt_第7頁
邏輯運(yùn)算和移位指令.ppt_第8頁
邏輯運(yùn)算和移位指令.ppt_第9頁
邏輯運(yùn)算和移位指令.ppt_第10頁
資源描述:

《邏輯運(yùn)算和移位指令.ppt》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、3.3.3邏輯運(yùn)算和移位指令邏輯運(yùn)算指令●運(yùn)算規(guī)則:按位操作,無進(jìn)/借位●對標(biāo)志位的影響(除NOT指令外):CFOFSFZFPFAF00***無定義根據(jù)運(yùn)算結(jié)果設(shè)置1(1)邏輯”與”AND對兩個操作數(shù)進(jìn)行按位邏輯“與”操作。格式:ANDdest,src用途:保留操作數(shù)的某幾位,清零其他位。例1:保留AL中低4位,高4位清0。ANDAL,0FH例2:AL中有字符’a’~’z’,將其轉(zhuǎn)換成大寫。ANDAL,01011111B2例3:測試AL的bit7,bit5,bit2是否都是1。ANDAL,10100100BCMPAL,10100100BJZYES;ifmatch,gotoYES

2、……;ifnotmatch……YES:……;goeshereifall‘1’3對兩個操作數(shù)進(jìn)行按位邏輯”或”操作。格式:ORdest,src用途:對操作數(shù)的某幾位置1;對兩操作數(shù)進(jìn)行組合。例1:把AL中的非壓縮BCD碼變成相應(yīng)十進(jìn)制數(shù)的ASCII碼。ORAL,30H(2)邏輯”或”O(jiān)R4例2:把AH和AL中的非壓縮BCD碼組合成壓縮的BCD碼,放到AL中。MOVCL,4SHLAH,CLORAL,AH例3:把AL的第5位置為1ORAL,00100000B5對操作數(shù)進(jìn)行按位邏輯”非”操作。格式:NOTmem/reg例:NOTCXNOTBYTEPTR[DI](3)邏輯“非”(取反)N

3、OT6對兩個操作數(shù)按位進(jìn)行”異或”操作。格式:XORdest,src用途:對reg清零(自身異或)把reg/mem的某幾位變反(與’1’異或)例1:把AX寄存器清零。例2:把DH的bit4,3變反①M(fèi)OVAX,0XORDH,18H②XORAX,AX③ANDAX,0④SUBAX,AX(4)邏輯”異或”XOR7操作與AND指令類似,但不將”與”的結(jié)果送回,只影響標(biāo)志位。TEST指令常用于位測試,與條件轉(zhuǎn)移指令一起用。例:測試AL的內(nèi)容是否為負(fù)數(shù)。TESTAL,80H;檢查AL中D7=1?JNZMINUS;是1(負(fù)數(shù)),轉(zhuǎn)MINUS……;否則(正數(shù))不轉(zhuǎn)移MINUS:…………(5)測

4、試指令TEST82.移位指令(1)非循環(huán)移位指令算術(shù)左移指令SAL(ShiftArithmeticLeft)算術(shù)右移指令SAR(ShiftArithmeticRight)邏輯左移指令SHL(ShiftLeft)邏輯右移指令SHR(ShiftRight)這4條指令的格式相同,以SAL為例:SALmem/reg,CL;移位位數(shù)大于1時1;移位位數(shù)等于1時9移位指令執(zhí)行的操作如下圖所示:最低位最高位CF0(a)算術(shù)/邏輯左移SAL/SHL最低位最高位CF(b)算術(shù)右移SAR最低位最高位CF(c)邏輯右移SHR0非循環(huán)移位指令功能示意圖10算術(shù)移位——把操作數(shù)看做有符號數(shù);邏輯移位——

5、把操作數(shù)看做無符號數(shù)。移位位數(shù)放在CL寄存器中,如果只移1位,也可以直接寫在指令中。例如:MOVCL,4SHRAL,CL;AL中的內(nèi)容右移4位影響C,P,S,Z,O標(biāo)志。結(jié)果未溢出時:左移1位≡操作數(shù)*2右移1位≡操作數(shù)/211例:把AL中的數(shù)x乘10因?yàn)?0=8+2=23+21,所以可用移位實(shí)現(xiàn)乘10操作。程序如下:SALAL,1;2xMOVAH,ALSALAL,1;4xSALAL,1;8xADDAL,AH;8x+2x=10x12不含進(jìn)位位的循環(huán)左移指令ROL不含進(jìn)位位的循環(huán)右移指令ROR含進(jìn)位位的循環(huán)左移指令RCL含進(jìn)位位的循環(huán)右移指令RCR格式同非循環(huán)移位指令。移位位數(shù)放

6、在CL寄存器中,如果只移1位,也可以直接寫在指令中。循環(huán)移位指令只影響標(biāo)志位CF和OF。(2)循環(huán)移位指令13這4條指令的功能如下圖示:最低位最高位CF(a)ROL最低位最高位CF(c)RCL最低位最高位CF(b)ROR最低位最高位CF(d)RCR循環(huán)移位指令功能示意圖14用移位操作代替乘除法可提高運(yùn)算速度例:前例中計算x×10。(1)采用乘法指令:MOVBL,10MULBL共需70~77個T周期。(2)采用移位和加法指令:SALAL,1;2TMOVAH,AL;2TSALAL,1;2TSALAL,1;2TADDAL,AH;3T只需11個T周期,僅相當(dāng)于乘法的1/7。15循環(huán)移位

7、舉例:例1:將AL的高4位與低4位互換。MOVCL,4ROLAL,CL例2:將1A00H內(nèi)存單元中的雙字循環(huán)左移1位。CMP[1A00H],8000HCMCRCLWORDPTR[1A02H],1RCLWORDPTR[1A00H],116例:設(shè)在1000H開始存有四個壓縮的BCD碼12、34、56、78。要求把它們轉(zhuǎn)換為ASCII碼存放在3000H開始的單元中。假定DS、ES都已設(shè)置為數(shù)據(jù)段的段基址。程序見下頁。1000H3000H1234567832H31H34H33H36H35H38H37

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。