了解TEC-2機的結構和基本的指令知識很重要,不理解而只知一味地照抄是學不到知識的。建議先閱讀課件,再結合例子進行理解。以下例子只供參考,有些地方可以合並,具體的操作仍需見仁見智。理解並學會使用微指令分析器是解決問題的關鍵。
總體思路:
設計微程序→將微碼存放於內存中→將微碼加載到微控制存儲器中→輸入程序,運行新指令,以檢驗微程序的正確性
補充知識:
指令格式: 操作碼 條件碼 目的寄存器(DR) 源寄存器(SR)
||
唯一指定一條指令
例:第一題: D4 2 0
PC:存放內存單元的地址。(隨着指令運行時遞增)
反匯編得到指令的具體格式。
14號命令:與/CC條件無關,順序執行,即執行緊跟在本條微指令后面的那條微指令,由μPC提供微地址。
3號命令:條件轉移。/CC=1時,順序執行,否則按當前微指令下地址字段中地址D轉移。
D數據來源可分為:
①16個鈕子開關,用於手撥方式輸入的數據或地址②運算器的16位輸出;③外部數據總線傳送來的數據;④中斷向量寄存器的輸出;⑤狀態寄存器(C-進/借位、Z-運算結果、V-溢出、S-符號 4個標志位及中斷優先級);⑥指令寄存器的低位字節。
第一題:
將內存單元數據DATA減去用絕對地址ADDR表示的內存單元的內容,結果保存到由DR內容指定的內存單元中
1.指令格式
| 指令格式: |
D4 |
DR |
X |
|
|
ADDR |
||
|
|
DATA |
||
2.指令功能
功能: DATA- [ADDR] → [DR]
3.設計分析
根據指令的功能和指令格式,先讀取地址ADDR單元內容暫時放置於Q寄存器中, 然后PC+1→PC,並將PC的值賦給AR。MEM中存放的數據是DATA。此時只需要實現MEM-Q→Q,並將DR送給AR。只要將Q寄存器內容寫入存儲器MEM就可以完成指令功能。最后,微程序中必須實現PC+1→PC操作,才能確保PC的正確走向。
4. 微程序
100:PC→AR,PC+1→PC: 0000 0E00 A0B5 5402
101:MEM→AR: 0000 0E00 10F0 0002
102:MEM→Q: 0000 0E00 00F0 0000
103:PC→AR,PC+1→PC: 0000 0E00 A0B5 5402
104:MEM-Q→Q: 0000 0E01 02E0 0000
105:DR→AR: 0000 0E00 90B0 000A
106:Q→MEM,CC#=0: 0029 0300 1020 0010
5. 加載到微控存程序段
說明:微碼存放在900H(或某內存單元)開始的內存單元中
>A0800↙
0800:MOV R1,900 ;微碼在內存中的首地址
0802:MOV R2,7 ;微指令條數
0804:MOV R3,100 ;微碼在微控制存儲器中的首地址
0806:LDMC ;加載微碼指令,將微碼指令加載到微控制存儲器中
0807:RET
0808:
>A0800↙
6.運行程序段
>A0820↙
0820:MOV R0,0011
0822:MOV [0890],R0
0824:MOV R2,0891
0826:NOP
0827:NOP
0828:NOP
0829:RET
>E0826↙
然后輸入以下內容:
D420 0890 1111
7.運行結果
>G0820↙
>D0891↙
0891:1100


第二題:
將絕對地址ADDR單元的內容與[SR]內容相加,結果保存到DR寄存。
1. 指令格式
| 指令格式: |
D4 |
DR |
SR |
|
|
ADDR |
||
2. 指令功能
功能: [ADDR] + [SR] → DR
3.設計分析
根據指令的功能和指令格式,讀取地址ADDR單元內容暫時放置於Q寄存器中,將SR單元內容賦給AR,MEM中存放着SR的數據。此時只需要實現Q+MEM,並將結果賦給DR就可以完成指令功能。最后,微程序中必須實現PC+1→PC操作,才能確保PC的正確走向。
4.微程序
100:PC→AR,PC+1→PC: 0000 0E00 A0B5 5402
101:MEM→AR: 0000 0E00 10F0 0002
102:MEM→Q: 0000 0E00 00F0 0000
103:SR→AR: 0000 0E00 90C0 0082
104:MEM+Q→Q: 0000 0E01 00E0 0000
105: Q→DR,CC#=0: 0029 0300 B020 0008
(104和105可以合並成MEM+Q→DR,CC#=0)
5.加載到微控存程序段
說明:微碼存放在900H(或某內存單元)開始的內存單元中
>A0800↙
0800:MOV R1,900 ;微碼在內存中的首地址
0802:MOV R2,6 ;微指令條數
0804:MOV R3,100 ;微碼在微控制存儲器中的首地址
0806:LDMC ;加載微碼指令,將微碼指令加載到微控制存儲器中
0807:RET
0808:
>A0800↙
6. 運行程序段
>A0820↙
0820:MOV R0,0011
0822:MOV [0890],R0
0824:MOV R0,0100
0826:MOV [0891], R0
0828:MOV R3, 0891
082A:NOP
082B:NOP
082C:RET
>E082A↙
然后輸入以下內容:
D413 0890
7.運行結果
>G0820↙
>RR1↙
0111:-

