如下除特殊說明外均爲32位數的運算spa
A + B = Cblog
無符號整數加法和有符號整數加法均採用如下方案進行操做io
用到的寄存器與初始化內容:基礎
32位加數寄存器--------初始化爲加數循環
32位被加數寄存器 ----初始化爲被加數im
32位和寄存器 ----------所有置零img
操做方案以下:解決方案
將加數寄存器和被加數寄存器按位對齊,每組對應位分別進行如下操做:co
放在一塊兒就是:(因32位畫出來過於繁雜,這裏的圖示採用了8位)浮點數
在此基礎上還要設置溢出判斷,來表示此次運算是否發生溢出。
被減數 - 減數 = 差
這裏承用上面的加法運算單元。
用A表示被減數,B表示減數。首先將B轉換爲其相反數即(-B)。而後進行A+(-B)的加法運算。同時也要設置一段邏輯電路判斷減法運算是否發生溢出。
被乘數 X 乘數 = 積
最先的解決方案:
所用到的存儲器與初始化存儲內容:
32位乘數寄存器--------初始化爲乘法運算的乘數
64位被乘數寄存器 ----低32位填充爲乘法運算的被乘數,高32位置零
64位積寄存器 -----------所有置零
用到的功能分別爲:循環,無符號加法,移位。
執行結構圖以下:
所用到的存儲器與初始化存儲內容:
32位被乘數寄存器(簡稱A)------初始化爲乘法運算的被乘數
64位積寄存器 (簡稱B)-----------高32位置零,用來存放乘積,低32位初始化爲乘數
對於每次迭代:
先把乘數和被乘數的符號位記下來,而後把乘數和被乘數轉換成正數進行無符號乘法運算,運算結果再加上符號。
被除數 ÷ 除數 = 商 ••••••餘數
所用到的存儲器與初始化存儲內容:
32位商寄存器-----------所有置零
32位除數寄存器 -------填充32位除數
65位餘數寄存器 -------左半部分置零,右半部分填充32位被除數
處理結構圖:
跟上文有符號整數乘法同樣,先保存除數、被除數符號,若二者符號異或爲1,則商爲負。