第九課邏輯運算指令 控制轉移

2021-08-31 09:38:36 字數 2011 閱讀 8946

邏輯運算指令

邏輯與指令

格式:and dest,src

功能:目的運算元和源運算元按位進行邏輯與運算,結果存目的運算元中。源運算元可以是通用暫存器、儲存器或立即數。目的運算元可以是

通用暫存器或儲存器運算元

and指令常用於將運算元中某位清0(稱遮蔽),只須將要清0的位與0,其它不變的位與1即可

邏輯或指令

格式:or dest,src

功能:目的運算元和源運算元按位進行邏輯或運算,結果存目的運算元中。源運算元可以是通用暫存器、儲存器或立即數。目的運算元可以是通用

暫存器或儲存器運算元。

or指令常用於將運算元中某位置1,只須將要置1的位或1,其它不改變的位或0即可

邏輯異或指令

格式:xor dest,src

功能:目的運算元和源運算元按位進行邏輯異或運算,結果送目的運算元。源運算元可以是通用暫存器、儲存器或立即數。目的運算元可以是通用

暫存器或儲存器運算元。

xor指令常用於將運算元中某些位取反,只須將要取反的位異或1,其它不改變的位異或0即可。可用於密碼設定 於某個數異或兩次 即可得到原數

邏輯非指令

格式:not dest

功能:對目的運算元按位取反,結果回送目的運算元。目的運算元可以為通用暫存器或儲存器。

not指令對標誌位無影響。

測試指令

格式:test dest,src

功能:目的運算元和源運算元按位進行邏輯與操作,結果不回送目的運算元。源運算元可以為通用暫存器、儲存器或立即數。目的運算元可以為通

用暫存器或儲存器運算元。

test指令常用於測試運算元中某位是否為1,而且不會影響目的運算元。如果測試某位的狀態,對某位進行邏輯與1的運算,其它位邏輯與0,然後

判斷標誌位。運算結果為0,zf=1,表示被測試位為0;否則zf=0,表示被測試位為1

移位指令

移位指令對運算元按某種方式左移或右移,移位位數可以由立即數直接給出,或由cl間接給出。移位指令分一般移位指令和迴圈移位指令。

一般移位指令

算術/邏輯左移指令

格式:sal dest,oprd

shl dest,oprd

當中的l 就是代表左

功能:按照運算元oprd規定的移位位數,對目的運算元進行左移操作,最高位移入cf中。每移動一位,右邊補一位0。

如圖3 12(a)所示。目的運算元可以為通用暫存器或儲存器運算元。

sal,shl指令影響標誌位of,sf,zf,pf,cf。

邏輯左移是一樣的 就相當於移多少位 就乘了2的多少次方  

算術邏輯右移的最高位一直保持不變  其他位右移

邏輯右移的就是所有數挨個右移  這裡的cf位只儲存一位

算術右移指令。

格式:sar dest,oprd   shr  dest,oprd

功能:按照運算元oprd規定的移位次數,對目的運算元進行右移操作,最低位移至cf中,最高位(即符號位)保持不變。

目的運算元可以為通用暫存器或儲存器運算元。

sar指令影響標誌位of,sf,zf,pf,cf

控制轉移類指令

條件轉移指令包括四類:單標誌位條件轉移;無符號數比較條件轉移;帶符號數比較條件轉移;測試cx條件轉移。

格式:jcc target

功能:若測試條件『cc』為真,則轉移到目標位址target處執行程式。否則順序執行。

(1) 單標誌位條件轉移指令

jz next;若標誌zf=1則轉移到標號next處執行。

(2) 無符號數比較條件轉移

ja next;無符號數a與b比較,若a>b則轉移到標號next處執行程式

第九課 變數

任務與 修改 沒有定義變數r,在第四行float r1,r2之後加上r就可以 include include intmain 閱讀程式 閱讀下面的程式,在閱讀過程中,請為每乙個變數畫出乙個方框,代表對應的記憶體空間。隨著閱讀,標明變數的變化過程,達到讀懂程式的目的。include intmain 圖...

C語言第九課

主要內容 高階指標 結構體指標 一 結構體指標 指向結構體變數的指標叫做結構體指標 typedef struct student student student stu student p stu student 結構體型別的指標 型別 p 結構體指標變數 變數名 結構體訪問成員變數 示例 type...

第九課 VBO索引

到目前為止,我們在建立vbo時總是重複儲存三角形公共邊的頂點。本課將介紹索引。索引是通過索引緩衝 index buffer 來實現的頂點復用。索引緩衝儲存的是整數 每個三角形有三個整數索引,分別指向各種屬性緩衝 attribute buffer 頂點位置 顏色 uv座標 其他uv座標 法線緩衝法線等...