2.1.2具体指令汇总表:(*指令的格式设计参照何种指令集?来源?) 类型 名称 15-12 11-8 7-4 3-0 功能 操作个数 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 0 0 2 CZVS 第一类指令 算 逻 运 算 ADD SUB AND CMP OR MOV DEC INC SHL 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0100 0100 0100 0100 0100 0111 0111 0000 0001 0010 0011 0100 0111 1000 1001 1010 1011 0000 0100 0101 0110 0111 0000 0000 0010 Rg1 Rg1 Rg1 Rg1 Rg1 Rg1 Rg1 Rg1 Rg1 Rg1 Rg2 Rg2 Rg2 Rg2 Rg2 Rg2 0000 0000 0000 0000 Rg1<-Rg1+Rg2 Rg1<-Rg1-Rg2 Rg1<-Rg1andRg2 Rg1-Rg2 Rg1<-Rg1orRg2 Rg1<-Rg2 Rg1<-Rg1-1 Rg1<-Rg1+1 Rg1,C<-Rg1*2 Rg1,C<-Rg1/2 无条件跳转 C=1时跳转 C=0时跳转 Z=1时跳转 Z=0时跳转 C=0 C=1 Rg1<-[Rg2] **** **** **** **** **** …. **** **** *… *… …. …. …. …. …. 0… 1… …. 跳 转 指 令 SHR JMP JC JNC JZ JNZ 置位 CLC STC OFFSET OFFSET OFFSET OFFSET OFFSET 0000 0000 Rg1 0000 0000 Rg2 第二类指令 访 存 LDRR 1000 STRR 1000 0011 Rg1 Rg2 [Rg1]<-Rg2 2 …. MOVR 1000 0001 Rg1 0000 Rg1<-Data 1 ….
(*表示状态位在指令执行后会被重置?,.表示状态位在指令执行后不会被修改)
6
2.1.3相关指令流程图:
1.算术逻辑运算指令 2.访存指令
将参与运算的两个操作数分别放入ALU的A端和B端
ALU进行运算,结果存入暂
存器Y中
将指令中存储器地址经地址总线送入MAR当中,并把存储器读写使能端置为读
将寄存器中数据经数据总线送入MDA
将暂存器Y中结果经总线送
回指定寄存器
将存储器中数据送入MDR
将地址经地址总线送入MAR,并读写使能端为写
将MDR中数据经数据总线送入
寄存器
将MDR中数据存入存储器
3.访寄存器指令 4.跳转指令
将寄存器中操作数送入总线 将立即数经符号扩展后送入总线
取指令中立即数送入ALU的A端,将PC得值送入B端
将总线上的数送往寄存器
ALU完成加运算,将结果送到暂存器Y中
将Y中数据经数据总
线送入PC
7
2.1.4指令数据通路的构建:
1. 取指令数据通路的构建
取指令的微操作安排如下:
T0: PC? BUS ? MAR, PC ? BUS ? A, 1 ? READ T1: M(MAR) ? MDR?BUS?IR, ALU(A+2) ? Y T2: Y ? BUS ? PC, IR ? ID
数据通路如下:(再配合流程图来说明工作流程,说明每一个部件的功能;以下同) PC_IN IR_IN Y ALUOP ALU A_IN A B B_IN P C IR B U BUS_MUX MUX MAR_I MEM
2. 算逻指令执行周期数据通路构建 算逻指令执行周期微操作安排如下:
T0: $R2 ? BUS ? A T1: $R3 ? BUS ? B
T2: ALU(A ,B) ? Y? BUS ? $R1
S MAR MDR_IMDR 8
数据通路如下: IR RF Y RF_IN ALU ALUOP BU A_IN BUS_MUX A B B_IN S MUX
3访存指令执行周期数据通路构建
IR RF Y RF_IN ALU A BUS_MUX B B U S MUX MEM MAR MDR_IMDR
9
LDRR 指令执行周期的微操作安排如下: T0: Ad(IR) ? 扩位 ? BUS ? MAR, 1 ? READ T1: M(MAR) ? MDR T2: MDR ? BUS ? $R
STRR 指令执行周期的微操作安排如下: T0: $R ? BUS ? MDR
T1: Ad(IR) ? 扩位 ? BUS ? MAR, 1 ? WRITE T2:
4. 访寄存器组指令执行周期数据通路构建 访寄存器指令执行周期微操作安排如下: T0: $R2 ? BUS ? $R1 T1: T2:
数据通路如下:
IR
RF
BU
BUS_MUX
RF_IN
扩位
S
MUX
10
相关推荐: