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命令查看程序运行后寄存器或内存状态。

    一次运行的截图

  • 相关阅读:
    第五:Nutanix的Prism管理手册
    第四:Nutanix的开关机步骤
    Exchange2016DR(异地容灾)环境:重要
    博客的开始
    sql查询日期型内容+oracle
    expdp导出oracle数据库中指定表空间下数据
    oracle 锁表的解决sql语句(pl/sql 删除表中数据锁表)
    centos 关闭防火墙+开启ssh服务
    显示桌面 我的电脑
    查看电脑连接过的wifi—通过命令行
  • 原文地址:https://www.cnblogs.com/joyeecheung/p/3687773.html
Copyright © 2011-2022 走看看