<科普>CPU進行四則運算(加減乘除)的主流方法


以下除特殊說明外均為32位數的運算

1.加法運算

  A   +   B    =   C

無符號整數加法和有符號整數加法均采用以下方案進行操作

用到的寄存器與初始化內容:

                32位加數寄存器--------初始化為加數

                32位被加數寄存器 ----初始化為被加數

                32位和寄存器 ----------全部置零

操作方案如下:

  將加數寄存器被加數寄存器按位對齊,每組對應位分別進行以下操作:

放在一起就是:(因32位畫出來過於繁雜,這里的圖示采用了8位)

在此基礎上還要設置溢出判斷,來表示這次運算是否發生溢出。

2.減法運算

  被減數   -   減數  =  差

  這里承用上面的加法運算單元。

  用A表示被減數,B表示減數。首先將B轉換為其相反數即(-B)。然后進行A+(-B)的加法運算。同時也要設置一段邏輯電路判斷減法運算是否發生溢出。

3.乘法運算

  被乘數  X  乘數   =   積

1>無符號整數乘法

   最早的解決方案:

所用到的存儲器與初始化存儲內容:

                32位乘數寄存器--------初始化為乘法運算的乘數

                64位被乘數寄存器 ----低32位填充為乘法運算的被乘數,高32位置零

                64位積寄存器 -----------全部置零

 

用到的功能分別為:循環,無符號加法,移位。

 

執行結構圖如下:

 

    改進后的解決方案:

所用到的存儲器與初始化存儲內容:

                32位被乘數寄存器(簡稱A)------初始化為乘法運算的被乘數

                64位積寄存器 (簡稱B)-----------高32位置零,用來存放乘積,低32位初始化為乘數

對於每次迭代:

  

 

2>有符號整數乘法

先把乘數和被乘數的符號位記下來,然后把乘數和被乘數轉換成正數進行無符號乘法運算,運算結果再加上符號。

3>浮點數乘法

 

4.除法運算

  被除數   ÷   除數  =  商 ••••••余數

1>無符號整數除法

 

所用到的存儲器與初始化存儲內容:

                32位商寄存器-----------全部置零

                32位除數寄存器 -------填充32位除數

                65位余數寄存器 -------左半部分置零,右半部分填充32位被除數

 

處理結構圖:

 

2>有符號整數除法

 跟上文有符號整數乘法一樣,先保存除數、被除數符號,若兩者符號異或為1,則商為負。

3>浮點數除法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM