| BCC16VM 線上教材 | 
BCC16VM 是專門為了這份教材設計的 4-bit 虛擬電腦。 而此處是一份簡要的使用手冊。 這部虛擬電腦有 3 個暫存器,16 個 Instruction 位址, 16 個 data 位址,16 個機器碼。每個位址的容量是 1 字元, 而資料型態只有一種:無號整數, 也就是第0講就開始介紹的最基本二進制數字表現, 或者是第D講所定義的 N1, 或者是 C 語言的 unsigned int。 BCC16VM 由卓昇勳負責程式設計,用 Java 撰寫, 前後大約一共工作了六個月。 請在另一個視窗開啟 BCC16VM,配合著以下教材, 一邊讀一邊操作,學習效果較好。
以下是 BCC16VM 指令簡表。讀者看完教材之後,就應該可以看懂這份簡表。 而操作 BCC16VM 時,可能也要把這份簡表放在旁邊參考。
| 指令碼 | 參數碼 | 組合語言 | 記號或說明 | 
|---|---|---|---|
| 0000 | 0000 | stop | 程式結束 | 
| 0001 | print '\n' | 輸出 '\n' 到 console | |
| 0010 | print ' ' | 輸出 ' ' 到 console | |
| 0011 | print '\t' | 輸出 '\t' 到 console | |
| 0100 | print '+' | 輸出 '+' 到 console | |
| 0101 | print '-' | 輸出 '-' 到 console | |
| 0110 | print '*' | 輸出 '*' 到 console | |
| 0111 | print '/' | 輸出 '/' 到 console | |
| 1000 | print '%' | 輸出 '%' 到 console | |
| 1001 | print '=' | 輸出 '=' 到 console | |
| 1010 | print R0 | 輸出 R0 到 console | |
| 1011 | print R1 | 輸出 R1 到 console | |
| 1100 | print R2 | 輸出 R2 到 console | |
| 0001 | RaRb | add Ra Rb | Ra <- Ra + Rb | 
| 0010 | RaRb | subtract Ra Rb | Ra <- Ra - Rb | 
| 0011 | RaRb | multiply Ra Rb | Ra <- Ra * Rb | 
| 0100 | RaRb | divide Ra Rb | Ra <- Ra / Rb | 
| 0101 | N | generate N | R2 <- N | 
| 0110 | RaRb | test larger Ra Rb | Ra > Rb | 
| 0111 | RaRb | test equal Ra Rb | Ra == Rb | 
| 1000 | N | goto N | PC <- N | 
| 1001 | RaRb | copy Ra Rb | Ra <- Rb | 
| 1010 | N | load R0 N | R0 <- data at N | 
| 1011 | N | load R1 N | R1 <- data at N | 
| 1100 | N | load R2 N | R2 <- data at N | 
| 1101 | N | store R0 N | R0 -> data at N | 
| 1110 | N | store R1 N | R1 -> data at N | 
| 1111 | N | store R2 N | R2 -> data at N | 
 
| 製作人、 修改記錄 | 單維彰 (2004/06/09) --- |