版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第7章邏輯運(yùn)算7.1邏輯運(yùn)算指令7.2移位及循環(huán)移位7.1邏輯運(yùn)算指令所有的邏輯指令都將處理寄存器或存儲(chǔ)器中的一個(gè)字節(jié)或一個(gè)字。指令將被操作(參與運(yùn)算)的字節(jié)、字的各位予以配對,并且設(shè)定CF、OF、PF、SF和ZF標(biāo)志的狀態(tài),AF標(biāo)志對于用戶沒有意義。7.1.1邏輯指令1.AND與運(yùn)算假如被配對的兩個(gè)位都為1,則其結(jié)果為1;而在其他的情況中,它的值均為0。2.OR或運(yùn)算假如被配對的兩個(gè)位其中有一個(gè)為1,則其結(jié)果為1;假如兩者都是0,則結(jié)果為0。3.XOR異或運(yùn)算假如被配對的兩個(gè)位其中一個(gè)為0,而另一個(gè)為1,則結(jié)果為1;假如被配對的兩個(gè)位是相同值(都為0或都為1),其結(jié)果為0。參與邏輯運(yùn)算的操作數(shù)有兩個(gè),第一個(gè)操作數(shù)所指定的字節(jié)或字,存放在寄存器或存儲(chǔ)器單元中,其中的值是唯一可改變的,因?yàn)樽詈蟮慕Y(jié)果存放在此寄存器或存儲(chǔ)器單元中。例如,下面的AND、OR及XOR指令,使用的操作數(shù)值是相同的。例7.1下列邏輯運(yùn)算中,各題目彼此是互不相關(guān)的,假設(shè)AL的內(nèi)容為11000101,BH的內(nèi)容為01011100,進(jìn)行下列邏輯運(yùn)算后,相應(yīng)的寄存器被設(shè)為:(1)ANDAL,BH ;將AL設(shè)為01000100(2)ORBH,AL ;將BH設(shè)為11011101(3)XORAL,AL ;將AL設(shè)為00000000(4)ANDAL,00 ;將AL設(shè)為00000000(5)ANDAL,0FH ;將AL設(shè)為00000101(6)ORCL,CL ;設(shè)定SF及ZF例7.1中的(3)和(4)提供了一個(gè)將寄存器清為0的方法。(5)將AL的高4位清為0。可以利用OR來完成下面的操作目的,也可以利用CMP指令(這樣可能會(huì)更清楚)。
例7.2OR的使用。(1)ORCX,CX ;測試CX是否為0JZ… ;如果為0則轉(zhuǎn)移(2)ORCX,CX ;測試CX的正負(fù)號JS… ;如果為負(fù)則轉(zhuǎn)移4.TESTTEST的功能與AND相似,但是它只設(shè)定標(biāo)志的值,不將結(jié)果存于第一個(gè)操作數(shù)的寄存器或存儲(chǔ)器單元中。
例7.3TEST的使用。(1)TESTBL,11110000B ;BL的高4位是否有不為0的位?JNZ…(2)TESTAL,00000001B ;AL的內(nèi)容是否為奇數(shù)?JNZ…(3)TESTDX,0FFH ;DX的內(nèi)容是否為0?JZ…5.NOTNOT是另一種邏輯運(yùn)算指令,它的作用是將寄存器或存儲(chǔ)器單元中的字節(jié)或字的每個(gè)位取反,即0→1,1→0。例如,假設(shè)AL的內(nèi)容為11000101,那么NOTAL指令會(huì)將AL的內(nèi)容變?yōu)?0111010。NOT與NEG二者并不相同,NEG是求一個(gè)數(shù)的相反數(shù),它會(huì)將所有的位取反,然后再加1(即求補(bǔ))。NEG進(jìn)行的是0-操作數(shù)。例如,0FFH(-1)經(jīng)NEG后變?yōu)?1H(+1)。TEST與AND作用相同也是與運(yùn)算,但是只設(shè)定標(biāo)志,并不改變該位的值。7.1.2將小寫轉(zhuǎn)換為大寫
例7.4將小寫轉(zhuǎn)換成大寫。在許多情況下,需要將大寫與小寫字母進(jìn)行轉(zhuǎn)換。例如,你可能接收到一個(gè)文件,里面的內(nèi)容是由大寫字母所組成的,或者一個(gè)程序,允許使用者以大寫或小寫回答命令(例如YES或yes),你需要將它們轉(zhuǎn)換后再進(jìn)行測試。大寫字母A~Z,以十六進(jìn)制的ASCII碼表示即41H~5AH;而小寫字母a~z的ASCII碼是61H~7AH。二者唯一不同之處是,大寫的b5位是0,而小寫的b5位是1,如下所示:位:76543210位:76543210字母A:01000001字母Z:01011010字母a:01100001字母z:01111010例7.4的程序清單(L74.LST)如下:;filename:L74.ASM———————————————0000 CODESEGMENTPARA‘CODE’ ASSUMECS:CODE,DS:CODE,SS:CODE0100 ORG100H0100EB1C90 BEGIN:JMPMAIN;—————————————————————4368616E676520 TITLEXDB‘Changetouppercaseletters’746F2075707065 7263617365206C 657474657273 ;—————————————————————011EMAINPROCNEAR011E8D1E0104R LEABX,TITLEX+1
;被轉(zhuǎn)換字母開始地址
B9001A MOVCX,26 ;被轉(zhuǎn)換字母數(shù)
0125 B20:8A27 MOVAH,[BX] ;從TITLEX欄取字母
80FC61 CMPAH,61H ;若字母小于a012A720A JBB30 ;若字母大于z012C80FC7A CMPAH,7AH ;則
012F7705JAB30;轉(zhuǎn)B3080E4DFANDAH,11011111B ;若字母是小寫轉(zhuǎn)換成大寫8827MOV[BX],AH ;轉(zhuǎn)換結(jié)果仍存入TITLEX0136 B30:43 INCBX ;指向下一個(gè)字母
0137E2EC LOOPB200139C3 RET013A MAINENDP013A CODEENDSENDBEGIN例7.4的程序,從TITLEX+1的偏移地址開始,將TITLEX字符串的字母從小寫轉(zhuǎn)換為大寫,此程序設(shè)定BX的初值為TITLEX+1的偏移地址,然后利用此地址,把從TITLEX+1開始的字節(jié)一一傳送給AH。假如,字節(jié)的值是在61H到7AH的范圍內(nèi),則AND指令將會(huì)把b5位設(shè)為0:ANDAH,11011111B所有不是a~z的字節(jié),則不會(huì)改變其內(nèi)容。這個(gè)程序同時(shí)把被轉(zhuǎn)換后的字節(jié)再送回TITLEX,并且增加BX的值,以便處理下一個(gè)字節(jié)。7.2移位及循環(huán)移位移位和循環(huán)移位指令是CPU邏輯處理能力的一部分。它們具有下列幾項(xiàng)功能。(1)可以作用在一個(gè)字節(jié)或字上;(2)可以作用在寄存器或存儲(chǔ)器上;(3)可以向左或向右移位/循環(huán)移位;(4)假如作用的是字節(jié),則最多可以移位/循環(huán)移位8位;如果是字,則可以達(dá)到16位;(5)可分為邏輯(不帶正負(fù)號)或算術(shù)(帶有正負(fù)號)的移位;(6)如果移位的位是1位,則可以直接寫成操作數(shù)1;假如,移位的位數(shù)大于1位,那么就要將此值傳送給CL寄存器。7.2.1移位被移出的位將置入CF標(biāo)志中。圖7-1是移位指令的助記符和圖形說明。圖7-1移位指令的助記符和圖形說明例如,SHR的使用(下面的指令是連續(xù)的)。MOVCL,03(AL)MOVAL,10110111B;10110111SHRAL,1;01011011向右移1位SHRAL,CL;00001011向右移3位第一條SHR將AL的內(nèi)容向右移1位。被移出的位放在CF標(biāo)志中,CF為1;并在AL的最左(最高)位移入0。第二條SHR將AL向右移3位。CF標(biāo)志的內(nèi)容依序變化為1、1及0,并且在AL的最左邊三個(gè)位補(bǔ)0。例如,利用SAR向右算術(shù)移位的情況。MOV CL,03(AL)MOV AL,10110111B ;10110111SAR AL,1;11011011向右移1位SAR AL,CL;11111011向右移3位SAR與SHR有一重要的不同點(diǎn),即SAR利用正負(fù)號位去填補(bǔ)最左邊(最高位)空出的位,即最高位保持不變。利用這種方法,正值與負(fù)值都保持它們原來的正負(fù)號。上面的例子正負(fù)號位的值為1。向左移位是在右邊的位置上補(bǔ)0。因此,SHL及SAL的作用就完全相同了。向左移位可以使移位的值乘以2,向右移位可以使移位的值除以2。這是一種非常有用的方法,并且二者都比用乘除指令更快速。奇數(shù)(例如,5和7)在除以2時(shí),所得的值會(huì)比真正的值小(分別是2和3),并且CF被設(shè)定為1。如果要移動(dòng)兩個(gè)位,可以連續(xù)使用兩條移位指令,這樣會(huì)比將2放入CL中,再用一條移位指令效率更高。利用JC(如有進(jìn)位則轉(zhuǎn)移)指令,可以測試被移入CF標(biāo)志的位。7.2.2循環(huán)移位循環(huán)移位指令會(huì)將被移出的位再回送給空出的位。圖7-2是循環(huán)移位指令的助記符和圖形說明。圖7-2循環(huán)移位指令的助記符和圖形說明例如,下面的指令序列用來說明ROR的作用。MOVCL,03(BL)MOVBL,10110111B;10110111RORBL,1;11011011向右循環(huán)移1位RORBL,CL;01111011向右循環(huán)移3位第一條ROR,是把BL的最右邊的一個(gè)位移出,將它放在BL最左邊空出來的位中。第二條ROR移出最右邊的三個(gè)位,將它依順序放在BL最左邊的3個(gè)位中。RCR和RCL兩條指令,將和CF標(biāo)志一起循環(huán)移位。被移出的位移入CF中
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人與銀行2024年度借款合同3篇
- 專業(yè)吊車作業(yè)協(xié)議模板2024版
- 2024版產(chǎn)品標(biāo)準(zhǔn)化認(rèn)證協(xié)議文件版B版
- 2024中美農(nóng)產(chǎn)品加工與出口合作協(xié)議范文3篇
- 2024機(jī)器租賃協(xié)議書
- 搶占春節(jié)外賣市場
- 2024年度地產(chǎn)公司房地產(chǎn)廣告效果評估與優(yōu)化委托代理協(xié)議3篇
- 2024年股權(quán)質(zhì)押擔(dān)保協(xié)議標(biāo)準(zhǔn)格式版B版
- 解讀現(xiàn)代小說奧秘
- 2024年貨款分期償還買賣約定
- [QC成果]提高剪力墻施工質(zhì)量一次合格率
- 移印工作業(yè)指導(dǎo)書
- 樂高基礎(chǔ)篇樂高積木和搭建種類專題培訓(xùn)課件
- 低血糖的觀察和護(hù)理課件
- 事故形成的冰山理論
- 溶解度曲線教學(xué)設(shè)計(jì)
- 硅膠產(chǎn)品工藝流程圖
- 醫(yī)院各科室規(guī)章制度匯編
- 土地翻耕施工組織方案
- 三級配電箱電路圖(共2頁)
- 學(xué)校中層干部量化考核表
評論
0/150
提交評論