算術運算指令
算術運算指令是反映CPU計算能力的一組指令,也是編程時經常使用的一組指令。它包括:加、減、乘、除及其相關的輔助指令。
該組指令的操作數可以是8位、16位和32位(80386+)。當存儲單元是該類指令的操作數時,該操作數的尋址方式可以是任意一種存儲單元尋址方式。
1、加法指令
指令的格式:ADD Reg/Mem, Reg/Mem/Imm
受影響的標志位:AF、CF、OF、PF、SF和ZF
指令的功能是把源操作數的值加到目的操作數中。
、帶進位加指令ADC(見得較少)
指令的格式:ADC Reg/Mem, Reg/Mem/Imm
受影響的標志位:AF、CF、OF、PF、SF和ZF
指令的功能是把源操作數和進位標志位CF的值(0/1)一起加到目的操作數中。
、加1指令INC
指令的格式:INC Reg/Mem
受影響的標志位:AF、OF、PF、SF和ZF,不影響CF
指令的功能是把操作數的值加1。
、交換加指令XADD(見得較少)
指令的格式:XADD Reg/Mem, Reg
受影響的標志位:AF、CF、OF、PF、SF和ZF
指令的功能是先交換兩個操作數的值,再進行算術“加”法操作
2、減法指令
、減法指令SUB
指令的格式:SUB Reg/Mem, Reg/Mem/Imm
受影響的標志位:AF、CF、OF、PF、SF和ZF
指令的功能是從目的操作數中減去源操作數。
、帶借位減SBB(見得較少)
指令的格式:SBB Reg/Mem, Reg/Mem/Imm
受影響的標志位:AF、CF、OF、PF、SF和ZF
指令的功能是把源操作數和標志位CF的值從目的操作數中一起減去。
、減1指令DEC
指令的格式:DEC Reg/Mem
受影響的標志位:AF、OF、PF、SF和ZF,不影響CF
指令的功能是把操作數的值減去1。
、求補指令NEG
指令的格式:NEG Reg/Mem
受影響的標志位:AF、CF、OF、PF、SF和ZF
指令的功能:操作數=0-操作數,即改變操作數的正負號
3、乘法指令
計算機的乘法指令分為無符號乘法指令和有符號乘法指令,它們的唯一區別就在于:數據的最高位是作為“數值”參與運算,還是作為“符號位”參與運算。
乘法指令的被乘數都是隱含操作數,乘數在指令中顯式地寫出來。CPU會根據乘數是8位、16位,還是32位操作數,來自動選用被乘數:AL、AX或EAX。
指令的功能是把顯式操作數和隱含操作數相乘,并把乘積存入相應的寄存器中。
、無符號數乘法指令MUL/FMUL
指令的格式:MUL Reg/Mem
受影響的標志位:CF和OF(AF、PF、SF和ZF無定義)
指令的功能是把顯式操作數和隱含操作數(都作為無符號數)相乘
、有符號數乘法指令IMUL/FIMUL
指令的格式: IMUL Reg/Mem
IMUL Reg, Imm
IMUL Reg, Reg, Imm
IMUL Reg, Reg/Mem
4、除法指令
除法指令的被除數是隱含操作數,除數在指令中顯式地寫出來。CPU會根據除數是8位、16位,還是32位,來自動選用被除數AX、DX-AX,還是EDX-EAX。
除法指令功能是用顯式操作數去除隱含操作數,可得到商和余數。當除數為0,或商超出數據類型所能表示的范圍時,系統會自動產生0號中斷。
、無符號數除法指令DIV/FDIV
指令的格式:DIV Reg/Mem
指令的功能是用顯式操作數去除隱含操作數(都作為無符號數)。指令對標志位的影響無定義。
、有符號數除法指令IDIV/FIDIV
指令的格式:IDIV Reg/Mem
受影響的標志位:AF、CF、OF、PF、SF和ZF
?