LC-3命令セットを使用して、16ビット(2バイト)ワードの最後の8ビット(つまりバイト)を左にシフトする方法を決定しようとしています。
例えば、
0000 0000 1111 1111 -> 1111 1111 0000 0000
あなたがLC-3について話していることを理解したので、LC-3bMiroarchitectureと参照されている命令セットに関するこのプレゼンテーションを見つけました。
論理シフトを実装する必要があります。具体的には、論理左シフト。これを行うには、いくつかの方法があります。
バイナリ演算を理解していれば、これを簡単な方法で行うことができます。
左シフトを行うには、それ自体に値を追加するだけです。これを8回行うための単純なループを作成します。
何かのようなもの
LD R1, count
loop
LD R0, word
ADD R0, R0, R0 ;Left Shift
ADD R1, R1, -1 ;Decrement shift counter
BRp loop ;We still have shifts, go back to loop
HALT
count .fill #8