TEC-2幾條微指令的微碼說明 & TEC-2微程序運行測試步驟


個人理解,不保證完全正確……

給正在被何朝東虐的,以及將來會被何朝東虐的同胞們…………

祈禱軟院趕快更新課程讓下一代逃脫TEC-2魔爪,monitor里那1994的年份真是看得人一口老血……

 

微碼說明

PC→ARPC+1→PC            0000  0E00  A0B5  5402

0E00:順序執行

A0B5: 讀寫那里設置不操作,101,WE=1是為了把PC送到內部總線好讓AR接收;Cin=1,R+S,A、B口地址為0101(R5=PC所在);F->B,A(即PC+1->PC),R=0,S=B

A來自不操作與F->B,A;B來自WE為1與R\S是0\B,5來自A口地址

5402:5來自B口地址,4來自設進位為1,2來自DC2設為AR (這樣PC->AR)

 

CI3-0

/MIO REQ /WE

MI8-0

Sci

DC2

順序執行

101,不操作+額外設WE=1

F->B, A

R+S

R=0

S=B

Cin=1

AR

 

/WE =1為了把PC

寫到內部數據總線

Y=A=PC

F=PC+Cin->PC

 

B也是PC

PC+1

 

 

其他:A、B口地址為0101,因為PC默認是R5

 

 

MEM→AR0000 0E00 10F0 0002

10F0:1是無,F;F是R=D,S=0(D輸入端是內部總線送過來的數據)加上WE=1(MEM讀到內部數據總線),這樣Y=D+0=MEM+0會出現在內部總線

0002:2是選擇DC2為AR,這樣內部總線的數據會送到AR

 

CI3-0

/MIO REQ /WE

MI8-0

DC2

順序執行

001,存儲器讀

無,F

R+S

R=D

S=0

AR

 

MEM內容到達D端口

Y=F=D+0

 

D來自MEM

 

 

 

 

MEM→Q0000 0E00 00F0 0000

同理,只不過要把F(D+0,也是MEM的內容)再送到Q,選擇F->Q,F,R=D, S=0,所以是00F0

 

CI3-0

/MIO REQ /WE

MI8-0

順序執行

001,存儲器讀

F->Q,F

R+S

R=D

S=0

 

MEM內容到達D端口

F=D+0->Q

 

D來自MEM

 

 

PC→ARPC-1→PC0000 0E00 A1B5 5402

和第一個差不多,改成R-S

 

 

 

MEM+Q→Q0000 0E00 00E0 0000

00E0:WE那邊001,存儲器讀(MEM會到D那里)

然后設置F->Q,F,R+S,R=D(MEM),S=Q,這樣實現了MEM+Q->Q

 

CI3-0

/MIO REQ /WE

MI8-0

順序執行

001,存儲器讀

F->Q,F

R+S

R=D

S=Q

 

MEM內容到達D端口

F=D+Q->Q

 

D來自MEM

 

 

PC+1→PC0000 0E00 B030 5400

B:不操作,F->B,F

3:R=0,S=B,

5:B為R5=PC

4:Cin=1

 

CI3-0

/MIO REQ /WE

MI8-0

Sci

順序執行

100,不操作

F->B,F

R+S

R=0

S=B

Cin=1

 

 

F=PC+1->PC

 

B來自PC

PC+1

 

 

 

Q→MEMCC#=0, 3#, A4H0029 0300 1020 0010

0029:最后要條件轉移到A4H(A4H微指令的功能是依據有無中斷請求,決定是進入中斷處理過程,還是順序執行下一條指令,這是每條機器指令完成后應該執行的一項操作。),A4轉換為二進制是10100100,前面補0,后面兩個備用的也是0,得到0029

0300:條件轉移,3#,CC#=/CC

1020:1是無,F;2是R=0,S=Q,這樣0+Q出現在Y,WE那邊存儲器寫,000

0010:送往內部總線的數據DC1=運算器輸出即F=0+Q,這樣就可以寫進存儲器,Q->MEM

 

CI3-0

/MIO REQ /WE

MI8-0

DC1

條件轉移

000,存儲器寫

無, F

R+S

R=0

S=Q

運算器輸出

 

數據總線的東西寫進MEM

輸出F=0+Q

 

 

這樣F會送到數據總線

 

 

其他:下地址設為0010100100,備用填00

 

 

 

SR → AR 0000 0E00 90C0 0082

90C0:WE那邊是101,不操作,WE=1輸出寫到內部數據總線;無,F,R+S,R=0,S=A,這樣A口的數據就會出現在數據總線上

0082:8是SA=1(這樣A是SR),2是DC2=AR,

於是SR的數據穿過A口,到達內部數據總線,寫入AR

 

 

CI3-0

/MIO REQ /WE

MI8-0

DC2

順序執行

101,不操作

無,F

R+S

R=0

S=A

AR

 

WE=1,Y輸出到內部總線

Y=F=0+SR

 

A來自SR

 

 

 

其他:SA=1

 

 

MEM+Q→DRCC#=0, 3#, A4H  0029 0300 30E0 0008

 

0029:最后要條件轉移到A4H

0300:條件轉移,3#,CC#=/CC

30E0:3是F->B,F;E是R+S,R=D,S=Q;存儲器讀001,這樣MEM內容到了D,D+Q->B

0008:SB=1,這樣B口就是DR,實現D+Q->DR

 

CI3-0

/MIO REQ /WE

MI8-0

條件轉移

001,存儲器讀

F->B,F

R+S

R=D

S=Q

 

MEM讀到D端口

輸出F=D+Q->DR

B是DR

 

D來自MEM

 

微程序運行

測試使用老師給的文件包里的monitor.ext

 

微程序設計與測試步驟:

  1. 依照需求,利用微指令分析器設計好微程序
  2. 進入監控程序,用E命令輸入微碼,如
    >E900

     輸入首地址為900的微碼,回車后輸入微程序,以空格隔開,回車表示輸入完畢。

  3. 輸入加載微碼的程序,如
    >A800

    可在首地址800開始輸入加載微碼的程序,如

    0800MOV R1,900     ; 微碼在內存中首地址為900,即上步E900的900
    0802: MOV R2,7       ; 一共有7條微指令
    0804: MOV R3,100     ; 微碼在微控存中的首地址為100(對應操作碼D4)
    0806:LDMC             ;加載微碼指令,將微碼指令加載到控存
    0807RET
    0808
  4. 運行加載微碼的程序,如
    >G800

    其中800 是第3步的 A800 的 800,這樣微碼便裝入了微控存中(在上例中即D4對應的100H首地址)

  5. 用另一個程序測試新指令,先准備測試數據,如輸入
    >A820

    然后輸入

    0820MOV R0,0011          ; 將0011存入R0
    0822: MOV [0890],R0       ; 將R0的內容存入地址為0890的內存單元中
    0824: MOV [0891],R0       ; 將R0的內容存入地址為0891的內存單元中
    0826NOP             
    0827NOP
    0828NOP
    0829RET
  6. 在第5步已輸入的指令后(NOP開始的地方)調用新指令,如在上步后輸入
    >E826

    即將新指令的調用放在0824: MOV [0891],R0 之后,接着輸入

    D400 0890 0891

    這樣就調用了新指令的操作碼D4,配合操作數0890,0891。

  7. 運行測試程序,如依照上例,輸入

    >G820

    就運行了首地址為820的微程序。

  8. 查看結果,可以用D或者R命令查看程序運行后寄存器或內存狀態。

 

一次運行的截圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM