Tôi cần thiết kế ALU với hai đầu vào 8 bit A và B và điều khiển đầu vào x, y và z hỗ trợ các hoạt động sau:
x y z | operation
0 0 0 | S = A-B
0 0 1 | S = A+B
0 1 0 | S = A*8
0 1 1 | S = A/8
1 0 0 | S = A NAND B (bitwise)
1 0 1 | S = A XOR B (bitwise)
1 1 0 | s = reverse the bits of A
1 1 1 | S = NOT A (bitwise)
Điều này được cho là được thực hiện với bộ cộng 8 bit và bộ mở rộng logic số học. Đọc qua sách giáo khoa của tôi, tôi thấy rằng mục đích của bộ mở rộng AL là thay đổi các bit đầu vào để một bộ cộng, chứ không phải là nhiều thành phần phụ, có thể được sử dụng để làm mọi thứ (hoặc ít nhất đó là những gì tôi hiểu từ nó ). Ví dụ, bộ mở rộng AL có thể đặt các bit trong phần bù của hai để bộ cộng thực hiện phép trừ. Tương tự như vậy, đối với các phép toán logic theo bit, các bit có thể được thay đổi một cách thích hợp và một trong các đầu vào của bộ cộng có thể bằng 0 để kết quả đạt được đúng.
Nhưng chính xác thì tôi làm gì về phép nhân? Cuốn sách của tôi rất mơ hồ, vì vậy tôi không chắc liệu một bộ mở rộng AL sẽ yêu cầu tôi làm điều gì đó thông minh để khiến trình bổ sung thực hiện công việc (chỉ cần thêm 8 lần trong trường hợp của tôi? ... ha ha), hoặc nếu tôi chỉ có thể ném một số nhân trong đó. Tôi sẽ phải đọc lên phân chia, nhưng tôi cá là nó tương tự như phép nhân.
Chà, dù sao, điểm mấu chốt vẫn là, phần mở rộng AL "được phép" là gì / có thể có trong đó là gì? Là mục đích duy nhất của nó để thay đổi đầu vào để nó có thể được cung cấp cho một bộ cộng?
* EDIT: Chà, nhân / chia cho 8, vì vậy điều này có thể dễ dàng thực hiện khi dịch chuyển sang trái hoặc phải bằng 3. Tôi vẫn có thể mở rộng AL thực sự / đúng nếu tôi thêm một số bộ chuyển đổi trong đó? (Có lẽ tôi đang xem xét điều này như một người mới bắt đầu hoàn chỉnh ...)