计算机组成原理设计,计算机组成原理课程设计

1. 课程设计简介

综合运用所学的计算机组成原理知识,掌握计算机各条指令运行的过程,

设计并实现较为完整的计算机运算过程。设计并实现任意两个八位二进制数的原码一位乘法,实现带有符号位的运算。

2. 实验设备

TDN—CM+ 计算机组成原理实验教学系统一台, 排线若干。

3. 总体思路(1) 完成接线, 实现基本的复杂模型机

(2) 设计实现八位二进制数的原码一位乘法的汇编指令

(3) 运行并调试程序

4. 基本概念及原理

4.1 数据格式模型机规定采用定点补码表示法表示数据,且字长为8位,其格式如下:

2e0ad873f83a8e6707d3b17d63035ace.png

4.2 指令格式模型机设计四大类指令共十六条,其中包括算术逻辑指令、I/O指令、访问及转移指令和停机指令。

(1) 算数逻辑指令

设计9条算术逻辑指令并用单字节表示,寻址方式采用寄存器直接寻址,其格式如下:

4818d0933ec10c872d116713e3b9c4a9.png

其中,OP-CODE为操作码,rs为源寄存器,rd为目的寄存器,并规定:

6dfb2fe9a52131686cdc0a9c42b29f43.png

(2)访存指令及转移指令

模型机设计2条访存指令――存数(STA)和取数(LDA),2条转移指令指,即无条件转移指令(JMP)

和结果为零或有进位转移指令(BZC),指令格式为:

9df28a8da89a3848cd605d96898225f7.png

其中,OP-CODE为操作码,rd为目的寄存器地址(LDA、STA指令使用)。

D为偏移量(正负均可),M为寻址模式,其定义如下:

4a17465e845d4f040287adbefb4fc2d8.png

本模型机规定变址寄存器RI指定为寄存器R2

(3)I/O指令

输入(IN)和输出(OUT)指令采用单字节指令,其格式如下:

8ce5eb88779118d72c839b3e18eebfc8.png

其中,addr=01时,选中“INPUT DEVICE”中的开关组作为输入设备,

addr=10时,选中“OUTPUT DEVICE”中的数码块作为输出设备。

(4)停机指令

指令格式如下:

c2f3d51812ff08bc5a693bf4fe9d3d21.png

HALT指令用于实现停机操作.

4.3 指令系统本模型机共有16条基本指令,其中算术逻辑指令7条,访存指令和程序控制指令4条,

输入输出指令2条,其它指令1条,表列出了各条指令的格式、汇编符号、指令功能。

db9ff3edf0f5481e0c8352e32be72d9d.png

4.4 接线图

4da3d52e31062d31175e0f5887462d86.png

5. 总体流程

5.1 流程图

3caa7d88f9d0e246ea55aa8a2641d39c.png

实现过程:

(1)向寄存器R0中存入10000000,向寄存器R1中存入被乘数X,清零R2,将R0与R1中存入的X值进行与操作,

求得X的符号位,将X的符号位存入到F0H,将R1中存入的先左移再右移获得|X|(存入到F1H).

(2)同上面的操作取得Y的符号位(存入到F2H)和|Y|(存入到F3H)。

(3)将X和Y的符号位取异或操作,得到最终的符号位存入到F6H中

(4)输入移位循环次数到R0寄存器中,将R2清零,初始化部分积,保存到F7H中.

(5)清零cy,将乘数|Y|取出存到R1中,右移,判断最低位是0还是1.如果是0,则执行(6),如果是1,则执行(7).

(6)从F7H中取出部分积到R1中,从F3H中取出部分积到R2,然后右移部分积,右移|y|,

将结果有保存到相应的地址中.执行跳转指令,执行(9)

(7)取部分积到R1,取|X|到R2然后求部分积加|X|,结果保存到F7H中,然后将|y|右移并保存,清零R1,清零cy.

(8)将计数次数右移,判断是否循环结束,若结束则向下执行,若未结束则跳转到(5).

(9)将部分积与最终符号位相加.

(10)输出高八位R1,第八位R2,停机结束。

5.2 实现原码一位乘的微指令汇编指令 助记符 注释

$ P0044 IN 01,R0 输入10000000

$ P0145 IN 01,R1 输入x

$ P0272 CLR00,R2 清零R2

$ P03F5 RLC R1,R1 左移X,移出符号位

$ P04EA RRC R2,R2 右移R2,获得8位符号位

$ P0506 STA R2 将x符号位存到F0H

$ P06F0

$ P07EA RRC R2,R2 清零cy

$ P08E5 RRC R1,R1 右移x获得|x|

$ P0905 STA R1 存|x|到F1H

$ P0AF1 F1H

$ P0B45 IN 01,R1 输入y

$ P0CF5 RLC R1,R1 左移Y移出符号位

$ P0DEA RRC R2,R2 右移R2获得8位符号位

$ P0E06 STA R2 将Y符号位存到F2H

$ P0FF2 F2H

$ P10EA RRC R2,R2 清零cy

$ P11E5 RRC R1,R1 右移y获得|y|

$ P1205 STA R1 存|y|到F3H

$ P13F3 F3H

$ P1401 LDA R1 取x的符号位到R1

$ P15F0 F0H

$ P1602 LDA R2 取y的符号位到R2

$ P17F2 F2H

$ P18D4 COM R1,R0 求x的反

$ P19C8 AND R2,R0 求(x的反)和y的与

$ P1A04 STA R0 存(x的反)和y的与的结果到F4

$ P1BF4 F4H

$ P1CD8 COM R2,RO 求Y的反

$ P1DC4 AND R1,R0 求(Y的反)和X的与

$ P1E04 STA R0 存(Y的反)和X的与的结果到F5H

$ P1FF5 F5H

$ P2001 LDA R1 取(x的反)和y的与的结果到R1

$ P21F4 F4H

$ P2202 LDA R2 取(y的反)和x的与的结果到R2

$ P23F5 F5H

$ P2470 CLR R0 清零R0

$ P25E0 RRC R0,RO 清零cy

$ P2696 ADC R1,R2 获得最终的符号位

$ P2706 STA R2 存最终符号位到F6H

$ P28F6 F6H

$ P2944 IN 01,R0 输入移位次数

$ P2A72 CLR R2 清零R2

$ P2B06 STA R2 保存部分积到F7H

$ P2CF7 F7H

$ P2DEA RRC R2,R2 清零cy

$ P2E01 LDA R1 取|y|到R1

$ P2FF3 F3H

$ P30E5 RRC R1,R1 |Y|右移一位

$ P310C BZC 00,00 判断最低位是0还是1

$ P323F 3FH 跳转地址3FH

$ P3301 LDA R1 取部分积到R1

$ P34F7 F7H

$ P3502 LDA R2 取|y|到R2

$ P36F3 F3H

$ P37E5 RRC R1,R1 右移部分积

$ P38EA RRC R2,R2 右移|y|

$ P3905 STA R1 保存右移后的部分积到F7H

$ P3AF7 F7H

$ P3B06 STA R2 保存右移后的|y|到F3H

$ P3CF3 F3H

$ P3D08 JMP 00,00 跳转指令

$ P3E4E 4EH 跳转地址4EH

$ P3F01 LDA R1 取部分积到R1

$ P40F7 F7H

$ P4172 CLR R2 清零R2

$ P42EA RRC R2,R2 清零cy

$ P4302 LDA R2 取|x|到R2

$ P44F1 F1H

$ P4596 ADC R1,R2 求部分积加|x|

$ P46EA RRC R2,R2 右移相加后的部分积

$ P4706 STA R2 保存部分积到F7H

$ P48F7 F7H

$ P4902 LDA R2 取|y|到R2

$ P4AF3 F3H

$ P4BEA RRC R2,R2 右移|y|

$ P4C06 STA R2 保存右移后的|y|到F3H

$ P4DF3 F3H

$ P4E71 CLR R1 清零R1

$ P4FE5 RRC R1,R1 清零cy

$ P50E0 RRC R0,R0 右移计数次数

$ P510C BZC 00,00 判断循环是否结束

$ P5257 57H

$ P5371 CLR R1 清零R1

$ P54E5 RRC R1,R1 清零cy

$ P5508 JMP 00,00 跳转指令

$ P562F 2FH

$ P5701 LDA R1 取部分积到R1

$ P58F7 F7H

$ P5902 LDA R2 取最终符号到R2

$ P5AF6 F6H

$ P5B70 CLR R0 清零R0

$ P5CE0 RRC R0,R0 清零cy

$ P5D96 ADC R1,R2 求符号位加数值位

$ P5E5A OUT R2 输出高8位

$ P5F01 LDA R1 取出低八位到R1

$ P60F3 F3H

$ P6159 OUT R1 输出低八位

$ P6260 HALT 待机

6. 课设手稿

b60bdda2ecaf8f2f98d770773df8cfe1.png

4e556803211cc69ec87bc8b00d7ca212.png

e711e1de6631eade0916f160db94f014.png

67658067c5b2da39c53d673672a74413.png

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值