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) ---