编辑: wtshxd | 2013-06-07 |
00 取指微指令
09 MOV程序(3)
01 0A
02 0B
03 减法指令微程序(1) 0C
04 减法指令微程序(2) 0D
05 0E
06 0F
07 MOV程序(1)
08 MOV程序(2) 5模型机中时序的设计安排 由于模型机已确定了指令系统,微指令的格式采用全水平不编码纯控制场的格式,微程序的入口地址采用操作码散转方式,微地址采用计数增量的方式,所以可以确定模型机中时序单元所产生的每一拍的作用. 由监控单元产生一个PLS-O的信号来控制时序产生.PLS-O信号经过时序单元的处理产生了4个脉冲信号,四个脉冲信号组成一个微指令周期,为不同的寄存器提供工作脉冲. PLS1 微地址寄存器的工作脉冲,用来设置微程序的首地址及微地址加1. PLS2 PC计算器的工作脉冲,根据微指令的控制实现PC计算器加1和重置PC计算 器(跳转指令)等功能 PLS3 把24位微指令打入3片微指令锁存器. PLS4 把当前总线上的数据打入微指令选通的寄存器中. 6设计指令执行流程 根据模型机整机逻辑图和当前硬件条件来设计指令系统中每条指令的执行流程.在每个系统中,一条指令从内存取出到执行完毕,需要若干个机器周期,任何指令中都必须有一个机器周期作为"取指令周期",称为公操作周期.一条指令共需几个周期取决于指令在机器内实现的复杂程度. 在这里,我给出我的程序的数据信息流.
1 MOV A,#08 此程序由2个微指令组成. (1)PC+1从内存中取得指令第二个字节送入累加器A. (2)PC+1执行取指微令,从内存读出指令字节送入指令寄存器.
2 MOV R0,#08 此程序由2个微指令组成. (1)PC+1从内存中取得指令第二个字节送入寄存器Ri. (2)PC+1执行取指微令,从内存读出指令字节送入指令寄存器.
3 SUB A,R0 (1)PC+1为取下条指令字节准备,累加器A内容送入ALU的DR1锁存器. (2)寄存器中的Ri内容送入ALU的DR2锁存器. (3)ALU将计算结果送入累加器A,根据加法结果置进位位标志CY. (4)取指微指令,从内存读出指令送入指令寄存器.
4 JZ 0B (1)PC+1从内存取得指令第二个字节送入IR2. (2)IR2内容形成转移地址送入PC,从内存中读出指令字节送入指令寄存器.
5 MOV A,#00 同1.
6 JMP 0D (1)PC+1从内存取得指令第二个字节送入IR2. (2)IR2内容形成转移地址送入PC,从内存中读出指令字节送入指令寄存器.
7 MOV A,#01 同1.
7 源程序和指令代码及微程序 7.1源程序 MOV A,#08 MOV R0,#08 SUB A,R0 JZ 0B MOV A,#00 JMP 0D MOV A,#01 STA
20 HALT 7.2指令代码及微程序 编号 程序代码 指令编码 微程序
1 MOV A,#08 5FH 4D FF FF DD FB FF
2 MOV R0,#08 6CH 4D FF FF DD FB FF
3 SUB A,R0 1CH 4D FF FF FF FC D6 FF 7F
56 FF FB
86 4 JZ 0B B3H 4D FF FF D4 FF FF
5 MOV A,#00 5FH 没有执行
6 JMP 0D BFH 没有执行
7 MOV A,#01 5FH 4D FF FF DD FB FF
8 STA
20 8FH 4D FF FF D5 FF FF BB FD FF
8 使用软件HKCPT实现过程 当把写好的源程序输入到指令窗口,再经过编译、加载后,就可以对程序进行 微单步运行来具体查看数据流程了,其运行结果如下: 执行第一条指令MOV A,#08: 指令地址 指令代码 数据 微指令地址 微程序
00 5FH 08H
0000 0017 4D FF FF DD FB FF 执行第二条指令MOV R0,#08: 指令地址 指令代码 数据 微指令地址 微程序
02 6CH 08H
0018 001B 4D FF FF DD BF FF 执行第三条指令SUB A,RO: 指令地址 指令代码 数据 微指令地址 微程序
04 1CH 001C
0007 0008