使用加法和一组受限制的指令相乘

时间:2013-11-28 17:49:55

标签: cpu mips cpu-registers instruction-set

我正在使用Logisim构建CPU电路。我的CPU只有2个通用寄存器和一个16字节的RAM。我编写了以下指令集(Rxy表示两个寄存器之一)

• ADD Rxy, Rxy (add Rxy and Rxy and store result inside the first register) 
• SUB Rxy, Rxy (same but with sub)
• ST Rxy, Address (save value of Rxy into RAM address)
• LD Rxy, Address (load into Rxy value at RAM address)
• BZ Rxy, Address (branch to address if value of Rxy is zero)

我以为我可以使用递减第二个加数,直到它达到0并且在每一步,将第一个加数添加到自身。

For example, 5*3 = 5+5+5 ; 3-1-1-1

但是我不确定我的指令是否允许这个程序......如果Rxy等于0,我只有一个分支,而如果等于0,我想分支。 / p>

我的程序目前看起来像这样:

假设R1预先加载了第二个加数(迭代左计数)

(A) LD R0, Address      # constant 1
    SUB R1, R0      # decrement iteration left
    ST R1, Address      # save iteration count in memory
    LD R0, Address      # Load first addend
    LD R1, Address      # load current total
    ADD R0, R1      # do addition
    ST R0, Address      # save new current total

BZ R1, (B)          # if iteration is 0, then display and end, else add

(B)
    STOP

有没有办法用我的指令集循环?

1 个答案:

答案 0 :(得分:1)

您可以更改

BZ R1, (B)

(B)

BZ R1, (B)
LD R0, Address      # constant 1
SUB R0, R0
BZ R0, (A)

(B)