组成原理课设ADD

从外部输入4个无符号数,将前两个数相加,和存入内存30H单元;后两个数相减,差存入内存31H单元。并将两个结果分别输出

STO Rs,Addr为双字节指令,格式为:

双字节指令寄存器
第1字节0011 Rs xx
第2字节Addr

目标码

存储地址二进制机器码十六进制汇编代码注 释
00H1000 xx 0080HIN R0将值输入到R0寄存器
01H1000 xx 0181HIN R1将值输入到R1寄存器
02H1010 00 01A1HADD R0,R1R0和R1相加,放在R1
03H0011 01 xx34HSTO R1,30H将R1里的值存入30H
04H0011 00 0030HSTO R1,30H将R1里的值存入30H
05H1011 xx 01B1HOUT R1将R1的值输出
06H1000 xx 0080HIN R0将值输入到R0寄存器
07H1000 xx 0181HIN R1将值输入到R1寄存器
08H0110 xx 0161HSUB R0,R1R0减R1,结果放在R1上
09H0011 01 xx34HSTO R1,31H将R1里的值存在31H
0AH0011 00 0131HSTO R1,31H将R1里的值存在31H
0BH1011 xx 01B1HOUT R0将R1的值输出

RAM中分布:

01234567
0080H81HA1H34H30HB1H80H81H
08E1H34H31HB1H
10
18
20
28

概要设计

1、 定义题目所需指令

ADD 操作码:1010
SUB 操作码:0110
STO 操作码:0011
公操作:IN指令和OUT指令

2、 微指令对应微操作

第1步:分析一条微指令的作用,以及所需要微操作的步骤;
第2步:根据查看设计指南中24位微代码格式,找到S3S0、M、Cn、WE、A9、A8、uA0uA5和A、B、C字段所对应的功能码;
第3步:微操作执行完则转公操作。

3、 指令与微指令的调用关系

一条指令是由一段微程序完成的.微程序中一般包含多条微指令.本题中的ADD指令由三条微指令构成,第一条微指令是把源寄存器中的数放到DR1中,第二条微指令把目的寄存器的值放到DR2中,第三条微指令把DR1和DR2中的值进行计算输出到总线上。STO指令也由三条微指令构成,第一条微指令是把程序计数器的值打到总线上,再把将总线上的数据装载到AR中同时PC+1。第二条微指令读RAM同时把总线上的数据装载到AR中。第三条微指令写RAM,将寄存器里的值写到总线上,将总线上的值写到目标地址中。SUB指令同ADD指令,不同之处就是第三条微指令中是进行的减操作。

详细设计

1、 加(ADD)

指令格式:ADD Rs,Rd
1010 00 01
入口地址计算:
I7~I4=1010 → SE4~SE1=1101,对基准初值010000进行逻辑运算 → 010010
入口地址:12H
需要的微命令:
第1步:将Rs的值打到DR2
命令:RS_B (B段:001)→ LDDR2(A段:010)
第一条微指令: 01A21A,存储在入口地址12H单元中
第2步:将Rd的值打到DR2
命令:RD_d (B段:010)→ LDDR2(A段:011)
第二条微指令: 01B422,存储在24H单元
第3步:相加 → ALU_B → LADRi
命令:S3S2S1S0MCn = 100100 → ALU_B(B段:101)→ LDRi(A段:001)
第三条微指令: 919A01,存储在2CH单元

详细设计方案以上传。https://download.youkuaiyun.com/download/qq_42024234/11833132

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值