




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第 3 章3.5 邏輯運算和移位指令位操作類指令以二進制位為基本單位位操作類指令以二進制位為基本單位進行數(shù)據(jù)的操作;這是一類常用的指進行數(shù)據(jù)的操作;這是一類常用的指令,都應該特別掌握令,都應該特別掌握注意這些指令對標志位的影響注意這些指令對標志位的影響1、邏輯運算指令、邏輯運算指令AND OR XOR NOT TEST2、移位指令、移位指令SHL SHR SAL SAR3、循環(huán)移位指令、循環(huán)移位指令ROL ROR RCL RCR第 3 章邏輯與指令AND對兩個操作數(shù)執(zhí)行邏輯與運算,結果對兩個操作數(shù)執(zhí)行邏輯與運算,結果送到目的操作數(shù)送到目的操作數(shù)AND指令設置CF = OF = 0,根據(jù)結果設置
2、SF、ZF和PF狀態(tài),而對AF未定義AND reg,imm/reg/memAND reg,imm/reg/mem ;regregregregimm/reg/memimm/reg/memAND mem,imm/regAND mem,imm/reg ;memmemmemmemimm/regimm/reg 只有相只有相“與與”的兩位都是的兩位都是1,結,結果才是果才是1;否則,;否則,“與與”的結果為的結果為0第 3 章邏輯或指令OR對兩個操作數(shù)執(zhí)行邏輯或運算,結果對兩個操作數(shù)執(zhí)行邏輯或運算,結果送到目的操作數(shù)送到目的操作數(shù)OR指令設置CF = OF = 0,根據(jù)結果設置SF、ZF和PF狀態(tài),而對A
3、F未定義OR reg,imm/reg/memOR reg,imm/reg/mem ;regregregregimm/reg/memimm/reg/memOR mem,imm/regOR mem,imm/reg ;memmemmemmemimm/regimm/reg 只要相只要相“或或”的兩位有一位是的兩位有一位是1,結果就是結果就是1;否則,結果為;否則,結果為0第 3 章邏輯異或指令XOR對兩個操作數(shù)執(zhí)行邏輯異或運算,結對兩個操作數(shù)執(zhí)行邏輯異或運算,結果送到目的操作數(shù)果送到目的操作數(shù)XOR指令設置CF = OF = 0,根據(jù)結果設置SF、ZF和PF狀態(tài),而對AF未定義XOR reg,imm/
4、reg/memXOR reg,imm/reg/mem ;regregregregimm/reg/memimm/reg/memXOR mem,imm/regXOR mem,imm/reg ;memmemmemmemimm/regimm/reg 只有相只有相“異或異或”的兩位不相同,的兩位不相同,結果才是結果才是1;否則,結果為;否則,結果為0第 3 章邏輯非指令NOT對一個操作數(shù)執(zhí)行邏輯非運算對一個操作數(shù)執(zhí)行邏輯非運算NOT指令是一個單操作數(shù)指令NOT指令不影響標志位NOT reg/memNOT reg/mem ;reg/memreg/memreg/memreg/mem 按位取反,原來是按位取反
5、,原來是“0”的位變的位變?yōu)闉椤?”;原來是;原來是“1”的位變?yōu)榈奈蛔優(yōu)椤?”例例2.26:邏輯運算:邏輯運算movmov al,45h al,45h;邏輯與;邏輯與 al=01hal=01handand al,31h al,31h;CF=OF=0CF=OF=0,SF=0SF=0、ZF=0ZF=0、PF=0PF=0movmov al,45h al,45h;邏輯或;邏輯或 al=75hal=75horor al,31h al,31h;CF=OF=0CF=OF=0,SF=0SF=0、ZF=0ZF=0、PF=0PF=0movmov al,45h al,45h;邏輯異或;邏輯異或 al=74hal=
6、74hxorxor al,31h al,31h;CF=OF=0CF=OF=0,SF=0SF=0、ZF=0ZF=0、PF=1PF=1movmov al,45h al,45h;邏輯非;邏輯非 al=0bahal=0bahnotnot al al;標志不變;標志不變例例2.27:邏輯指令應用:邏輯指令應用;ANDAND指令可用于復位某些位(同指令可用于復位某些位(同0 0相與),不相與),不影響其他位:將影響其他位:將BLBL中中D D3 3和和D D0 0位清位清0 0,其他位不變,其他位不變andand bl bl,11110110B,11110110B;OROR指令可用于置位某些位(同指令可用
7、于置位某些位(同1 1相或),不相或),不影響其他位:將影響其他位:將BLBL中中D D3 3和和D D0 0位置位置1 1,其他位不變,其他位不變oror bl bl, 00001001B, 00001001B;XORXOR指令可用于求反某些位(同指令可用于求反某些位(同1 1相異或),相異或),不影響其他位:將不影響其他位:將BLBL中中D D3 3和和D D0 0位求反,其他不變位求反,其他不變xorxor bl bl, 00001001B, 00001001B第 3 章測試指令TEST對兩個操作數(shù)執(zhí)行邏輯與運算,對兩個操作數(shù)執(zhí)行邏輯與運算,結果結果不回送到目的操作數(shù)不回送到目的操作數(shù)A
8、ND指令設置CF = OF = 0,根據(jù)結果設置SF、ZF和PF狀態(tài),而對AF未定義TEST reg,imm/reg/memTEST reg,imm/reg/mem;regregimm/reg/memimm/reg/memTEST mem,imm/regTEST mem,imm/reg;memmemimm/regimm/reg只有相只有相“與與”的兩位都是的兩位都是1,結,結果才是果才是1;否則,;否則,“與與”的結果為的結果為0例例2.28:測試為:測試為0或或1test al,01htest al,01h;測試;測試ALAL的最低位的最低位D D0 0jnzjnz there there;
9、標志;標志ZF=0ZF=0,即,即D D0 0=1=1;則程序轉移到;則程序轉移到therethere.;否則;否則ZF=1ZF=1,即,即D D0 0=0=0,順序執(zhí)行,順序執(zhí)行there: .there: . TEST指令通常用于檢測一些條件是否指令通常用于檢測一些條件是否滿足,但又不希望改變原操作數(shù)的情況滿足,但又不希望改變原操作數(shù)的情況第 3 章移位指令(shift)將操作數(shù)移動一位或多位,分成邏輯移位和將操作數(shù)移動一位或多位,分成邏輯移位和算術移位,分別具有左移或右移操作算術移位,分別具有左移或右移操作SHL reg/memSHL reg/mem,1/CL,1/CL;邏輯左移,最高位
10、進入;邏輯左移,最高位進入CFCF,最低位補,最低位補0 0SHR reg/memSHR reg/mem,1/CL,1/CL;邏輯右移,最低位進入;邏輯右移,最低位進入CFCF,最高位補,最高位補0 0SAL reg/memSAL reg/mem,1/CL,1/CL;算術左移,最高位進入;算術左移,最高位進入CFCF,最低位補,最低位補0 0SAR reg/memSAR reg/mem,1/CL,1/CL;算術右移,最低位進入;算術右移,最低位進入CFCF,最高位不變,最高位不變SAL與SHL相同移位指令的功能第 3 章移位指令的操作數(shù)移位指令的第一個操作數(shù)是指定移位指令的第一個操作數(shù)是指定的
11、被移位的操作數(shù),可以是寄存的被移位的操作數(shù),可以是寄存器或存儲單元器或存儲單元后一個操作數(shù)表示移位位數(shù)后一個操作數(shù)表示移位位數(shù),該,該操作數(shù)操作數(shù)為為1,表示移動一位;當移,表示移動一位;當移位位數(shù)位位數(shù)大于大于1時,則用時,則用CL寄存器值寄存器值表示,該操作數(shù)表達為表示,該操作數(shù)表達為CL例例2.29:移位指令:移位指令mov cl,4mov cl,4movmov al,0f0h al,0f0h;al=f0hal=f0hshlshl al,1 al,1;al=e0hal=e0h;CF=1CF=1,SF=1SF=1、ZF=0ZF=0、PF=0PF=0,OF=0OF=0shrshr al,1
12、al,1;al=70hal=70h;CF=0CF=0,SF=0SF=0、ZF=0ZF=0、PF=0PF=0、OF=1OF=1sarsar al,1 al,1;al=38hal=38h;CF=0CF=0,SF=0SF=0、ZF=0ZF=0、PF=0PF=0、OF=0OF=0sar al,clsar al,cl;al=03hal=03h;CF=1CF=1,SF=0SF=0、ZF=0ZF=0、PF=1PF=1例例2.30:移位乘法:移位乘法mov si,axmov si,axshl sishl si,1,1;sisi22axaxadd siadd si,ax,ax;si3si3axaxmov dx,
13、bxmov dx,bxmov cl,03hmov cl,03hshl dx,clshl dx,cl;dx8dx8bxbxsub dx,bxsub dx,bx;dx7dx7bxbxadd dx,siadd dx,si;dx7dx7bxbx3 3axax 邏輯左移一位相當于無符號數(shù)乘以邏輯左移一位相當于無符號數(shù)乘以2 邏輯右移一位相當于無符號數(shù)除以邏輯右移一位相當于無符號數(shù)除以2第 3 章循環(huán)移位指令(rotate)將操作數(shù)從一端移出的位返回到另一將操作數(shù)從一端移出的位返回到另一端形成循環(huán),分成不帶進位和帶進位,端形成循環(huán),分成不帶進位和帶進位,分別具有左移或右移操作分別具有左移或右移操作ROL
14、reg/memROL reg/mem,1/CL,1/CL;不帶進位循環(huán)左移;不帶進位循環(huán)左移ROR reg/memROR reg/mem,1/CL,1/CL;不帶進位循環(huán)右移;不帶進位循環(huán)右移RCL reg/memRCL reg/mem,1/CL,1/CL;帶進位循環(huán)左移;帶進位循環(huán)左移RCR reg/memRCR reg/mem,1/CL,1/CL;帶進位循環(huán)右移;帶進位循環(huán)右移不帶進位循環(huán)移位指令帶進位循環(huán)移位指令第 3 章帶進位循環(huán)左移移帶進位循環(huán)左移移9次還原次還原帶進位循環(huán)左移移帶進位循環(huán)左移移9次還原次還原循環(huán)右移(不帶循環(huán)右移(不帶CF) 移移8次還原次還原循環(huán)左移(不帶循環(huán)左移
15、(不帶CF) 移移8次還原次還原算術右移算術右移(帶符號數(shù)(帶符號數(shù)2)邏輯右移邏輯右移(無(無 符號數(shù)符號數(shù)2)執(zhí)行操作執(zhí)行操作名稱名稱指令格式指令格式SHL oprd,1CL邏輯左移邏輯左移(無符號數(shù)(無符號數(shù)*2)0 CF 0 CF SAL oprd,1CL算術左移算術左移CF0 SHR oprd, 1CLCF SAR oprd, 1CLCF ROL oprd,1CLCF ROR oprd, 1CLCF RCL oprd,1 1CL1 CF RCR oprd, 11CL1例例2.31:32位數(shù)移位位數(shù)移位;將;將DX.AXDX.AX中中3232位數(shù)值左移一位位數(shù)值左移一位shl ax,1
16、shl ax,1rcl dxrcl dx,1,1DXAXCF0第 3 章3.6 串操作類指令串操作指令是串操作指令是80868086指令系統(tǒng)中比較獨指令系統(tǒng)中比較獨特的一類指令,采用比較特殊的數(shù)據(jù)串特的一類指令,采用比較特殊的數(shù)據(jù)串尋址方式,在操作主存連續(xù)區(qū)域的數(shù)據(jù)尋址方式,在操作主存連續(xù)區(qū)域的數(shù)據(jù)時,特別好用、因而常用時,特別好用、因而常用重點掌握:重點掌握: MOVS REP一般了解:一般了解: STOS/LODS CMPS/SCAS REPZ/REPE REPNZ/REPNE第 3 章串數(shù)據(jù)類型串操作指令的操作數(shù)是串操作指令的操作數(shù)是主存中連主存中連續(xù)存放的數(shù)據(jù)串(續(xù)存放的數(shù)據(jù)串(Str
17、ing)即即在連續(xù)的主存區(qū)域中,字節(jié)或字的在連續(xù)的主存區(qū)域中,字節(jié)或字的序列序列串操作指令的串操作指令的操作對象是以字操作對象是以字(W)為單位的字串,或是以字節(jié))為單位的字串,或是以字節(jié)(B)為單位的字節(jié)串)為單位的字節(jié)串第 3 章串尋址方式源操作數(shù)用寄存器源操作數(shù)用寄存器SI尋址,默認在數(shù)據(jù)段尋址,默認在數(shù)據(jù)段DS中,但允許段超越:中,但允許段超越:DS:SI目的操作數(shù)用寄存器目的操作數(shù)用寄存器DI尋址,默認在附加段尋址,默認在附加段ES中,不允許段超越:中,不允許段超越:ES:DI每執(zhí)行一次串操作指令,每執(zhí)行一次串操作指令,SI和和DI將自動修改:將自動修改:n1(對于字節(jié)串)或(對于字
18、節(jié)串)或2(對于字串)(對于字串)n執(zhí)行指令執(zhí)行指令CLD指令后,指令后,DF = 0,地址指針,地址指針增增1或或2n執(zhí)行指令執(zhí)行指令STD指令后,指令后,DF = 1,地址指針,地址指針減減1或或2第 3 章串傳送MOVS(move string)把字節(jié)或字操作數(shù)從主存的源地把字節(jié)或字操作數(shù)從主存的源地址傳送至目的地址址傳送至目的地址MOVSBMOVSB;字節(jié)串傳送:;字節(jié)串傳送:ES:DIDS:SIES:DIDS:SI;SISISISI1 1,DIDIDIDI1 1MOVSWMOVSW;字串傳送:;字串傳送:ES:DIDS:SIES:DIDS:SI;SISISISI2 2,DIDIDID
19、I2 2例例2.33:字節(jié)串傳送:字節(jié)串傳送lea si, sourcelea si, sourcelea di, destinationlea di, destinationmov cxmov cx, ,100100;cxcx傳送次數(shù)傳送次數(shù)cldcld;置;置DF=0DF=0,地址增加,地址增加again:again: movsbmovsb;傳送一個字節(jié)傳送一個字節(jié)dec cxdec cx;傳送次數(shù)減;傳送次數(shù)減1 1jnzjnz again again;判斷傳送次數(shù);判斷傳送次數(shù)cxcx是否為是否為0 0;不為;不為0 0,則到,則到againagain位置執(zhí)行指令位置執(zhí)行指令;否則,結
20、束;否則,結束例例2.34:字串傳送:字串傳送lea si, sourcelea si, sourcelea di, destinationlea di, destinationmov cxmov cx, ,5050;cxcx傳送次數(shù)傳送次數(shù)cldcld;置;置DF=0DF=0,地址增加,地址增加again:again: movswmovsw;傳送一個字傳送一個字dec cxdec cx;傳送次數(shù)減;傳送次數(shù)減1 1jnzjnz again again;判斷傳送次數(shù);判斷傳送次數(shù)cxcx是否為是否為0 0;不為;不為0 0,則到,則到againagain位置執(zhí)行指令位置執(zhí)行指令;否則,結束;否
21、則,結束第 3 章串存儲STOS(store string)把把AL或或AX數(shù)據(jù)傳送至目的地址數(shù)據(jù)傳送至目的地址STOSBSTOSB;字節(jié)串存儲:;字節(jié)串存儲:ES:DIALES:DIAL;DIDIDIDI1 1STOSWSTOSW;字串存儲:;字串存儲:ES:DIAXES:DIAX;DIDIDIDI2 2例例2.35:串存儲:串存儲mov ax,0mov ax,0mov di,0mov di,0mov cxmov cx,8000h,8000h;cxcx傳送次數(shù)(傳送次數(shù)(323210241024)cldcld;DF=0DF=0,地址增加,地址增加again:again: stoswstosw
22、;傳送一個字;傳送一個字dec cxdec cx;傳送次數(shù)減;傳送次數(shù)減1 1jnzjnz again again;傳送次數(shù);傳送次數(shù)cxcx是否為是否為0 0第 3 章串讀取LODS(load string)把指定主存單元的數(shù)據(jù)傳送給把指定主存單元的數(shù)據(jù)傳送給AL或或AXLODSBLODSB;字節(jié)串讀?。海蛔止?jié)串讀?。篈LDS:SIALDS:SI;SISISISI1 1LODSWLODSW;字串讀?。?;字串讀?。篈XDS:SIAXDS:SI;SISISISI2 2第 3 章串比較CMPS(compare string)將主存中的源操作數(shù)減去至目的操作將主存中的源操作數(shù)減去至目的操作數(shù),以便設
23、置標志,進而比較兩操作數(shù),以便設置標志,進而比較兩操作數(shù)之間的關系數(shù)之間的關系CMPSBCMPSB;字節(jié)串比較:;字節(jié)串比較:DS:SIDS:SIES:DIES:DI;SISISISI1 1,DIDIDIDI1 1CMPSWCMPSW;字串比較:;字串比較:DS:SIDS:SIES:DIES:DI;SISISISI2 2,DIDIDIDI2 2例例2.36a:比較字符串:比較字符串lea si, string1lea si, string1lea di, string2lea di, string2mov cxmov cx,50,50cldcldagain:again: cmpsbcmpsb;
24、比較兩個字符;比較兩個字符jnz unmatjnz unmat;有不同字符,轉移;有不同字符,轉移dec cxdec cxjnzjnz again again;進行下一個字符比較;進行下一個字符比較unmat:unmat: movmov al,0ffh al,0ffh;設置;設置ffhffh第 3 章重復前綴指令(repeat)串操作指令執(zhí)行一次,僅對數(shù)據(jù)串中串操作指令執(zhí)行一次,僅對數(shù)據(jù)串中的一個字節(jié)或字量進行操作。但是串的一個字節(jié)或字量進行操作。但是串操作指令前,都可以加一個重復前綴,操作指令前,都可以加一個重復前綴,實現(xiàn)串操作的重復執(zhí)行。重復次數(shù)隱實現(xiàn)串操作的重復執(zhí)行。重復次數(shù)隱含在含在CX寄存器中寄存器中重復前綴分重復前綴分2類,類,3條指令:條指令:n配合不影響標志的配合不影響標志的MOVS、STOS(和(和LODS)指令的)指令的REP前綴前綴n配合影響標志的配合影響標志的CMPS和和SCAS指令的指令的REPZ和和REPNZ前綴前綴第 3 章REP重復前綴指令REP前
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年羊群生產(chǎn)及養(yǎng)殖學技能知識考試題與答案
- 中國海洋集團石油有限公司招聘筆試真題2024
- 玉林北流市清灣鎮(zhèn)中心衛(wèi)生院招聘筆試真題2024
- 廣西防城港市港口區(qū)審計局招聘筆試真題2024
- 體育賽事安全管理目標及措施
- 湘少版小學英語五年級期末復習計劃
- 信息技術公司采購部門的職能與角色
- 交通運輸安全管理工作心得體會
- 中小學線上教學支持與銜接計劃
- 小學語文課程在線評估計劃
- DL∕T 753-2015 汽輪機鑄鋼件補焊技術導則
- 臨床急危重癥患者鼻空腸營養(yǎng)管管理專家共識
- 設計方案驗收報告(2篇)
- 《金屬非金屬地下礦山監(jiān)測監(jiān)控系統(tǒng)建設規(guī)范》
- MOOC 中醫(yī)與辨證-暨南大學 中國大學慕課答案
- 微生物農(nóng)藥經(jīng)典
- 材料成型設備教案
- 2024-2030年中國高空逃生緩降器行業(yè)市場運營現(xiàn)狀及行業(yè)發(fā)展趨勢報告
- 部編(統(tǒng)編)版語文+四下第四單元教材解讀課件
- 人教版六年級數(shù)學下冊第五單元 數(shù)學廣角 大單元教學設計(表格式)
- 鐵路客運規(guī)章全套教學課件
評論
0/150
提交評論