課程 計算機組成原理實驗編程
實驗日期 2015 年 12 月 8 日 微信
1、實驗目的測試
1.將微程序控制器同執行部件(整個數據通路)聯機,組成一臺模型計算機。spa
2.用微程序控制器控制模型計算機的數據通路。設計
3.經過TEC-5執行由8條機器指令組成的簡單程序,掌握機器指令與微指令的關係,牢固創建計算機的整機概念。調試
2、實驗內容blog
1. 實驗電路圖1內存
2.實驗任務table
(1)將下表5-1的程序按機器指令格式手工彙編成二進制機器代碼(要求預習時完成)。監控
表5-1
內存地址 |
機器指令 |
機器代碼(十六進制表示) |
00H |
ADD R1, R0 |
01H |
01H |
JC R3 |
5CH |
02H |
STA R1, [R2] |
39H |
03H |
LDA R2, [R2] |
4AH |
04H |
AND R2, R0 |
22H |
05H |
SUB R2, R3 |
1EH |
06H |
OUT R2 |
78H |
07H |
STP |
60H |
(2) 將實驗任務(1)中的程序代碼用控制檯指令存入內存中,並根據程序的須要,用數碼開關SW7-SW0設置通用寄存器的數據和內存數據。要求使用兩組寄存器數據,第一組寄存器數據在執行 ADD R1,R0指令時產生進位,第二組寄存器數據在執行ADD R1,R0指令時不產生進位,以觀察同一程序的不一樣執行流程。
(3)用單拍(DP)方式執行一遍程序,記錄最後獲得的四個寄存器的數據,以及由STA指令存入RAM中的數據,與理論分析值比較。執行時注意觀察各個指示燈的顯示,以跟蹤程序執行的詳細過程(可觀察到每一條微指令的執行過程)。
(4)用連續方式再次執行程序。這種狀況至關於計算機正常的工做。程序執行到STP指令後自動停機。讀出寄存器中的運算結果,與理論值比較。
參考數據:
假設第一組數據:
預置寄存器數據R0=35H,R1=43H,R2=10H,R3=07H。存儲器10H單元的內容爲55H。
假設第二組數據:
預置寄存器數據R0=86H,R1=88H,R2=10H,R3=07H。存儲器10H單元的內容爲55H。
3、實驗環境
軟件: WIN XP、串口調試助手軟件
硬件:1.微機 1臺
2.TEC-5實驗系統 1臺
3.邏輯測試筆 1支
4.編程器 公用
4、實驗步驟和實驗結果
(一)對機器指令系統組成的簡單程序進行手工譯碼的結果以下:
內存地址 |
機器指令 |
機器代碼(十六進制表示) |
00H |
ADD R1, R0 |
01H |
01H |
JC R3 |
5CH |
02H |
STA R1, [R2] |
39H |
03H |
LDA R2, [R2] |
4AH |
04H |
AND R2, R0 |
22H |
05H |
SUB R2, R3 |
1EH |
06H |
OUT R2 |
78H |
07H |
STP |
60H |
(二)接線表:
控制器 |
LDIR |
PC+1 |
LDPC# |
AR+1 |
LDAR# |
LDDR1 |
LDDR2 |
LDRi |
數據通路 |
LDIR |
PC+1 |
LDPC# |
AR+1 |
LDAR# |
LDDR1 |
LDDR2 |
LDRi |
控制器 |
SW_BUS# |
Rs_BUS# |
ALU_BUS# |
RAM_BUS# |
CER# |
CEL# |
數據通路 |
SW_BUS# |
Rs_BUS# |
ALU_BUS# |
RAM_BUS# |
CER# |
CEL# |
控制器 |
LR/W# |
Cn# |
M |
S0 |
S1 |
S2 |
S3 |
數據通路 |
LR/W# |
Cn# |
M |
S0 |
S1 |
S2 |
S3 |
控制器 |
進位C |
IR7 |
IR6 |
IR5 |
IR4 |
數據通路 |
進位C |
IR7 |
IR6 |
IR5 |
IR4 |
數據通路 |
IR3 |
IR2 |
IR1 |
IR0 |
IR1 |
IR0 |
數據通路 |
RS1 |
RS0 |
RD1 |
RD0 |
WR1 |
WR0 |
控制器 |
TJ |
時序電路 |
TJ |
(三)打開TEC-5電源。
(四)用串口調試助手對控存EEPROM進行改寫。
首先須要用串口調試助手對控存EEPROM進行改寫:
TEC-5中的4片EEPROM(CM0-CM3,U35-U38)是控存,裏面裝有TEC-5微程序的微代碼。因爲它是電可擦除可編程的EEPROM,所以能夠實現不用將CM0-CM3從插座上取出就能實現對其編程的目的。爲此咱們在TEC-5上用1片單片機芯片89S52(U39)和一些附加電路實現了不用拔出CM0-CM3就能對其編程,從而改寫這些EEPROM中微代碼的目的。89S52中包含一個監控程序,它負責經過串行口和PC機通信,向PC機發出提示信息、接收命令和數據,並根據接收到的命令(0,1,2,3)決定將隨後收到的64個數據寫入指定的EEPROM。命令0、一、二、3指定寫那個器件,0對應CM0,1對應CM1,2對應CM2,3對應CM3。64個字節的數據將寫入指定EEPROM的前64個單元(地址00H-3FH)。
注意波特率爲1200波特。
CM0-CM3的下載步驟:
(1)在TEC-5關閉電源的狀況下,用出廠時提供的RS232串口線將TEC-5實驗儀的串口與主機的串口鏈接起來。TEC-5上的編程開關撥到「1編程」位置。將串口調試助手程序打開,設置好參數。打開電源。按一下復位鍵RESET,使控制存儲器處於接收信息狀態,此時TEC-5中微地址與微碼的指示燈全亮。(注意:在數據傳送過程當中這些指示燈會閃爍)。
(2)軟件的數據接收區此時會顯示‘WAITING FOR COMMAND ...’,以下圖4。按「清空重填」按鈕,而後請在數據發送窗口寫入‘0’,按‘手動發送’按鈕,將命令‘0’發送給89S52,表示通知它要寫CM0文件了。
(3)此時數據接收區會出現‘PLEASE CHOOSE A CM FILE’,以下圖5所示,請經過按鈕‘選擇發送文件’,選擇要寫入二進制文件(如CM0.BIN),文件必須是「BIN」格式,長度爲64字節。而後點擊‘發送文件’按鈕,將文件發往89S52。89S52接收數據並對CM0編程,而後它讀出CM0的數據和從PC機接收到數據比較,無論正確與否,89S52都向PC機發出結果信息,在串口調試助手軟件數據接收窗口顯示出來。若是發送成功,則結果以下圖6所示。
圖4 數據接收區等待命令窗口
圖5 選擇發送文件窗口
圖6 數據接收區發送成功窗口
(4)等待文件發送完畢的提示(注意看軟件的最底下的狀態行和數據接收區),請注意看數據接收區的命令提示,重複(2)-(3)步驟,分別輸入命令‘1’、‘2’、‘3’,同時,應分別選擇CM一、CM二、CM3文件,對相應的EEPROM編程。CM一、CM二、CM3所有編程完後,按RESET按鈕結束編程。最後將TEC-5上的編程開關撥到正常位置。
注意:對CM0、CM一、CM二、CM3的編程順序無規定,只要在發出器件號後緊跟着發送該器件的編程數據(文件)便可。例如,能夠按CM三、CM二、CM0、CM1的順序編程。編程也能夠只對一個或者幾個EEPROM編程,不必定對4個EEPROM所有編程,只要編程結束後按RESET按鈕結束編程,最後將TEC-5上的編程開關撥到正常位置便可
(五)存程序代碼。
設置通用寄存器R0、R一、R2和R3的第一組值及存儲器相關單元的數據。
設本組的寄存器數據R0=35H,R1=43H,R2=10H,R3=07H。存儲器10H單元的內容爲55H。選擇這組數據的目的是執行ADD R1,R0指令時不產生進位C,從而在執行JC R3指令時不產生跳轉,而是順序執行。
設置通用寄存器R0、R一、R2和R3的值
在本操做中,置R0=35H,R1=43H,R2=10H,R3=07H
(1)令DP=0,DB=0,使系統處於連續運行狀態。令SWC=0,SWB=1,SWA=1,使系統處於寫寄存器狀態WRF。按CLR#按鈕,使實驗系統處於初始狀態。
(2)在SW7—SW0上設置一個存儲器地址,該存儲器地址供設置通用寄存器使用。即該地址設置爲0FFH。按一次QD按鈕,將0FFH寫入左端口地址寄存器AR。
(3)在SW7—SW0上設置00H,做爲通用寄存器R0的寄存器號。按一次QD按鈕,將00H寫入指令寄存器IR。
(4)在SW7—SW0設置35H,按一次QD按鈕,將35H寫入IR指定的R0寄存器。
(5)寫入R一、R二、R3方法與寫入R0相似,即重複(3)和(4)。
具體寫寄存器的操做以下表所示:
DP DB |
使系統處於連續狀態 |
SWC SWB SWA |
按CLR#使系統處於初始狀態 |
SW7-SW0 |
按QD將0FFH寫入AR |
||||
0 0 |
(0 1 1) |
0FFH |
|||||||
|
|||||||||
寄存器號 |
SW7-SW0 |
執行 |
結果 |
SW7-SW0 |
執行結果 |
||||
(R0)00H |
0000 0000 |
按QD按鈕 |
00H寫入IR |
35H |
將35H寫入IR指定的R0寄存器 |
||||
(R1)01H |
0000 0001 |
01H寫入IR |
43H |
將43H寫入IR指定的R0寄存器 |
|||||
(R2)02H |
0000 0010 |
02H寫入IR |
10H |
將10H寫入IR指定的R0寄存器 |
|||||
(R3)03H |
0000 0011 |
03H寫入IR |
07H |
將07H寫入IR指定的R0寄存器 |
設置完R0-R3的值後,用讀寄存器控制檯操做檢查一下寫入內容是否正確。
具體讀寄存器的操做以下表所示:
DP DB |
使系統處於連續狀態 |
SWC SWB SWA |
按CLR#使系統處於初始狀態 |
SW7-SW0 |
按QD將0FFH寫入AR |
||
0 0 |
(1 0 0) |
0FFH |
|||||
|
|||||||
寄存器號 |
SW7-SW0 |
執行 |
執行結果 |
||||
(R0)00H |
0000 0000 |
按QD按鈕 |
DBUS上顯示35H |
||||
(R1)01H |
0000 0100 |
DBUS上顯示43H |
|||||
(R2)02H |
0000 1000 |
DBUS上顯示10H |
|||||
(R3)03H |
0000 1100 |
DBUS上顯示07H |
向存儲器中輸入程序機器代碼和數據
本操做中,咱們從00地址開始存8個機器代碼:01H,5CH,39H,4AH,22H,1EH,78H,60H。在10H單元存入55H,做爲10H單元的初值,以檢查LDA和STA兩條指令的做用。
(1)令DP = 0,DB = 0,使實驗系統處於連續運行狀態。令SWC = 0、SWB = 0、SWA = 1,使實驗系統處於寫雙端口存儲器工做方式WRM。按CLR#按鈕,使實驗系統處於初始狀態。
(2)置SW7—SW0爲00H,按QD按鈕,將00H寫入左端口地址寄存器AR。
(3)置SW7—SW0 爲01H,按QD按鈕,將01H寫入存儲器00H單元。AR自動加1,變爲01H。
(4)置SW7—SW0 爲5CH,按QD按鈕,將5CH寫入存儲器01H單元。AR自動加1,變爲02H。
(5)將數據39H、4AH、22H、1EH、78H、60H分別寫入存儲器02H單元、03H單元、04H單元、05H、06H單元、07H單元的方法與上述相似。
(6)按CLR#按鈕,使實驗系統恢復到初始狀態。
(7)置SW7—SW0爲10H,按QD按鈕,將10H寫入左端口地址寄存器AR。
(8)置SW7—SW0 爲55H,按QD按鈕,將55H寫入存儲器10H單元。AR自動加1,變爲11H。
具體寫存儲器的操做以下表所示:
DP DB |
使系統處於連續狀態 |
SWC SWB SWA |
按CLR#使系統處於初始狀態 |
|||
0 0 |
(0 0 1) |
|||||
|
||||||
(內存單元) |
(機器代碼)SW7-SW0 |
執行 |
執行結果 |
|||
(00H) |
00H |
按QD按鈕 |
將00H寫入左邊地址寄存器AR |
|||
(00H) |
01H |
將01H寫入存儲器00H單元,AR自動加1,變爲01H |
||||
(01H) |
5CH |
將5CH寫入存儲器01H單元,AR自動加1,變爲02H |
||||
(02H) |
39H |
將39H寫入存儲器02H單元,AR自動加1,變爲03H |
||||
(03H) |
4AH |
將4AH寫入存儲器03H單元,AR自動加1,變爲04H |
||||
(04H) |
22H |
將22H寫入存儲器04H單元,AR自動加1,變爲05H |
||||
(05H) |
1EH |
將1EH寫入存儲器05H單元,AR自動加1,變爲06H |
||||
(06H) |
78H |
將78H寫入存儲器06H單元,AR自動加1,變爲07H |
||||
(07H) |
60H |
將60H寫入存儲器07H單元,AR自動加1,變爲08H |
||||
按CLR#使系統處於初始狀態 |
||||||
(內存單元) |
(機器代碼)SW7-SW0 |
執行 |
執行結果 |
|||
(10H) |
10H |
按QD按鈕 |
將10H寫入左邊地址寄存器AR |
|||
|
55H |
將55H寫入存儲器10H單元,AR自動加1,變爲11H |
設置完存儲器的程序和數據後,用存儲器控制檯操做檢查一下寫入的內容是否正確。
具體讀存儲器的操做以下表所示:
DP DB |
使系統處於連續狀態 |
SWC SWB SWA |
按CLR#使系統處於初始狀態 |
|||
0 0 |
(0 1 0) |
|||||
|
||||||
內存單元 |
SW7-SW0 |
執行 |
執行結果 |
|||
AR7-AR0顯示 |
DBUS7-DBUS0顯示 |
|||||
00H |
00H |
按QD按鈕 |
00H |
01H |
||
01H |
- |
01H |
5CH |
|||
02H |
- |
02H |
39H |
|||
03H |
- |
03H |
4AH |
|||
04H |
- |
04H |
22H |
|||
05H |
- |
05H |
1EH |
|||
06H |
- |
06H |
78H |
|||
按CLR#使系統處於初始狀態 |
||||||
10H |
10H |
按QD按鈕 |
10H |
55H |
||
|
|
|
|
●用單拍(DP)方式執行一遍程序。
置SWC=0,SWB=0,SWA=0,DP=1,DB=0,使實驗系統處於單拍運行狀態。置SW7—SW0=00H,使程序從地址00H開始執行。按CLR#按鈕,使實驗系統處於初始狀態,而後一次一次按QD按鈕,使程序一拍一拍的執行。
在單拍執行過程當中,首先要隨時監測AR、PC、µA5—µA0和IR的值,以斷定程序執行到何處,正在執行哪條指令和微指令。對照微程序流程圖,能夠判斷出微指令的地址和正在進行的微操做。
程序執行的結果以下:
初值:R0=35H,R1=43H,R2=10H,R3=07H。存儲器10H單元的內容爲55H。
(1)ADD R1,R0
執行結果 R0=35H,R1=78H,R2=10H,R3=07H。存儲器10H單元的內容爲( 55 )H。無進位C。
(2)JC R3
執行結果 R0=35H,R1=78H,R2=10H,R3=07H。存儲器10H單元的內容爲( 55 )H。PC爲(02)H。進位C不變。
(3)STA R1,[R2]
執行結果 R0=35H,R1=78H,R2=( 10 )H,R3=07H。存儲器10H單元的內容爲( 78 )H。
(4)LDA R2,[R2]
執行結果 R0=35H,R1=78H,R2=(78)H,R3=07H。存儲器10H單元的內容爲(78)H。
(5)AND R2,R0
執行結果 R0=35H,R1=78H,R2=(30)H,R3=07H。存儲器10H單元的內容爲(78)H。
(6)SUB R2,R3
執行結果 R0=35H,R1=78H,R2=( 29 )H,R3=07H。存儲器10H單元的內容爲(78)H。進位C爲1。
(7)OUT R2
執行結果 R0=35H,R1=78H,R2=(29)H,R3=07H。存儲器10H單元的內容爲( 78 )H。可在數據總線DBUS指示燈上觀察到( 29 )H。
(8)STP
執行結果 R0=( 35 )H,R1=(78)H,R2=( 29 )H,R3=(07)H。存儲器10H單元的內容爲( 78 )H。
最後的執行結果可經過控制檯的讀寄存器操做和讀存儲器操做觀察到,在觀察最後結果以前,首先應按CLR#按鈕,使實驗系統處於初始狀態。
具體讀寄存器的操做以下表所示:
DP DB |
使系統處於連續狀態 |
SWC SWB SWA |
按CLR#使系統處於初始狀態 |
SW7-SW0 |
按QD將0FFH寫入AR |
||
0 0 |
(1 0 0) |
0FFH |
|||||
|
|||||||
寄存器號 |
SW7-SW0 |
執行 |
執行結果 |
||||
(R0)00H |
0000 0000 |
按QD按鈕 |
DBUS上顯示35H |
||||
(R1)01H |
0000 0100 |
DBUS上顯示78H |
|||||
(R2)02H |
0000 1000 |
DBUS上顯示29H |
|||||
(R3)03H |
0000 1100 |
DBUS上顯示07H |
具體讀存儲器的操做以下表所示:
DP DB |
使系統處於連續狀態 |
SWC SWB SWA |
按CLR#使系統處於初始狀態 |
|||
0 0 |
(0 1 0) |
|||||
|
||||||
內存單元 |
SW7-SW0 |
執行 |
執行結果 |
|||
AR7-AR0顯示 |
DBUS7-DBUS0顯示 |
|||||
10H |
10H |
按QD按鈕 |
10H |
78H |
●用連續方式執行一遍程序
(1)因爲上面的單拍執行程序,已破壞了寄存器R一、R2和存儲器10單元的內容(程序沒有破壞),所以須要從新設置寄存器R一、R2和存儲器10單元的值。初值:R0=35H,R1=43H,R2=10H,R3=07H。存儲器10H單元的內容爲55H。
從新寫寄存器R一、R2的值的操做以下表所示:
DP DB |
使系統處於連續狀態 |
SWC SWB SWA |
按CLR#使系統處於初始狀態 |
SW7-SW0 |
按QD將0FFH寫入AR |
||||
0 0 |
(0 1 1) |
0FFH |
|||||||
|
|||||||||
寄存器號 |
SW7-SW0 |
執行 |
結果 |
SW7-SW0 |
執行結果 |
||||
(R1)01H |
0000 0001 |
|
01H寫入IR |
43H |
將35H寫入IR指定的R1寄存器 |
||||
(R2)02H |
0000 0010 |
02H寫入IR |
10H |
將10H寫入IR指定的R2寄存器 |
從新寫存儲器10單元的值的操做以下表所示:
DP DB |
使系統處於連續狀態 |
SWC SWB SWA |
按CLR#使系統處於初始狀態 |
|||
0 0 |
(0 0 1) |
|||||
|
||||||
(內存單元) |
(機器代碼)SW7-SW0 |
執行 |
執行結果 |
|||
(10H) |
10H |
按QD按鈕 |
將10H寫入左邊地址寄存器AR |
|||
|
55H |
將55H寫入存儲器10H單元,AR自動加1,變爲11H |
(2)置SWC=0,SWB=0,SWA=0,DP=0,DB=0,使實驗系統處於連續運行狀態。置SW7—SW0=00H,使程序從地址00H開始執行。按CLR#按鈕,使實驗系統處於初始狀態,而後按一次QD按鈕,則程序自動連續運行到地址爲07H的STP指令。
執行結果 R0=( 35 )H,R1=(78)H,R2=( 29 )H,R3=(07)H。存儲器10H單元的內容爲( 78 )H。
最後的執行結果可經過控制檯的讀寄存器操做和讀存儲器操做觀察到,在觀察最後結果以前,首先應按CLR#按鈕,使實驗系統處於初始狀態。
具體讀寄存器的操做以下表所示:
DP DB |
使系統處於連續狀態 |
SWC SWB SWA |
按CLR#使系統處於初始狀態 |
SW7-SW0 |
按QD將0FFH寫入AR |
||
0 0 |
(1 0 0) |
0FFH |
|||||
|
|||||||
寄存器號 |
SW7-SW0 |
執行 |
執行結果 |
||||
(R0)00H |
0000 0000 |
按QD按鈕 |
DBUS上顯示35H |
||||
(R1)01H |
0000 0100 |
DBUS上顯示78H |
|||||
(R2)02H |
0000 1000 |
DBUS上顯示29H |
|||||
(R3)03H |
0000 1100 |
DBUS上顯示07H |
具體讀存儲器的操做以下表所示:
DP DB |
使系統處於連續狀態 |
SWC SWB SWA |
按CLR#使系統處於初始狀態 |
|||
0 0 |
(0 1 0) |
|||||
|
||||||
內存單元 |
SW7-SW0 |
執行 |
執行結果 |
|||
AR7-AR0顯示 |
DBUS7-DBUS0顯示 |
|||||
10H |
10H |
按QD按鈕 |
10H |
78H |
(六)存程序代碼,(若是前面4.的存入程序代碼不被破壞,就不要從新輸入)
設置通用寄存器R0、R一、R2和R3的第二組值及存儲器相關單元的數據。
設本組寄存器數據:R0=86H,R1=88H,R2=10H,R3=07H。存儲器10H單元的內容爲55H。選擇這組數據的目的是執行ADD R1,R0指令時產生進位C,從而在執行JC R3指令時產生跳轉,而不是順序執行。
設置通用寄存器R0、R一、R2和R3的值
在本操做中,設R0=86H,R1=88H,R2=10H,R3=07H,
具體寫寄存器的操做以下表所示:
DP DB |
使系統處於連續狀態 |
SWC SWB SWA |
按CLR#使系統處於初始狀態 |
SW7-SW0 |
按QD將0FFH寫入AR |
||||
0 0 |
(0 1 1) |
0FFH |
|||||||
|
|||||||||
寄存器號 |
SW7-SW0 |
執行 |
結果 |
SW7-SW0 |
執行結果 |
||||
(R0)00H |
0000 0000 |
按QD按鈕 |
00H寫入IR |
86H |
將86H寫入IR指定的R0寄存器 |
||||
(R1)01H |
0000 0001 |
01H寫入IR |
88H |
將88H寫入IR指定的R0寄存器 |
|||||
(R2)02H |
0000 0010 |
02H寫入IR |
10H |
將86H寫入IR指定的R0寄存器 |
|||||
(R3)03H |
0000 0011 |
03H寫入IR |
07H |
將86H寫入IR指定的R0寄存器 |
設置完R0-R3的值後,用讀寄存器控制檯操做檢查一下寫入內容是否正確。
具體讀寄存器的操做以下表所示:
DP DB |
使系統處於連續狀態 |
SWC SWB SWA |
按CLR#使系統處於初始狀態 |
SW7-SW0 |
按QD將0FFH寫入AR |
||
0 0 |
(1 0 0) |
0FFH |
|||||
|
|||||||
寄存器號 |
SW7-SW0 |
執行 |
執行結果 |
||||
(R0)00H |
0000 0000 |
按QD按鈕 |
DBUS上顯示86H |
||||
(R1)01H |
0000 0100 |
DBUS上顯示88H |
|||||
(R2)02H |
0000 1000 |
DBUS上顯示10H |
|||||
(R3)03H |
0000 1100 |
DBUS上顯示07H |
向存儲器中輸入程序機器代碼和數據。
本操做中,咱們從00地址開始存8個機器代碼:01H,5CH,39H,4AH,22H,1EH,78H,60H。在10H單元存入55H。
具體寫存儲器的操做以下表所示:
DP DB |
使系統處於連續狀態 |
SWC SWB SWA |
按CLR#使系統處於初始狀態 |
|||
0 0 |
(0 0 1) |
|||||
|
||||||
(內存單元) |
(機器代碼)SW7-SW0 |
執行 |
執行結果 |
|||
(00H) |
00H |
按QD按鈕 |
將00H寫入左邊地址寄存器AR |
|||
(00H) |
01H |
將01H寫入存儲器00H單元,AR自動加1,變爲01H |
||||
(01H) |
5CH |
將5CH寫入存儲器01H單元,AR自動加1,變爲02H |
||||
(02H) |
39H |
將39H寫入存儲器02H單元,AR自動加1,變爲03H |
||||
(03H) |
4AH |
將4AH寫入存儲器03H單元,AR自動加1,變爲04H |
||||
(04H) |
22H |
將22H寫入存儲器04H單元,AR自動加1,變爲05H |
||||
(05H) |
1EH |
將1EH寫入存儲器05H單元,AR自動加1,變爲06H |
||||
(06H) |
78H |
將78H寫入存儲器06H單元,AR自動加1,變爲07H |
||||
(07H) |
60H |
將60H寫入存儲器07H單元,AR自動加1,變爲08H |
||||
按CLR#使系統處於初始狀態 |
||||||
(內存單元) |
(機器代碼)SW7-SW0 |
執行 |
執行結果 |
|||
(10H) |
10H |
按QD按鈕 |
將10H寫入左邊地址寄存器AR |
|||
|
55H |
將55H寫入存儲器10H單元,AR自動加1,變爲11H |
設置完存儲器的程序和數據後,用讀存儲器控制檯操做檢查一下寫入內容是否正確。
具體讀存儲器的操做以下表所示:
DP DB |
使系統處於連續狀態 |
SWC SWB SWA |
按CLR#使系統處於初始狀態 |
|||
0 0 |
(0 1 0) |
|||||
|
||||||
內存單元 |
SW7-SW0 |
執行 |
執行結果 |
|||
AR7-AR0顯示 |
DBUS7-DBUS0顯示 |
|||||
00H |
00H |
按QD按鈕 |
00H |
01H |
||
01H |
- |
01H |
5CH |
|||
02H |
- |
02H |
39H |
|||
03H |
- |
03H |
4AH |
|||
04H |
- |
04H |
22H |
|||
05H |
- |
05H |
1EH |
|||
06H |
- |
06H |
78H |
|||
按CLR#使系統處於初始狀態 |
||||||
10H |
10H |
按QD按鈕 |
10H |
55H |
置SWC=0,SWB=0,SWA=0,DP=1,DB=0,使實驗系統處於單拍運行狀態。置SW7—SW0=00H,使程序從地址00H開始執行。按CLR#按鈕,使實驗系統處於初始狀態,而後一次一次按QD按鈕,使程序一拍一拍的執行。
在單拍執行過程當中,首先要隨時監測AR、PC、µA5—µA0和IR的值,以斷定程序執行到何處,正在執行哪條指令和微指令。對照微程序流程圖,能夠判斷出微指令的地址和正在進行的微操做。程序執行的結果以下:
初值:R0=86H,R1=88H,R2=10H,R3=07H。存儲器10H單元的內容爲55H。
(1)ADD R1,R0
執行結果 R0=(86 )H,R1=(0E)H,R2=(10)H,R3=( 07 )H。存儲器10H單元的內容爲(55)H。有進位C。
(2)JC R3
執行結果 R0=(86)H,R1=(0E)H,R2=(10)H,R3=(07)H。存儲器10H單元的內容爲(55)H。PC爲(07)H。進位C不變。
(3)STP
執行結果 R0=(86)H,R1=( 0E )H,R2=(10 )H,R3=(07)H。存儲器10H單元的內容爲(55)H,進位C爲1。
最後的執行結果可經過控制檯的讀寄存器操做和讀存儲器操做觀察到,在觀察最後結果以前,首先應按CLR#按鈕,使實驗系統處於初始狀態。
具體讀寄存器的操做以下表所示:
DP DB |
使系統處於連續狀態 |
SWC SWB SWA |
按CLR#使系統處於初始狀態 |
SW7-SW0 |
按QD將0FFH寫入AR |
||
0 0 |
(1 0 0) |
0FFH |
|||||
|
|||||||
寄存器號 |
SW7-SW0 |
執行 |
執行結果 |
||||
(R0)00H |
0000 0000 |
按QD按鈕 |
DBUS上顯示86H |
||||
(R1)01H |
0000 0100 |
DBUS上顯示0EH |
|||||
(R2)02H |
0000 1000 |
DBUS上顯示10H |
|||||
(R3)03H |
0000 1100 |
DBUS上顯示07H |
讀存儲器:
DP DB |
使系統處於連續狀態 |
SWC SWB SWA |
按CLR#使系統處於初始狀態 |
|||
0 0 |
(0 1 0) |
|||||
|
||||||
內存單元 |
SW7-SW0 |
執行 |
執行結果 |
|||
AR7-AR0顯示 |
DBUS7-DBUS0顯示 |
|||||
10H |
10H |
按QD按鈕 |
10H |
55H |
●用連續方式執行一遍程序。
(1)因爲上面的單拍執行程序,已破壞了寄存器R1內容(程序沒有破壞),所以須要從新設置寄存器R1的值。初值:R0=86H,R1=88H,R2=10H,R3=07H。存儲器10H單元的內容爲55H。
寫寄存器R1的值:
DP DB |
使系統處於連續狀態 |
SWC SWB SWA |
按CLR#使系統處於初始狀態 |
SW7-SW0 |
按QD將0FFH寫入AR |
||||
0 0 |
(0 1 1) |
0FFH |
|||||||
|
|||||||||
寄存器號 |
SW7-SW0 |
執行 |
結果 |
SW7-SW0 |
執行結果 |
||||
(R1)01H |
0000 0001 |
按QD按鈕 |
01H寫入IR |
88H |
將88H寫入IR指定的R1寄存器 |
(2)置SWC=0,SWB=0,SWA=0,DP=0,DB=0,使實驗系統處於連續運行狀態。置SW7—SW0=00H,使程序從地址00H開始執行。按CLR#按鈕,使實驗系統處於初始狀態,而後按一次QD按鈕,則程序自動連續運行到地址爲07H的STP指令。
執行結果 R0=(86)H,R1=( 0E )H,R2=(10 )H,R3=(07)H。存儲器10H單元的內容爲( 55 )H。
最後的執行結果可經過控制檯的讀寄存器操做和讀存儲器操做觀察到,在觀察最後結果以前,首先應按CLR#按鈕,使實驗系統處於初始狀態。
具體讀寄存器的操做以下表所示:
DP DB |
使系統處於連續狀態 |
SWC SWB SWA |
按CLR#使系統處於初始狀態 |
SW7-SW0 |
按QD將0FFH寫入AR |
||
0 0 |
(1 0 0) |
0FFH |
|||||
|
|||||||
寄存器號 |
SW7-SW0 |
執行 |
執行結果 |
||||
(R0)00H |
0000 0000 |
按QD按鈕 |
DBUS上顯示86H |
||||
(R1)01H |
0000 0100 |
DBUS上顯示0EH |
|||||
(R2)02H |
0000 1000 |
DBUS上顯示10H |
|||||
(R3)03H |
0000 1100 |
DBUS上顯示07H |
讀存儲器:
DP DB |
使系統處於連續狀態 |
SWC SWB SWA |
按CLR#使系統處於初始狀態 |
|||
0 0 |
(0 1 0) |
|||||
|
||||||
內存單元 |
SW7-SW0 |
執行 |
執行結果 |
|||
AR7-AR0顯示 |
DBUS7-DBUS0顯示 |
|||||
10H |
10H |
按QD按鈕 |
10H |
55H |
5、實驗結果與討論
(一)第一組數據的實驗結果:
在存完寄存器和存儲器數據,並經過讀取數據及指令以確保數據及指令無誤後,用單拍方式和連續方式執行程序,查看寄存器R0、R一、R二、R3及(10H)單元的值,以下所示:
最終通用寄存器和內存單元數據表(實驗結果表)
寄存器號 |
R0 |
R1 |
R2 |
R3 |
(10H) |
理論值 |
35H |
78 H |
29H |
07 H |
78H |
實驗值 |
35H |
78 H |
29H |
07 H |
78H |
實驗數據與理論數據相符。
(二)第二組數據的實驗結果:
在存完寄存器和存儲器數據,並經過讀取數據及指令以確保數據及指令無誤後,用單拍方式和連續方式執行程序,查看寄存器R0、R一、R二、R3及(10H)單元的值,以下所示:
最終通用寄存器和內存單元數據表(實驗結果表)
寄存器號 |
R0 |
R1 |
R2 |
R3 |
(10H) |
理論值 |
86H |
0E H |
10H |
07 H |
55H |
實驗值 |
86H |
0E H |
10H |
07 H |
55H |
實驗數據與理論數據相符。
6、思考題
請簡述設計模型計算機的步驟。
答:模型機設計具體步驟下:
一、 肯定指令系統;
二、 規劃設計整機邏輯;
三、 設計數據通路;
四、 設計控制器(以常規型微程序控制器爲例);
a.設計時序電路;
b.最後肯定指令週期;
c.畫出微程序流程圖,同時檢查設計的數據通路和控制器是否知足一、指令系統的要求。
d.根據微程序流程圖化簡、歸併微信號;
e.設計微指令格式;
f.設計地址轉移邏輯;
g.若不知足,則進行修改,返回到C進行修改;
h.根據流程圖編寫微代碼;
i.寫微代碼到控制存儲器,並檢查寫入代碼的正確性;
五、將數據通路與控制器聯機,組成一臺模型計算機;
六、經過運行一段簡單的程序(應包括該機的全部指令系統),即可知道設計的正確性。不過程序運行前須經過控制檯爲所用的寄存器、內存單元提供必要的數據以及向內存送程序的機器代碼。
7、總結
(一) 本次實驗按時按量完成。
(二) 經過本次實驗我將微程序控制器同執行部件(整個數據通路)聯機,組成了一臺模型計算機。並用微程序控制器控制模型計算機的數據通路。最後經過TEC-5執行由8條機器指令組成的簡單程序,掌握機器指令與微指令的關係,牢固創建了計算機的整機概念。
(三) 本次實驗將前面幾個實驗中的全部電路,包括運算器、存儲器、通用寄存器堆、微程序控制器等模塊組合在一塊兒,構成一臺簡單的模型機。所以,本實驗與前面的實驗相比,雖然會比較複雜些,但也是收穫最多的一個實驗。
(四) 在前面的實驗中,咱們學生自己做爲「控制器」,完成了對數據通路的控制。而在此次實驗中,數據通路的控制將交由微程序控制器來完成。TEC-5從內存中取出一條機器指令到執行指令結束的一個指令週期,是由微程序完成的,即一條機器指令對應一個微程序序列。
(五) 本次實驗起初屢次出現存入寄存器的數據沒法正確讀出的問題,通過反覆排查與請教老師,發現是由於接線接觸不良的問題,接下來的幾回獨立試驗則十分注意接線的接觸問題,狀況獲得很好改善。
(六) 開始執行程序的時候,若是指令沒有按照應該有的順序執行,而是跳到下一條或者是其餘條,則應該排查接線IR7-IR4的接觸是否良好。
(七) 若74LS181運算結果有的對,有的錯,多是S3-S0中有的連線接觸不良。