邏輯指令
一、邏輯運算指令的格式:AND dst,src
指令的基本功能:(dst)《-(dst)與(src)
指令支持的尋址方式:兩個操作數不能同時為存儲器尋址。即為除源操作數為立即數的情況外,源操作數和目地操作數必須有一個寄存器尋址方式。
指令對標志位的影響:指令執行后CF 和OF 置零,AF無定義。
SF=1 指令執行后的結果為負數(符號位為1)
SF=0 指令執行后的結果為正數(符號位為0)
ZF=1 指令執行后的結果為零
ZF=0 指令執行后的結果不為零
PF=1 結果操作數中1的個數為偶數時置1
PF=0 結果操作數中1的個數為奇數時置0
25、邏輯或OR (logic or)
指令的匯編格式:OR dst,src
指令的基本功能:(dst)《-(dst)或(src)
指令支持的尋址方式:兩個操作數不能同時為存儲器尋址。即為除源操作數為立即數的情況外,原操作數和目的操作數必須有一個寄存器尋址方式。
指令對標志位的影響:令執行后CF 和OF 置零,AF無定義。
SF=1 指令執行后的結果為負數(符號位為1)
SF=0 指令執行后的結果為正數(符號位為0)
ZF=1 指令執行后的結果為零
ZF=0 指令執行后的結果不為零
PF=1 結果操作數中1的個數為偶數時置1
PF=0 結果操作數中1的個數為奇數時置0
26、邏輯非NOT (logic not)
指令的匯編格式:NOT orc
指令的基本功能:(dst)《-(opr)
指令支持的尋址方式:除立即數尋址方式以外的其余尋址方式
指令對標志位的影響:對標志位無影響
27、異或XOR (exclusice or)
指令的匯編格式:XOR dst,src
指令的基本功能:(dst)《-(dst)異或(src)
指令支持的尋址方式:兩個操作數不能同時為存儲器尋址。即為除源操作數為立即數的情況外,原操作數和目的操作數必須有一個寄存器尋址方式。
指令對標志位的影響:令執行后CF 和OF 置零,AF無定義。
SF=1 指令執行后的結果為負數(符號位為1)
SF=0 指令執行后的結果為正數(符號位為0)
ZF=1 指令執行后的結果為零
ZF=0 指令執行后的結果不為零
PF=1 結果操作數中1的個數為偶數時置1
PF=0 結果操作數中1的個數為奇數時置0
28、測試指令TEST
指令的匯編格式:TEST opr1,opr2
指令的基本功能:(opr1)與(opr2)
指令支持的尋址方式:兩個操作數不能同時為存儲器尋址,即為除源操作數為立即數的情況外,源操作數和目的操作數必須有一個寄存器尋址方式。
指令對標志位的影響:令執行后CF 和OF 置零,AF無定義。
SF=1 指令執行后的結果為負數(符號位為1)
SF=0 指令執行后的結果為正數(符號位為0)
ZF=1 指令執行后的結果為零
ZF=0 指令執行后的結果不為零
PF=1 結果操作數中1的個數為偶數時置1
PF=0 結果操作數中1的個數為奇數時置0
二、移位指令
29、邏輯左移SHL (shift logical left)
指令的匯編格式:SHL dst,cnt
指令的基本功能:SHL指令向左逐位移動cnt次,每次逐位移動后,最低位用0來補充,最高位移入CF。
指令支持的尋址方式:目的操作數dst可以是除立即數外的任何尋址方式。移位次數(或位數)cnt=1時,1可以直接寫在指令中,cnt〉1時,cnt必須放入CL寄存器中。
指令對標志位的影響:CF=移入的數值
OF=1 當cnt=1時,移動后最高位的值發生變化。
OF=0 當cnt=1時,移動時最高位的值未發生變化。
SF、ZF、PF根據移動后的結果設置
30、邏輯右移SHR (shift logical right)
指令的匯編格式:SHR dst,cnt
指令的基本功能:SHR指令向右逐位移動cnt次,每次逐位移動后,最高位用0來補充,最低位移入CF。
指令支持的尋址方式:目的操作數dst可以是除立即數外的任何尋址方式。移位次數(或位數)cnt=1時,1可以直接寫在指令中,cnt〉1時,cnt必須放入CL寄存器中。
指令對標志位的影響:CF=移入的數值
OF=1 當cnt=1時,移動后最高位的值發生變化。
OF=0 當cnt=1時,移動時最高位的值未發生變化。
SF、ZF、PF根據移動后的結果設置。
31、算術左移SAL (shift arithmetic left)
指令的匯編格式:SAL dst cnt
指令的基本功能:SAL指令向左逐位移動cnt次,每次逐位移動后,最低位用0來補充,最高位移入CF。
指令支持的尋址方式:目的操作數dst可以是除立即數外的任何尋址方式。移位次數(或位數)cnt=1時,1可以直接寫在指令中,cnt〉1時,cnt必須放入CL寄存器中。
指令對標志位的影響:CF=移入的數值
OF=1 當cnt=1時,移動后最高位的值發生變化。
OF=0 當cnt=1時,移動時最高位的值未發生變化。
SF、ZF、PF根據移動后的結果設置。
32、算術右移SAR (shift arithmetic right)
指令的匯編格式:SAR dst,cnt
指令的基本功能:SAR指令向右逐位移動cnt次,每次逐位移動后,最高位用符號位來補充,最低位移入CF。
指令支持的尋址方式:目的操作數dst可以是除立即數外的任何尋址方式。移位次數(或位數)cnt=1時,1可以直接寫在指令中,cnt〉1時,cnt必須放入CL寄存器中。
指令對標志位的影響:CF=移入的數值
OF=1 當cnt=1時,移動后最高位的值發生變化。
OF=0 當cnt=1時,移動時最高位的值未發生變化。
SF、ZF、PF根據移動后的結果設置。
33、循環左移ROL (rotate left)
指令的匯編格式:ROL dst,cnt
指令的基本功能:ROL 對由dst指定的寄存器或存儲器操作數左移循環移動cnt所指定的次數,每左移一次,把最高位同時移入CF和操作數最低位。指令支持的尋址方式:目的操作數dst可以是除立即數外的任何尋址方式。移動次數(或位數)cnt=1時,1可以直接寫在指令中,cnt〉1時,cnt必須放入CL寄存器中。
指令對標志位的影響:CF=移入的數值
OF=1 當cnt=1時,移動后最高位的值發生變化。
OF=0 當cnt=1時,移動時最高位的值未發生變化。
SF、ZF、PF根據移動后的結果設置。
34、循環右移ROR (rotate right)
指令的匯編格式:ROR dst,cnt
指令的基本功能:ROR 對由dst指定的寄存器或存儲器操作數右移循環移動cnt所指定的次數,每右移一次,把最低位同時移入CF和操作數最高位。
指令支持的尋址方式:目的操作數dst可以是除立即數外的任何尋址方式。移動次數(或位數)cnt=1時,1可以直接寫在指令中,cnt》1時,cnt必須放入CL寄存器中。
評論