IMUL有符號數乘法指令,相乘的兩個數均看做有符號數,AL的內容是個有符號數,一般計算機中有符號數用補碼錶示,所以0B4H是某個數的補碼,即[X]的補碼=0B4H=10110100B,求出X=-1001100B=-76.BL的內容是個有符號數,11H是某個數的補碼,即[X]的補碼=11H=00010001B,求出X=+0010001B=+17.(AL)*(BL)=-76*(+17)=-1292把-1292轉換成二進位制為-10100001100B在將這個結果(-10100001100B)轉換成16位補碼形式,轉換之前還要把它補齊成16位,即,為-000010100001100B,將它轉換成補碼形式為1111101011110100B,最後把這個數再轉換成16進位制,即為FAF4H。根據IMUL指令的規定,若乘積的高一半是低一半的符號位的擴充套件則OF=CF=0,否則OF=CF=1。也就是說,如果結果的高一半的所有位,與低一半的第一位相同,則OF=CF=0,如果不相同,則OF=CF=1。本題中,結果是FAF4H=1111101011110100B,那麼高一半是11111010,低一半是11110100,所以結果的高一半的所有位,與低一半的第一位不相同,即乘積的高一半不是是低一半的符號位的擴充套件,所以OF=CF=1。
IMUL有符號數乘法指令,相乘的兩個數均看做有符號數,AL的內容是個有符號數,一般計算機中有符號數用補碼錶示,所以0B4H是某個數的補碼,即[X]的補碼=0B4H=10110100B,求出X=-1001100B=-76.BL的內容是個有符號數,11H是某個數的補碼,即[X]的補碼=11H=00010001B,求出X=+0010001B=+17.(AL)*(BL)=-76*(+17)=-1292把-1292轉換成二進位制為-10100001100B在將這個結果(-10100001100B)轉換成16位補碼形式,轉換之前還要把它補齊成16位,即,為-000010100001100B,將它轉換成補碼形式為1111101011110100B,最後把這個數再轉換成16進位制,即為FAF4H。根據IMUL指令的規定,若乘積的高一半是低一半的符號位的擴充套件則OF=CF=0,否則OF=CF=1。也就是說,如果結果的高一半的所有位,與低一半的第一位相同,則OF=CF=0,如果不相同,則OF=CF=1。本題中,結果是FAF4H=1111101011110100B,那麼高一半是11111010,低一半是11110100,所以結果的高一半的所有位,與低一半的第一位不相同,即乘積的高一半不是是低一半的符號位的擴充套件,所以OF=CF=1。