邏輯運(yùn)算和移位指令_第1頁(yè)
邏輯運(yùn)算和移位指令_第2頁(yè)
邏輯運(yùn)算和移位指令_第3頁(yè)
邏輯運(yùn)算和移位指令_第4頁(yè)
邏輯運(yùn)算和移位指令_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

最新文檔

評(píng)論

0/150

提交評(píng)論