今天翹了毛概課,在宿舍里蓋着小毛毯做匯編作業,遇到一個題目是給出一組指令,問每一步指令完成后,標志位是什么
什么運算會改變標志位呢?在網上查了查
(1)加法指令:ADD、ADC、INC、XADD除了INC不影響CF標志位外,都影響條件標志位。
CF、ZF、SF、OF
CF最高位是否有進位
DF若兩個操作數符號相同而結果符號與之相反OF=1,否則OF=0.
(2)減法指令:SUB、SBB、DEC、NEG、CMP、CMPXCHG、CMPXCHG8B
前六種除了DEC不影響CF標志外都影響標志位。CMPXHG8B只影響ZF。
CF說明無符號數相減的溢出,同時又確實是被減數最高有效位向高位的借位。
OF位則說明帶符號數的溢出
無符號運算時,若減數>被減數,有借位CF=1,否則CF=0.
OF若兩個數符號相反,而結果的符號與減數相同則OF=1.否則OF=0.
(3)乘法指令:MUL、IMUL
MUL:如果乘積高一半為0,則CF和OF位均為0,否則CF和OF均為1.
IMUL:如果高一半是低一半符號的擴展,則CF位和OF位均為0,否則就均為1.
(4)除法指令:DIV、IDIV
對所有條件位均無定義。
(5)邏輯指令:AND、OR、NOT、XOR、TEST
NOT不允許使用立即數,其它4條指令除非源操作數是立即數,至少要有一個操作數必須存放在寄存器中。另一個操作數則可以使用任意尋址方式。
NOT不影響標志位,其余4種CF、OF、置0,AF無定義,SF、ZF、PF位看情況而定。
定位掃描指令:BSF正向位掃描、BSR反向位掃描
源操作數可以是除立即數以外的任一種尋址方式,目的操作數必須是寄存器,影響ZF位。
天氣越來越冷了,穿的暖暖的會更開心哦~冬天快樂~