以下除特殊說明外均為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,則商為負。