第011課 彙編-xchg,add,sub
阿新 • • 發佈:2018-11-26
xchg,add,sub
內容綱要
1.xchg指令
2.add,sub
3.cf,pf
詳細內容
1.xchg
xchg後面的兩個運算元必須為兩個容器即暫存器和記憶體,但需要注意寬度
當xchg reg,ds:[], 不加長度預設是一個位元組,則以reg的長度進行交換
當xchg ds:[],reg,依然以reg的長度進行交換
如果[]前面加長度,則兩個運算元的長度需要匹配.
2.1add
加法指令。兩個運算元相加,結果放在第一個運算元,會影響cf,pf標誌位
add reg/m,reg/m/Im
2.2sub
減法指令。兩個運算元相減,結果放在第一個運算元,會影響cf,pf標誌位
sub reg/m,reg/m/Im
3.cf,pf
cf(Carry Flag):進位標誌位,當兩數相加或者相減時需要向最高位進一位或者借一位,cf=1,不然pf=0.注意是長度
pf(parity Flag):奇偶驗證標誌位,看運算結果最後1個位元組轉換成二進位制後1的個數是否為偶數,為偶數pf=1,否則pf=0.不管長度是一個位元組還是兩個位元組或者四個位元組。
課堂練習
1.xchg
xchg ecx,DWORD ptr ds:[eax]
xchg DWORD ptr ds:[eax],ecx
lea eax,ds:[0x0012ff40]
mov cx,0x1234
xchg cx,ds:[eax]
xchg ds:[eax],cx
xchg ecx, ds:[eax]
xchg ds:[eax],ecx
2.add,sub
驗算兩個運算元的內容
3.驗證cf和pf位
內容綱要
1.xchg指令
2.add,sub
3.cf,pf
詳細內容
1.xchg
xchg後面的兩個運算元必須為兩個容器即暫存器和記憶體,但需要注意寬度
當xchg reg,ds:[], 不加長度預設是一個位元組,則以reg的長度進行交換
當xchg ds:[],reg,依然以reg的長度進行交換
如果[]前面加長度,則兩個運算元的長度需要匹配.
2.1add
加法指令。兩個運算元相加,結果放在第一個運算元,會影響cf,pf標誌位
add reg/m,reg/m/Im
2.2sub
減法指令。兩個運算元相減,結果放在第一個運算元,會影響cf,pf標誌位
sub reg/m,reg/m/Im
3.cf,pf
cf(Carry Flag):進位標誌位,當兩數相加或者相減時需要向最高位進一位或者借一位,cf=1,不然pf=0.注意是長度
pf(parity Flag):奇偶驗證標誌位,看運算結果最後1個位元組轉換成二進位制後1的個數是否為偶數,為偶數pf=1,否則pf=0.不管長度是一個位元組還是兩個位元組或者四個位元組。
課堂練習
1.xchg
xchg ecx,DWORD ptr ds:[eax]
xchg DWORD ptr ds:[eax],ecx
lea eax,ds:[0x0012ff40]
mov cx,0x1234
xchg cx,ds:[eax]
xchg ds:[eax],cx
xchg ecx, ds:[eax]
xchg ds:[eax],ecx
2.add,sub
驗算兩個運算元的內容
3.驗證cf和pf位