




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第三章指令系統(tǒng)邏輯運算和串操作13.2.3邏輯運算和移位指令邏輯運算指令●運算規(guī)則:按位操作,無進(jìn)/借位●對標(biāo)志位的影響(除NOT指令外):CFOFSFZFPFAF00***無定義
根據(jù)運算結(jié)果設(shè)置第三章指令系統(tǒng)邏輯運算和串操作2(1)邏輯”與”
AND對兩個操作數(shù)進(jìn)行按位邏輯“與”操作。格式:ANDdest,src用途:保留操作數(shù)的某幾位,其他位清零。例1:保留AL中低4位,高4位清0。ANDAL,0FH例2:AL中有字符’a’~’z’,將其轉(zhuǎn)換成大寫。
ANDAL,01011111B因為小寫與大寫恰好差20H,所以將順數(shù)第3位屏蔽即可求得大寫的ASCLL碼。第三章指令系統(tǒng)邏輯運算和串操作3例3:測試AL的bit7,bit5,bit2是否都是1。
ANDAL,10100100B CMPAL,10100100B
JZYES;ifmatch,gotoYES……;ifnotmatch
……YES:……;goeshereifall‘1’
第三章指令系統(tǒng)邏輯運算和串操作4對兩個操作數(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)R例2:把AH和AL中的非壓縮BCD碼組合成壓縮的BCD碼,放到AL中。MOVCL,4SHLAH,CLORAL,AH例3:把AL的第5位置為1ORAL,00100000B第三章指令系統(tǒng)邏輯運算和串操作5對操作數(shù)進(jìn)行按位邏輯”非”操作。格式:NOTmem/reg例:NOTCX
NOTBYTEPTR[DI](3)邏輯“非”(取反)NOT第三章指令系統(tǒng)邏輯運算和串操作6對兩個操作數(shù)按位進(jìn)行”異或”操作。格式:XORdest,src用途:對reg清零(自身異或)
把reg/mem的某幾位變反(與’1’異或)例1:把AX寄存器清零。
①MOVAX,0②XORAX,AX③ANDAX,0④SUBAX,AX例2:把DH的bit4,3變反XORDH,18H(4)邏輯”異或”XOR
第三章指令系統(tǒng)邏輯運算和串操作7操作與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)測試指令TEST第三章指令系統(tǒng)邏輯運算和串操作82.移位指令(1)非循環(huán)移位指令算術(shù)左移指令SAL(ShiftArithmeticLeft)算術(shù)右移指令SAR(ShiftArithmeticRight)邏輯左移指令SHL(ShiftLeft)邏輯右移指令SHR(ShiftRight)這4條指令的格式相同,以SAL為例: SALmem/reg,CL;移位位數(shù)大于1時要用CL放置移位次數(shù)1;不用CL只能移1位第三章指令系統(tǒng)邏輯運算和串操作9非循環(huán)移位指令功能示意圖最低位最高位CF(b)算術(shù)右移SAR最低位最高位CF(c)邏輯右移SHR0最低位最高位CF0(a)算術(shù)/邏輯左移SAL/SHL第三章指令系統(tǒng)邏輯運算和串操作10算術(shù)移位——把操作數(shù)看做有符號數(shù);邏輯移位——把操作數(shù)看做無符號數(shù)。移位位數(shù)放在CL寄存器中,如果只移1位,也可以直接寫在指令中。例如:
MOVCL,4 SHRAL,CL;AL中的內(nèi)容右移4位影響C,P,S,Z,O標(biāo)志。結(jié)果未溢出時:左移1位≡操作數(shù)*2
右移1位≡操作數(shù)/2第三章指令系統(tǒng)邏輯運算和串操作11例:把AL中的數(shù)x乘10因為10=8+2=23+21,所以可用移位實現(xiàn)乘10操作。程序如下:
SALAL,1;2x MOVAH,AL SALAL,1;4xSALAL,1;8xADDAL,AH;8x+2x=10x第三章指令系統(tǒng)邏輯運算和串操作12不含進(jìn)位位的循環(huán)左移指令ROL 不含進(jìn)位位的循環(huán)右移指令ROR含進(jìn)位位的循環(huán)左移指令RCL 含進(jìn)位位的循環(huán)右移指令RCR格式同非循環(huán)移位指令。移位位數(shù)放在CL寄存器中,如果只移1位,也可以直接寫在指令中。循環(huán)移位指令只影響標(biāo)志位CF。(2)循環(huán)移位指令第三章指令系統(tǒng)邏輯運算和串操作13最低位最高位CF(a)ROL最低位最高位CF(c)RCL最低位最高位CF(b)ROR最低位最高位CF(d)RCR循環(huán)移位指令功能示意圖第三章指令系統(tǒng)邏輯運算和串操作14用移位操作代替乘除法可提高運算速度例:前例中計算x×10。(1)采用乘法指令:
MOV BL,10MUL BL 共需70~77個T周期。(2)采用移位和加法指令:
SAL AL,1;2TMOV AH,AL;2TSAL AL,1;2TSAL AL,1;2TADD AL,AH;3T只需11個T周期,僅相當(dāng)于乘法的1/7。第三章指令系統(tǒng)邏輯運算和串操作15循環(huán)移位舉例:例1:將AL的高4位與低4位互換。
MOVCL,4ROLAL,CL例2:將1A00H內(nèi)存單元中的雙字循環(huán)左移1位。
CMP[1A00H],8000H;確定最高位是0/1CMC;對CF求反,將最高位放入CF中RCLWORDPTR[1A02H],1RCLWORDPTR[1A00H],11A02H1A03H1A00H1A01HCF1A00H1A01H-8000HCF1A02H1A03HCF1A00H1A01H第三章指令系統(tǒng)邏輯運算和串操作16例:設(shè)在1000H開始存有四個壓縮的BCD碼12、34、56、78。要求把它們轉(zhuǎn)換為ASCII碼存放在3000H開始的單元中。假定DS、ES都已設(shè)置為數(shù)據(jù)段的段基址。程序見下頁。1000H3000H1234567832H31H34H33H36H35H38H37H第三章指令系統(tǒng)邏輯運算和串操作17
MOVSI,1000H ;SI←BCD首址
MOVDI,3000H ;DI←ASCII首址
MOVBX,4 ;置計數(shù)器初值BBB:
MOVAL,[SI];AL←BCD碼,第一次取12H
ANDAL,0FH ;屏蔽高4位→02H
ORAL,30H ;轉(zhuǎn)換為ASCII碼→32H
STOSB
;保存結(jié)果,DI+1LODSB;取SI為地址的內(nèi)容,SI+1
MOVCL,4
SHRAL,CL;邏輯右移4位
ORAL,30H;得到高4位ASCII碼
STOSB
;保存結(jié)果DECBX ;(BX)←(BX)-1JNZBBB ;(BX)≠0,則繼續(xù)循環(huán)STOSBALES:(DI);DI+1DILODSBDS:(SI)AL;SI+1SI第三章指令系統(tǒng)邏輯運算和串操作183.3.4串操作指令串:順序放在內(nèi)存中的一組相同類型的數(shù)據(jù)。串操作:對串中的元素進(jìn)行相同的操作。串操作的尋址方式:源操作數(shù)指針———DS:SI(DS可超越)目的操作數(shù)指針——ES:DI每次串操作后:串操作指令自動修改SI和DI——字節(jié)±1,字±2。DF標(biāo)志決定±。(注意:退出串操作后,指針指向最后操作的元素的下一個元素)可完成兩個存儲單元之間的傳送和比較操作(也僅是串指令可以)第三章指令系統(tǒng)邏輯運算和串操作19
重復(fù)前綴有的串操作指令前面可加上重復(fù)前綴REP。當(dāng)使用REP前綴時,該指令重復(fù)執(zhí)行,重復(fù)執(zhí)行次數(shù)由CX決定(帶有REP前綴的串操作指令每執(zhí)行一次,CX自動減1)。重復(fù)前綴包括:REPCX≠0時重復(fù)執(zhí)行REPE/REPZCX≠0∧ZF=1時重復(fù)執(zhí)行REPNE/REPNZCX≠0∧ZF=0時重復(fù)執(zhí)行第三章指令系統(tǒng)邏輯運算和串操作20串指令使用的一般方法設(shè)置源串地址設(shè)置目標(biāo)串地址設(shè)置串長度設(shè)置操作方向DF串指令MOVSI,源串首地址(或LEASI,源串)MOVDI,目的串首地址(或LEADI,目的串)MOVCX,串長度CLD(或STD)《串指令》第三章指令系統(tǒng)邏輯運算和串操作21指令執(zhí)行的操作為:MOVSB:((ES):(DI))←((DS):(SI))
SI±1,DI±1MOVSW:((ES):(DI+1)(DI))←((DS):(SI+1)(SI))
SI±2,DI±2指令也可寫成:MOVSdest,src但要求:①src用DS:SI尋址,dest用ES:DI尋址②傳送是字節(jié)還是字,由操作數(shù)的類型決定⒈串傳送指令MOVSB/MOVSW第三章指令系統(tǒng)邏輯運算和串操作22串傳送指令使用舉例用串傳送指令實現(xiàn)200個字節(jié)的數(shù)據(jù)傳送:LEASI,MEM1LEADI,MEM2MOVCX,200CLD
REPMOVSBHLTMOVSB:((ES):(DI))←((DS):(SI))
SI±1,DI±1
第三章指令系統(tǒng)邏輯運算和串操作23⒉串比較指令CMPSB/CMPSW指令執(zhí)行的操作為:CMPSB:((DS):(SI))-((ES):(DI))
SI±1,DI±1CMPSW:((DS):(SI+1)(SI))-((ES):(DI+1)(DI))
SI±2,DI±2指令也可寫成:CMPSdest,src比較的結(jié)果只反映在標(biāo)志位上,串本身無變化。本指令可用來檢查兩個串是否相等。第三章指令系統(tǒng)邏輯運算和串操作24⒊串掃描SCASB/SCASW執(zhí)行的操作:對字節(jié):(AL)-((ES):(DI))DI±1對字:(AX)-((ES):(DI+1)(DI))DI±2搜索指令執(zhí)行的仍是比較(減法)操作,結(jié)果只影響標(biāo)志位。要搜索的關(guān)鍵字放在AL(字節(jié))或AX(字)中。本指令用于在串中查找指定的信息。SCAS指令加上重復(fù)前綴后,可對串進(jìn)行連續(xù)掃描比較:若前綴為REPZ,則表示比較結(jié)果相等(ZF=1)且串未結(jié)束(CX≠0),則繼續(xù)比較。若前綴為REPNZ,則表示比較結(jié)果不相等(ZF=0)且串未結(jié)束(CX≠0)就繼續(xù)比較。第三章指令系統(tǒng)邏輯運算和串操作25例:在ES段的偏移1000H開始處存有10個ASCII碼。搜索’E’,若找到則記下搜索次數(shù)及存放地址,并在屏幕上顯示’Y’;若未找到則顯示’N’。(見右圖)在屏幕上顯示一個字符的指令段如下:MOVDL,<字符>MOVAH,2INT21H
實現(xiàn)題目要求的程序段見下頁:1000H414243444546’A’’B’’C’’D’’F’...ES段’E’第三章指令系統(tǒng)邏輯運算和串操作26MOVDI,1000H;(DI)←串偏移地址MOVCX,0AH;(CX)←串長度
MOVAL,’E’;搜索關(guān)鍵字=’E’ CLD;從低地址到高地址進(jìn)行搜索REPNZSCASB;若未找到,繼續(xù)搜索
JZFOUND;找到,轉(zhuǎn)至FOUNDMOVDL,’N’;串中無’E’,(DL)←’N’JMPDONE;轉(zhuǎn)至DONEFOUND:DECDI;指針回退MOVADDR,DI;ADDR←’E’的地址
SUBDI,1000HMOVNUM,DI;NUM←搜索次數(shù)
MOVDL,’Y’;(DL)←’Y’DONE:MOVAH,2 INT21H;顯示字符HLT(AL)-((ES):(DI))DI±1加了REPNZ前綴:當(dāng)ZF=0,且CX≠0.則繼續(xù)第三章指令系統(tǒng)邏輯運算和串操作27執(zhí)行的操作為:對字節(jié):(AL)←((DS):(SI))SI±1對字:(AX)←((DS):(SI+1)(SI))
SI±2串裝入指令通常不加重復(fù)前綴。LODSB等價于:
MOVAL,[SI]
INCSI
LODSW等價于:
MOVAX,[SI]INCSIINCSI⒋串裝入指令LODSB/LODSW第三章指令系統(tǒng)邏輯運算和串操作2836H32H39H31HSTRING1STRING238H35H36H33H被加數(shù)加數(shù)數(shù)據(jù)段‘8’‘5’‘6’‘2’‘9’‘1’‘6’‘3’SUM結(jié)果......07H07H02H06H第三章指令系統(tǒng)邏輯運算和串操作29下面要求將和的結(jié)果送顯示,為此,要先化成ASCII碼再送顯示,程序段如下:
LEASI,SUM+3;(SI)←SUM+3MOVCX,4;(CX)←和長度
STD;置DF=1,減量修改SIMOVAH,02;(AH)←功能號LP:LODSB;取BCD碼至AL,且(SI)←(SI)-1ADDAL,30H;轉(zhuǎn)換為ASCII碼
MOVDL,AL;(DL)←字符
INT21H;顯
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 五年級體育課教學(xué)輔助計劃他
- 新員工培訓(xùn)培優(yōu)輔差工作計劃
- 小學(xué)語文學(xué)科競賽心得體會
- 第二學(xué)期小學(xué)教導(dǎo)處德育工作實施計劃
- 電力系統(tǒng)員工學(xué)習(xí)張欣同志先進(jìn)事跡心得體會
- 放射科醫(yī)療質(zhì)量安全事件報告制度及流程
- 以形促言:聚焦于形任務(wù)在高中英語閱讀課堂的效能探究
- 以客戶為擎驅(qū)動增長:A集團(tuán)大客戶管理體系的深度剖析與創(chuàng)新實踐
- 一年級興趣發(fā)展與德育結(jié)合計劃
- 2025年華中農(nóng)業(yè)大學(xué)自主招生職業(yè)規(guī)劃個人陳述范文
- 山東省中小學(xué)校檔案管理暫行辦法
- 班長述職ppt模版
- 普通高中物理課程標(biāo)準(zhǔn)
- 國家開放大學(xué)《監(jiān)督學(xué)》形考任務(wù)( 1-4)試題和答案解析
- 完工付款最終付款申請表
- 人工動靜脈內(nèi)瘺
- 新版(七步法案例)PFMEA
- 慢阻肺隨訪記錄表正式版
- 廣西大學(xué)數(shù)學(xué)建模競賽選拔賽題目
- 受戒申請表(共3頁)
- 低鈉血癥的護(hù)理
評論
0/150
提交評論