リトルマン コンピューター (LMC) は、初心者にアセンブリ プログラミングを教えるために設計された、非常にシンプルなマイクロプロセッサーおよびコンピューター システムです。物事を簡単にするために、それは 2 進数のコンピューターとしてではなく、10 進数のコンピューターとして示されています。 0 ~ 99 の番号が付けられた 100 個のメモリ セルが含まれています。ここにプログラム命令とデータを配置できます。
各セルには 3 桁の 10 進数を入れることができます。ここには、コンピューターが実行する命令や操作するデータを保存できます。 CPU には、算術演算を実行するときに使用されるアキュムレータが 1 つあります。ユーザー入力を読み取り、ユーザーに出力を書き込むことができる入出力もあります。
ここでは、命令セットの簡単な概要を示します。各命令は実際には単なる 3 桁の数字です。しかし、通常、プログラミングするときは、覚えやすい略語文字を扱います。以下の説明を読むためのヒントを次に示します。たとえば、 Add
命令は番号1xx
を持つように記述されます。これが実際に意味するのは、 xx
オペランド (引数) を入れる場所であるということです。したがって、 142
メモリセル42の内容をアキュムレータの内容に加算するための命令である。
ADD
1xx メモリ内のアドレスxx
の内容をアキュムレータに追加します。SUB
2xx は、アキュムレータに格納されている内容からアドレスxx
の内容を減算します。結果をアキュムレータに保存します。STA
3xx はメモリ内のアドレスxx
にアキュムレータを保存します。LDA
5xx は、メモリ内のアドレスxx
の内容を含むアキュムレータをロードします。BRA
6xx プログラム内の位置xx
にジャンプします。BRZ
7xx ジャンプBRP
8xx アキュムレータが 0 以上 (正) の場合にジャンプします。INP
901 は、アキュムレータに入力からの数値を入力します。OUT
902 はアキュムレータ内の値を出力キューにプッシュします。HLT
000 停止プログラムサンプル フォルダーには、さらに多くのプログラムのサンプルが含まれています。以下は、入力から数値を読み取り、カウントダウンするプログラムの例です。したがって、入力で 4 を読み取ると、出力には 4、3、2、1、0 が書き込まれます。
INP
OUT
LOOP BRZ QUIT // Jump to QUIT if accumulator is 0
SUB ONE // Subtract from accumulator what is stored in ONE
OUT
BRA LOOP // Jump (unconditionally) to the memory address labeled LOOP
QUIT HLT // Label this memory address as QUIT
ONE DAT 1 // Store 1 in this memory address.
サンプルとして書かれたプログラムをファイルに保存し、そのファイル名をassemble(file)
関数に与えると、プログラムとデータを表す 3 桁の整数のリストが生成されます。これをsimulate!(program, inputs)
関数に渡してプログラムを実行できます。出力をダンプします。
あるいは、これをコピーして貼り付けて、以下で説明する Web ベースの LMC シミュレーターの 1 つにコードを挿入することもできます。
LMC CPU 用のブラウザベースのシミュレータがオンラインでいくつか見つかります。プログラムをステップ実行して、仮想コンピューターがどのように動作するかをライブで観察できます。
LMC のアイデアのわずかなバリエーションに基づいてプレイできるゲームがいくつかあります。これは、子供たちをプログラミングの学習に参加させる良い方法になる可能性があります。