版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第三章指令系統(tǒng)邏輯運(yùn)算和串操作13.2.3邏輯運(yùn)算和移位指令邏輯運(yùn)算指令●運(yùn)算規(guī)則:按位操作,無(wú)進(jìn)/借位●對(duì)標(biāo)志位的影響(除NOT指令外):CFOFSFZFPFAF00***無(wú)定義
根據(jù)運(yùn)算結(jié)果設(shè)置第三章指令系統(tǒng)邏輯運(yùn)算和串操作2(1)邏輯”與”
AND對(duì)兩個(gè)操作數(shù)進(jìn)行按位邏輯“與”操作。格式:ANDdest,src用途:保留操作數(shù)的某幾位,其他位清零。例1:保留AL中低4位,高4位清0。ANDAL,0FH例2:AL中有字符’a’~’z’,將其轉(zhuǎn)換成大寫。
ANDAL,01011111B因?yàn)樾懪c大寫恰好差20H,所以將順數(shù)第3位屏蔽即可求得大寫的ASCLL碼。第三章指令系統(tǒng)邏輯運(yùn)算和串操作3例3:測(cè)試AL的bit7,bit5,bit2是否都是1。
ANDAL,10100100B CMPAL,10100100B
JZYES;ifmatch,gotoYES……;ifnotmatch
……YES:……;goeshereifall‘1’
第三章指令系統(tǒng)邏輯運(yùn)算和串操作4對(duì)兩個(gè)操作數(shù)進(jìn)行按位邏輯”或”操作。格式:ORdest,src用途:對(duì)操作數(shù)的某幾位置1;對(duì)兩操作數(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)邏輯運(yùn)算和串操作5對(duì)操作數(shù)進(jìn)行按位邏輯”非”操作。格式:NOTmem/reg例:NOTCX
NOTBYTEPTR[DI](3)邏輯“非”(取反)NOT第三章指令系統(tǒng)邏輯運(yùn)算和串操作6對(duì)兩個(gè)操作數(shù)按位進(jìn)行”異或”操作。格式:XORdest,src用途:對(duì)reg清零(自身異或)
把reg/mem的某幾位變反(與’1’異或)例1:把AX寄存器清零。
①M(fèi)OVAX,0②XORAX,AX③ANDAX,0④SUBAX,AX例2:把DH的bit4,3變反XORDH,18H(4)邏輯”異或”XOR
第三章指令系統(tǒng)邏輯運(yùn)算和串操作7操作與AND指令類似,但不將”與”的結(jié)果送回,只影響標(biāo)志位。TEST指令常用于位測(cè)試,與條件轉(zhuǎn)移指令一起用。例:測(cè)試AL的內(nèi)容是否為負(fù)數(shù)。TESTAL,80H;檢查AL中D7=1? JNZMINUS;是1(負(fù)數(shù)),轉(zhuǎn)MINUS
……;否則(正數(shù))不轉(zhuǎn)移MINUS:…………(5)測(cè)試指令TEST第三章指令系統(tǒng)邏輯運(yùn)算和串操作82.移位指令(1)非循環(huán)移位指令算術(shù)左移指令SAL(ShiftArithmeticLeft)算術(shù)右移指令SAR(ShiftArithmeticRight)邏輯左移指令SHL(ShiftLeft)邏輯右移指令SHR(ShiftRight)這4條指令的格式相同,以SAL為例: SALmem/reg,CL;移位位數(shù)大于1時(shí)要用CL放置移位次數(shù)1;不用CL只能移1位第三章指令系統(tǒng)邏輯運(yùn)算和串操作9非循環(huán)移位指令功能示意圖最低位最高位CF(b)算術(shù)右移SAR最低位最高位CF(c)邏輯右移SHR0最低位最高位CF0(a)算術(shù)/邏輯左移SAL/SHL第三章指令系統(tǒng)邏輯運(yùn)算和串操作10算術(shù)移位——把操作數(shù)看做有符號(hào)數(shù);邏輯移位——把操作數(shù)看做無(wú)符號(hào)數(shù)。移位位數(shù)放在CL寄存器中,如果只移1位,也可以直接寫在指令中。例如:
MOVCL,4 SHRAL,CL;AL中的內(nèi)容右移4位影響C,P,S,Z,O標(biāo)志。結(jié)果未溢出時(shí):左移1位≡操作數(shù)*2
右移1位≡操作數(shù)/2第三章指令系統(tǒng)邏輯運(yùn)算和串操作11例:把AL中的數(shù)x乘10因?yàn)?0=8+2=23+21,所以可用移位實(shí)現(xiàn)乘10操作。程序如下:
SALAL,1;2x MOVAH,AL SALAL,1;4xSALAL,1;8xADDAL,AH;8x+2x=10x第三章指令系統(tǒng)邏輯運(yùn)算和串操作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)邏輯運(yùn)算和串操作13最低位最高位CF(a)ROL最低位最高位CF(c)RCL最低位最高位CF(b)ROR最低位最高位CF(d)RCR循環(huán)移位指令功能示意圖第三章指令系統(tǒng)邏輯運(yùn)算和串操作14用移位操作代替乘除法可提高運(yùn)算速度例:前例中計(jì)算x×10。(1)采用乘法指令:
MOV BL,10MUL BL 共需70~77個(gè)T周期。(2)采用移位和加法指令:
SAL AL,1;2TMOV AH,AL;2TSAL AL,1;2TSAL AL,1;2TADD AL,AH;3T只需11個(gè)T周期,僅相當(dāng)于乘法的1/7。第三章指令系統(tǒng)邏輯運(yùn)算和串操作15循環(huán)移位舉例:例1:將AL的高4位與低4位互換。
MOVCL,4ROLAL,CL例2:將1A00H內(nèi)存單元中的雙字循環(huán)左移1位。
CMP[1A00H],8000H;確定最高位是0/1CMC;對(duì)CF求反,將最高位放入CF中RCLWORDPTR[1A02H],1RCLWORDPTR[1A00H],11A02H1A03H1A00H1A01HCF1A00H1A01H-8000HCF1A02H1A03HCF1A00H1A01H第三章指令系統(tǒng)邏輯運(yùn)算和串操作16例:設(shè)在1000H開始存有四個(gè)壓縮的BCD碼12、34、56、78。要求把它們轉(zhuǎn)換為ASCII碼存放在3000H開始的單元中。假定DS、ES都已設(shè)置為數(shù)據(jù)段的段基址。程序見下頁(yè)。1000H3000H1234567832H31H34H33H36H35H38H37H第三章指令系統(tǒng)邏輯運(yùn)算和串操作17
MOVSI,1000H ;SI←BCD首址
MOVDI,3000H ;DI←ASCII首址
MOVBX,4 ;置計(jì)數(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)邏輯運(yùn)算和串操作183.3.4串操作指令串:順序放在內(nèi)存中的一組相同類型的數(shù)據(jù)。串操作:對(duì)串中的元素進(jìn)行相同的操作。串操作的尋址方式:源操作數(shù)指針———DS:SI(DS可超越)目的操作數(shù)指針——ES:DI每次串操作后:串操作指令自動(dòng)修改SI和DI——字節(jié)±1,字±2。DF標(biāo)志決定±。(注意:退出串操作后,指針指向最后操作的元素的下一個(gè)元素)可完成兩個(gè)存儲(chǔ)單元之間的傳送和比較操作(也僅是串指令可以)第三章指令系統(tǒng)邏輯運(yùn)算和串操作19
重復(fù)前綴有的串操作指令前面可加上重復(fù)前綴REP。當(dāng)使用REP前綴時(shí),該指令重復(fù)執(zhí)行,重復(fù)執(zhí)行次數(shù)由CX決定(帶有REP前綴的串操作指令每執(zhí)行一次,CX自動(dòng)減1)。重復(fù)前綴包括:REPCX≠0時(shí)重復(fù)執(zhí)行REPE/REPZCX≠0∧ZF=1時(shí)重復(fù)執(zhí)行REPNE/REPNZCX≠0∧ZF=0時(shí)重復(fù)執(zhí)行第三章指令系統(tǒng)邏輯運(yùn)算和串操作20串指令使用的一般方法設(shè)置源串地址設(shè)置目標(biāo)串地址設(shè)置串長(zhǎng)度設(shè)置操作方向DF串指令MOVSI,源串首地址(或LEASI,源串)MOVDI,目的串首地址(或LEADI,目的串)MOVCX,串長(zhǎng)度CLD(或STD)《串指令》第三章指令系統(tǒng)邏輯運(yùn)算和串操作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)邏輯運(yùn)算和串操作22串傳送指令使用舉例用串傳送指令實(shí)現(xiàn)200個(gè)字節(jié)的數(shù)據(jù)傳送:LEASI,MEM1LEADI,MEM2MOVCX,200CLD
REPMOVSBHLTMOVSB:((ES):(DI))←((DS):(SI))
SI±1,DI±1
第三章指令系統(tǒng)邏輯運(yùn)算和串操作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)志位上,串本身無(wú)變化。本指令可用來(lái)檢查兩個(gè)串是否相等。第三章指令系統(tǒng)邏輯運(yùn)算和串操作24⒊串掃描SCASB/SCASW執(zhí)行的操作:對(duì)字節(jié):(AL)-((ES):(DI))DI±1對(duì)字:(AX)-((ES):(DI+1)(DI))DI±2搜索指令執(zhí)行的仍是比較(減法)操作,結(jié)果只影響標(biāo)志位。要搜索的關(guān)鍵字放在AL(字節(jié))或AX(字)中。本指令用于在串中查找指定的信息。SCAS指令加上重復(fù)前綴后,可對(duì)串進(jìn)行連續(xù)掃描比較:若前綴為REPZ,則表示比較結(jié)果相等(ZF=1)且串未結(jié)束(CX≠0),則繼續(xù)比較。若前綴為REPNZ,則表示比較結(jié)果不相等(ZF=0)且串未結(jié)束(CX≠0)就繼續(xù)比較。第三章指令系統(tǒng)邏輯運(yùn)算和串操作25例:在ES段的偏移1000H開始處存有10個(gè)ASCII碼。搜索’E’,若找到則記下搜索次數(shù)及存放地址,并在屏幕上顯示’Y’;若未找到則顯示’N’。(見右圖)在屏幕上顯示一個(gè)字符的指令段如下:MOVDL,<字符>MOVAH,2INT21H
實(shí)現(xiàn)題目要求的程序段見下頁(yè):1000H414243444546’A’’B’’C’’D’’F’...ES段’E’第三章指令系統(tǒng)邏輯運(yùn)算和串操作26MOVDI,1000H;(DI)←串偏移地址MOVCX,0AH;(CX)←串長(zhǎng)度
MOVAL,’E’;搜索關(guān)鍵字=’E’ CLD;從低地址到高地址進(jìn)行搜索REPNZSCASB;若未找到,繼續(xù)搜索
JZFOUND;找到,轉(zhuǎn)至FOUNDMOVDL,’N’;串中無(wú)’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)邏輯運(yùn)算和串操作27執(zhí)行的操作為:對(duì)字節(jié):(AL)←((DS):(SI))SI±1對(duì)字:(AX)←((DS):(SI+1)(SI))
SI±2串裝入指令通常不加重復(fù)前綴。LODSB等價(jià)于:
MOVAL,[SI]
INCSI
LODSW等價(jià)于:
MOVAX,[SI]INCSIINCSI⒋串裝入指令LODSB/LODSW第三章指令系統(tǒng)邏輯運(yùn)算和串操作2836H32H39H31HSTRING1STRING238H35H36H33H被加數(shù)加數(shù)數(shù)據(jù)段‘8’‘5’‘6’‘2’‘9’‘1’‘6’‘3’SUM結(jié)果......07H07H02H06H第三章指令系統(tǒng)邏輯運(yùn)算和串操作29下面要求將和的結(jié)果送顯示,為此,要先化成ASCII碼再送顯示,程序段如下:
LEASI,SUM+3;(SI)←SUM+3MOVCX,4;(CX)←和長(zhǎng)度
STD;置DF=1,減量修改SIMOVAH,02;(AH)←功能號(hào)LP:LODSB;取BCD碼至AL,且(SI)←(SI)-1ADDAL,30H;轉(zhuǎn)換為ASCII碼
MOVDL,AL;(DL)←字符
INT21H;顯
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度版權(quán)買賣合同標(biāo)的及買賣范圍3篇
- 二零二五年度汽車改裝服務(wù)合同2篇
- 二零二五年度網(wǎng)絡(luò)文學(xué)劇本改編合同3篇
- 高端優(yōu)雅香型花生油技術(shù)改造項(xiàng)目可行性研究報(bào)告模板-立項(xiàng)拿地
- 二零二五年度愛奇藝體育賽事廣告合作合同:股票投資增值服務(wù)協(xié)議3篇
- 痊愈復(fù)課證明查驗(yàn)制度
- 二零二五年度文化旅游產(chǎn)業(yè)合作合同3篇
- 高速公路施工材料運(yùn)輸合同三篇
- 二零二五年度房地產(chǎn)金融產(chǎn)品職業(yè)經(jīng)理人風(fēng)險(xiǎn)管理聘用合同副本3篇
- 二零二五年度房產(chǎn)贈(zèng)與離婚協(xié)議財(cái)產(chǎn)轉(zhuǎn)移合同3篇
- (完整版)100道湊十法練習(xí)題
- 光伏逆變器一課件
- 2023年上海師范大學(xué)輔導(dǎo)員招聘考試筆試題庫(kù)及答案解析
- (完整版)英語(yǔ)高頻詞匯800詞
- 嚴(yán)重精神障礙患者發(fā)病報(bào)告卡
- 《基礎(chǔ)馬來(lái)語(yǔ)》課程標(biāo)準(zhǔn)(高職)
- 2021年國(guó)標(biāo)熱鍍鋅鋼管規(guī)格、尺寸理論重量表
- 烏魯木齊基準(zhǔn)地價(jià)修正體系
- DB32-T 3177-2017草莓-蕹菜水旱輪作設(shè)施栽培技術(shù)規(guī)程 -(高清現(xiàn)行)
- GB∕T 3216-2016 回轉(zhuǎn)動(dòng)力泵 水力性能驗(yàn)收試驗(yàn) 1級(jí)、2級(jí)和3級(jí)
- 七年級(jí)數(shù)學(xué)資料培優(yōu)匯總精華
評(píng)論
0/150
提交評(píng)論