小人電腦 (LMC) 是一個非常簡單的微處理器和電腦系統,專為教授初學者彙編程式設計而設計。為了簡單起見,它不是以二進制計算機的形式呈現,而是以十進制計算機的形式呈現。它包含 100 個儲存單元,編號從 0 到 99。您可以在此處放置程式指令和資料。
每個單元格可以容納 3 位十進制數。這裡我們可以儲存電腦要執行的指令或要操作的資料。 CPU 有一個累加器,用來執行算術運算。還有一個輸入和輸出,您可以在其中讀取用戶輸入並將輸出寫入用戶。
以下是指令集的簡單概述。每個指令其實只是一個 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 跳轉。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 模擬器之一。
您可以在線上找到多個基於瀏覽器的 LMC CPU 模擬器。您可以在其中逐步執行程式並即時觀看虛擬計算機的運行情況。
根據 LMC 理念的細微變化,您可以玩多種遊戲。這可能是讓孩子參與學習程式設計的好方法。