所以我在這裏面臨一個問題。我的指令集中只有25條指令(沒有乘法,除法,減法,遞增指令)。 現在,我正在嘗試執行一個二進制除法。我的問題是,如何知道除數是否小於分紅以便將它們相減(2的恭維形式)?兩個二進制數的除法
指令集:
所以我在這裏面臨一個問題。我的指令集中只有25條指令(沒有乘法,除法,減法,遞增指令)。 現在,我正在嘗試執行一個二進制除法。我的問題是,如何知道除數是否小於分紅以便將它們相減(2的恭維形式)?兩個二進制數的除法
指令集:
我假設AC模擬它在兩個互補算術寄存器(累加器)。所以你需要的是一個SPA命令,而AC的結果是減去兩個數字。或者是一個SNA,取決於你從什麼中減去什麼。
同樣,你沒有減法。將其替換爲添加一個數字和另一個數字的負數。 Ferruccio說,負面就是補充加上兩個。
編輯:SPA/SNA的作品跳過下一個命令,如果AC是正面/負面。所以如果你想擁有一個非常重要的if語句,你會希望把一個Sxx後跟一個BUN(無條件地分支)。如果條件爲真,則跳過分支,如果條件爲假 - 則執行分支。
請注意,它是傳統裝配邏輯的倒置。通常情況下,如果條件成立,它就是「分支」;在這臺機器上,它是「分支,如果條件是錯誤的」。
爲了記錄,你的指令集是故意發育不良的。現實生活中的CPU比這更適合程序員,即使是RISC也是如此。
它的-Mano機器;即使我不確定SPA.No文檔! –
感謝您的參考:) –
許多指令都可以分解成簡單的指令。
看來你需要一個compare
指令。
如果您沒有compare
指令,則可以使用subtract
對其進行仿真,並在減去後檢查處理器標誌的狀態。
您沒有subtract
指令,因此您可以通過添加減去的值的負數來模擬它。
如果沒有negate
指令,你可以通過翻轉所有位的值,並增加1
在2的恭維中,我將如何知道除數是否更少?不會有任何額外的1位用於標誌嗎? –
如果結果小於零,則扣除股息的除數,則除數小於股息。看起來您可以使用SPA或SNA說明。 – Ferruccio
我不確定SPA和SNA在什麼時間應該有0 ot 1 –
我們如何能夠告訴你,如果我們不知道你做了什麼指示? – us2012
@ us2012 ok會上傳。 –
@ us2012更新後,請看看。 –