计算机组成原理课程设计

1. 课程设计简介

综合运用所学的计算机组成原理知识,掌握计算机各条指令运行的过程,
设计并实现较为完整的计算机运算过程。设计并实现任意两个八位二进制数的原码一位乘法,实现带有符号位的运算。

2. 实验设备

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

3. 总体思路

(1) 完成接线, 实现基本的复杂模型机
(2) 设计实现八位二进制数的原码一位乘法的汇编指令
(3) 运行并调试程序

4. 基本概念及原理

4.1 数据格式

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

4.2 指令格式

模型机设计四大类指令共十六条,其中包括算术逻辑指令、I/O指令、访问及转移指令和停机指令。        
(1) 算数逻辑指令
    设计9条算术逻辑指令并用单字节表示,寻址方式采用寄存器直接寻址,其格式如下:

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

(2)访存指令及转移指令
     模型机设计2条访存指令――存数(STA)和取数(LDA),2条转移指令指,即无条件转移指令(JMP)
     和结果为零或有进位转移指令(BZC),指令格式为:

     其中,OP-CODE为操作码,rd为目的寄存器地址(LDA、STA指令使用)。
     D为偏移量(正负均可),M为寻址模式,其定义如下:

     本模型机规定变址寄存器RI指定为寄存器R2
(3)I/O指令
     输入(IN)和输出(OUT)指令采用单字节指令,其格式如下:

     其中,addr=01时,选中“INPUT DEVICE”中的开关组作为输入设备,
     addr=10时,选中“OUTPUT DEVICE”中的数码块作为输出设备。

(4)停机指令
     指令格式如下:

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

4.3 指令系统

本模型机共有16条基本指令,其中算术逻辑指令7条,访存指令和程序控制指令4条,
输入输出指令2条,其它指令1条,表列出了各条指令的格式、汇编符号、指令功能。

4.4 接线图


5. 总体流程

5.1 流程图

实现过程:
(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. 课设手稿





Previous
数据库三级项目(电影院管理系统) 数据库三级项目(电影院管理系统)
1.项目要求以一定的应用环境为背景,运用《数据库原理及应用》课程所学的关系数据库设计理论, 设计一个小型数据库应用系统,自选一种数据库管理系统,如MySQL、SQL Server 等, 并选用VB、VC++、JAVA、.NET、JSP、AS
2018-08-12
Next
操作系统课设(多道程序缓冲区协调操作) 操作系统课设(多道程序缓冲区协调操作)
项目开发大致流程 ( 多道程序缓冲区协调操作 )1. 项目概述 2. 项目要求 3. 总体设计 4. 结果演示 5. 项目配置 6. 项目源代码 1. 项目概述 文字描述
2018-07-29
目录