2016-11-28 88 views
-1

我遇到了一個問題,那就是如何在寄存器中保留用「srl」指令創建的一個分區的其餘部分來打印一個具有二進制值的整數。Assembly MIPS:通過移位將一個十進制數轉爲二進制

f.e.如果T1是我們要轉換的數字,我們使用shift 2正確的邏輯來劃分它,在一個循環中:

loop: 
    srl  $t2, $t1, 2 #number/2 

    beq $t2, '0', exit  #if the quotient is 0, exit the loop 

j loop 

exit: 

如何餘保持一個SRL命令後,再倒回的位留下來打印二進制數字?

+1

使用按位'和'。 PS:'2'的'srl'沒有被2除,而是被4除。 – Jester

+1

打印如何?你想要什麼樣的結果?小數點是如何進入的(我認爲你已經在寄存器中有一個整數,而不是十進制串)? –

+0

我已經有了整數在t1中,所以我想打印整數看作二進制。 F.E.如果輸入是9,那麼輸出應該是1001 – Coursal

回答

0

您可以將$ t1左移29(31-2),然後移回右邊。這應該讓你在原始$ t1中的最低兩位。

這當然假設一個32位整數大小。

對於一個例子,假設你開始值5 然後,你必須 0000 0000 0000 0000 0000 0000 0000 0101

左移29產量 1000 0000 0000 0000 0000 0000 0000 0000 0000

然後,移回: 0000 0000 0000 0000 0000 0000 0000 0001 這是餘。

相關問題