BCC16VM 教材:程式指標

BCC16VM 面板上有一個名叫 PC 的暫存器, 它不是 Personal Computer (個人電腦) 的意思, 它是 Program Counter (程式指標) 的意思。 PC 裡面可以寫 8-bit 資料,但是其實只有 0--15 是有意義的, 它就是指令段的位址。 而所謂『程式指標』的意義,就是說『 CPU 下一步要執行的工作, 便是 PC 內容所指的位址』。

例如我們將前一節,產生 230 並存入 0000 的機器碼程式, 在最後加上 stop 指令,共七句機器碼,寫在指令段的 2 到 8 號, 亦即 0010--1000;我們這次故意不要從 0 號開始寫程式。

指令位址記號機器碼
0010  R2 <- 15 01011111
0011  R0 <- R2 10010010
0100  R0 <- R0*R2 00110010
0101  R2 <- 5 01010101
0110  R0 <- R0+R2 00010010
0111  R0 -> 0000 11010000
1000  stop 00000000

請實驗:將 PC 的內容寫入 00000010,也就是指令段位址 0010 的意思, 然後逐次按 [Run] 就發現 CPU 從 0010 開始逐步執行到 1000。 執行之後,PC 停留在最後一個指令位址,也就是 00001000。 因此,再按 [Run] 也無效,必須要先將 PC 改成 00000010, 才能夠再執行一遍。

如果 PC00000110,然後按 [Step], 則 CPU 只執行 0110 而已,也就是做了 R0 <- R0+R2。 按下 [Step],您看到 CPU 執行了 PC 所指的機器碼, 然後 PC 的數值會自動加一。 因此,CPU 的下一個動作,根據 PC 的指示, 就會是指令段的下一個機器碼。

習題

  1. 利用這一節已經輸入的機器碼,不再寫新的程式,只用鍵盤更改 PC 然後按 [Step],在 R0 中存放 30
  2. 利用這一節已經輸入的機器碼,不再寫新的程式,只用鍵盤更改 PC 然後按 [Step],在 R0 中存放 75
[BCC16-B]
單維彰 (2004/06/10) ---
[Prev] [Next] [Up]