zoukankan      html  css  js  c++  java
  • 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与RS是0B,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命令查看程序运行后寄存器或内存状态。

    一次运行的截图

  • 相关阅读:
    UVA 408 (13.07.28)
    linux概念之用户,组及权限
    Java实现 蓝桥杯 历届试题 网络寻路
    Java实现 蓝桥杯 历届试题 约数倍数选卡片
    Java实现 蓝桥杯 历届试题 约数倍数选卡片
    Java实现 蓝桥杯 历届试题 约数倍数选卡片
    Java实现 蓝桥杯 历届试题 约数倍数选卡片
    Java实现 蓝桥杯 历届试题 约数倍数选卡片
    Java实现 蓝桥杯 历届试题 九宫重排
    Java实现 蓝桥杯 历届试题 九宫重排
  • 原文地址:https://www.cnblogs.com/joyeecheung/p/3687773.html
Copyright © 2011-2022 走看看