義守大學電機系
授課教師:陳慶瀚
E-mail : pierre@isu.edu.tw
11. ALU Simulator(ALU模擬器) |
1. 設計一個N位元的ALU,成員變數包含A,B兩個輸入暫存器和輸出的ACC累加暫存器: class ALU { public : int *A,*B,*ACC; int N; } 設計一個成員函式 void Initialize( int num_bits) 對N進行初始化以及配置A,B,ACC的動態記憶體。 以及 void Display( ) 可在螢幕顯示ACC的位元內容。
2. 設計三個成員函式 void Clear() void Set() void Randomize() 可設定累加暫存器ACC的初值。Clear()將ACC所有位元設為0,Set()將ACC所有位元設為1,Randomize()則是以亂數隨機設定ACC每一個位元值為0或1,例如: ACC[i]=rand()%2 參考範例程式alu.cpp 3. 設計一個成員函式 void Load(long x) 可讓使用者傳入一個長整數x,將其轉為二進位後填入ACC。 參考範例程式
#include <iostream.h>
4.設計一個成員函式 long getDecimal() 將ACC的二進位內容轉為十進位後傳回。 參考範例程式
#include <iostream.h> {
X=X+pow(2,i);
}
5.設計以下邏輯運算的成員函式: void and(int *a) void or(int *a) void xor(int *a) void not( ) 除了not( )之外,其他成員函式都需要傳入一個二值陣列,再與ACC的資料執行邏輯運算。
6. 設計以下位元移位的成員函式: void ShiftL(int num) void ShiftR(int num) 分別將ACC的位元值向左(右)移num個位元
7. 模擬二進位的加法設計一個成員函式(加設所有資料均為正整數) void ADD(int *a )
|
|
計算機程式
義守大學電機系
陳慶瀚
2004.10. 20更新