第3章 80868088的指令系統(tǒng)(位運算、邏輯運算)_第1頁
第3章 80868088的指令系統(tǒng)(位運算、邏輯運算)_第2頁
第3章 80868088的指令系統(tǒng)(位運算、邏輯運算)_第3頁
第3章 80868088的指令系統(tǒng)(位運算、邏輯運算)_第4頁
第3章 80868088的指令系統(tǒng)(位運算、邏輯運算)_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

邏輯運算和移位指令有兩類:邏輯運算指令移位與循環(huán)指令位運算指令類型指令指令功能表三位運算指令列表邏輯運算ANDd,sORd,sXORd,sNOTdTESTd,s

算術左移CF

0算術右移CF

邏輯左移CF

0邏輯右移CF0SALd,countSARd,countSHLd,countSHRd,count移位ddsddsddsddds,不送結果位運算指令指令類型指令指令功能表三位運算指令列表(續(xù))ROLd,countRORd,countRCRd,countRCLd,count循環(huán)左移CF

循環(huán)右移CF

帶進位循環(huán)左移CF

CF循環(huán)帶進位循環(huán)右移邏輯運算指令共有5條:AND按位邏輯與OR按位邏輯或XOR按位邏輯異或TEST按位邏輯與,但不保存結果NOT按位取反

邏輯運算指令AND,OR和XOR指令

?

基本格式和功能指令格式:

AND(OR/XOR/TEST)d,s執(zhí)行的操作:

AND

(d)←(d)OR(s)

XOR

邏輯運算指令AND,OR和XOR指令

?

基本格式和功能常見邏輯運算的規(guī)則如下列表格所示:與(AND):全1才1,有0就0或(OR):有1就1,全0才0異或(XOR):相同為0,相異為1

1

0

1

0

0

0

1

0AND

1

1

1

1

0

0

1

0OR

0

1

1

1

0

0

1

0XOR邏輯運算指令AND,OR和XOR指令

?

說明尋址方式:AND(OR,XOR,TEST)reg/mem,reg/mem

AND(OR,XOR,TEST)reg/mem,data說明:源S可以是通用寄存器、存儲器或立即數;但d只能是通用寄存器或存儲器,不能為立即數;而且d和s不能同時為存儲器操作數。邏輯運算指令AND,OR和XOR指令

?

說明測試指令TEST不將結果送回d,它只影響F寄存器;這4條指令均影響標志位:SF、ZF、PF根據運算結果設置相應位;CF、OF總是置零;AF不確定。邏輯運算指令NOT指令

?

基本格式和功能指令格式:

NOTd尋址方式:

NOTreg/mem邏輯運算指令NOT指令

?功能&說明功能&說明:單操作數指令,對d進行按位取反(0變1,1變0)操作;d可以是通用寄存器或存儲器操作數;NOT指令對標志寄存器各位均無影響;邏輯運算指令?說明小結:邏輯運算指令都是按位進行邏輯運算的,可以對字節(jié)或字進行邏輯運算;邏輯運算指令可用于組合、分離、屏蔽或設置某些位。邏輯運算指令?例子例1:請分別寫出實現下列要求的指令:①使AL中高4位清零,低4位不變;②使AL中低4位清零,高4位不變;③使AL中最高位置1,其他位不變;④AL中低4位求反,其余各位不變。解:①ANDAL,0FH②ANDAL,0F0H③ORAL,80H④XORAL,0FH邏輯運算指令?例子例2:請編制一程序段,將F寄存器中溢出位OF變反。解:程序如下:

PUSHFPOPAXXORAX,0800HPUSHAXPOPF邏輯運算指令?例子例3:將AL清零,至少有以下幾種方法,它們有何不同?①MOVAL,00H②ANDAL,00H③XORAL,AL移位&循環(huán)指令共有以下8條:SHL(shiftlogicalleft)邏輯左移SAL(shiftarithmeticleft)算術左移SHR(shiftlogicalright)邏輯右移SAR(shiftarithmeticright)算術右移ROL(Rotateleft)循環(huán)左移ROR(Rotateright)循環(huán)右移RCL(Rotateleftthroughcarry)帶進位循環(huán)左移RCR(Rotaterightthroughcarry)帶進位循環(huán)右移移位&循環(huán)指令移位類指令的格式(詳見表三①②)

移位指令

d,Count移位類指令的尋址方式

移位指令

reg/mem,1/CL

移位&循環(huán)指令移位指令執(zhí)行的操作

(參見表三①)SHL,SAL和SHR(d)左(右)移Count位,移出的位進入CF,移位造成的空位補0

SAR

(d)最高位不變,(d)右移Count位,移出的位進入CF,移位造成的空位用最高位值填補。左右移位使乘,除2運算變得簡單,算術右移可用于有符號數的除2運算。移位&循環(huán)指令循環(huán)指令執(zhí)行的操作(詳見表三②)ROL和ROR(小循環(huán))

(d)循環(huán)左(右)移Count位,每移1位,移出的位從另一端進入,同時進入CF。

RCL和RCR(大循環(huán))

(d)循環(huán)左(右)移Count位,每移1位,CF從另一端進入,移出的位進入CF。移位&循環(huán)指令說明:各移位指令中的d可以是字或字節(jié),可以是寄存器或存儲器單元,但不能是立即數。指令中的Count指明移位的位數,只能用兩種形式之一:1或CL帶進位循環(huán)移位指令常用于多字節(jié)或多字的數據移位。移位&循環(huán)指令影響標志位情況:移位指令根據移位結束后的結果修改CF、PF、ZF、SF和OF,而AF不確定;循環(huán)移位指令根據移位結束后結果僅修改CF和OF;如果移位/循環(huán)移位僅移一位,且移位前后操作數的最高位發(fā)生變化,那么OF置1,否則置0;如果移位/循環(huán)移位的位數大于1,則OF不確定。移位&循環(huán)指令例題例1:在AX中有符號數不大的情況下,利用算術移位指令進行簡單的(AX)5/2運算,可以用下述程序段:

MOVDX,AXSALAX,1;(AX)*2SALAX,1;(AX)*4ADDAX,DX;(AX)*5SARAX,1;(AX)*5/2移位&循環(huán)指令例題例2:由(DX):(AX)構成的2個字數據要左移2位,寫出實現此要求的指令序列。解:指令序列如下:

SALAX,1RCLDX,1SALAX,1RCLDX,1思考:用下列方法如何?

MOVCL,2

SALAX,CLRCLDX,CL移位&循環(huán)指令例題例3:將AX的高低8位換位,寫出指令序列。解:方法之一如下:

MOVCL,08HROLAX,CL方法二如下:

MOVCL,AHMOV

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論