计算机组成原理34.docx
《计算机组成原理34.docx》由会员分享,可在线阅读,更多相关《计算机组成原理34.docx(20页珍藏版)》请在冰点文库上搜索。
计算机组成原理34
计算机组成原理(3.4)
课程设计报告
计算机组成与系统结构课程设计
学号:
201140030224
学生姓名王丹
专业:
计算机应用技术
班级1140302
指导教师王强
2012年6月26日
实验题目
1编写程序将11H、12H、……、1FH等数存入从11H开始到1FH的连续存储空间,然后将这些数按相反的顺序存储到从21H开始到2FH的连续存储空间中。
2采用模型机指令系统编写程序完成1到5的阶乘之和,将结果存放在指定的寄存器中。
3,给R0、R1、R2、R3各赋一初值,然后对它们进行一系列算术/逻辑运算,观察各寄存器的变化情况
4,给R0、R1、R2、R3各赋一初值,然后对它们同立即数进行一系列算术/逻辑运算,观察各寄存器的变化情况。
5,给R0、R1、R2、R3各赋一初值,然后对它们进行一系列移位循环操作,观察各寄存器的变化情况。
实验目的
1、熟悉本模型机的指令系统,理解各条指令的功能和用途。
2、打开实验例程,熟悉软件操作,根据程序执行流程观察寄存器和存储器单元的变化情况,连接串行口连通模型机,观察模型机中数据流向和程序执行的同步情况。
3、利用本模型机的指令系统,自行编制一些小的程序,调试并运行。
实验时间
2012年6月24日到2012年6月26日
实验地点:
信工楼309
实验装置
硬件装置
实验装置是为计算机组成原理的工作流程专门设计的。
它能够让学生通过手动和自动的操作弄清和掌握计算机工作的基本原理。
实验模块由手动实验部分和程序实验部分组成。
手动实验主要完成计算机各个组成部分的原理实验,包括数据流程、运算器执行、存储器和外设之间的数据交换等部分,通过组合变化各个输入信号,进一步理解计算机各个部件的执行过程和工作原理,手动实验在本指导书的前面部分已经作了详细介绍。
程序实验主要完成指令系统中每条指令的具体执行,包括取指、译码、执行过程中对应微指令的工作流程,并且还能观察各类指令执行的结果。
操作过程在计算机上进行,可实现单拍、单步和连续执行,每个执行过程可以在计算机上显示,其执行结果和过程也可同步在实验板上显示,进一步观察对应指令在执行过程中的每个控制信号和数据流向。
程序实验主要包括:
数据传输程序
各种运算程序
控制转移程序
数码转换程序
软件装置
软件系统由编辑程序、编译程序、程序执行、调式程序几个部分组成,完成由源程序输入、语法分析排错、指令汇编、应用程序调试的全过程。
图1软件系统主窗口界面
软件使用说明
界面说明
图2界面说明标识
软件系统采用集成化的窗口,各种软件功能分类设置在程序中,软件系统的主窗口界面如上图所示,现将界面各组成部位说明如下:
1——寄存器在程序执行过程中,观察各寄存器的值
2——存储器在程序执行过程中,观察各存储器的值
3——信息显示当前指令对应的微程序
4——编辑源程序从汇编状态或运行状态返回到编辑源程序状态
5——汇编对编辑好的源程序进行汇编连接
6——程序复位让程序指针指向程序的第一条指令
7——运行运行已通过汇编连接的程序
8——停止停止程序的运行
9——单步单步运行程序(逐条指令执行)
10——单拍单拍运行程序(逐条微指令执行)
11——设置/取消断点设置/取消断点,调试程序时用
12——连接/断开串行口连接/断开串行口,连通/断开程序和模型机通信
13——源程序编辑区在该区域内编辑源程序
(二)编辑程序
编辑源程序采用文本的编辑方式,按照给定的模型机指令系统,用汇编语言格式编辑程序,对所编辑的程序进行语法分析,纠错处理。
编辑程序主要实现如下的操作流程:
图3编辑源程序流程
图4新建编辑窗口
(三)汇编程序
汇编程序先对源程序进行语法检查,排除源程序中的语法错误,再将源程序编译为机器码,在调试的窗口中显示指令行、机器码、助记符等信息。
图5汇编出错提示信息
图6内存地址、助记符和机器码
(四)运行方式
程序的运行有单拍、单步和连续执行三种方式。
单拍方式:
单拍方式是逐条执行微程序中的微指令,屏幕显示信息(微指令、积存器和存储器状态)与实验板显示信息(微指令对应的数据流向以及相应的控制信号)互相配合,可以将单拍微指令执行的结果从不同角度显示出来,以便观察。
单步方式:
单步方式是一条一条指令执行的过程,每条指令执行后,将内存和寄存器中的变化显示出来。
连续执行:
连续执行将一段程序执行的功能表现出来,在连续执行调试中可以采用设置断点的方法,分模块或分段地进行程序调试。
跟踪调试
程序执行的调试方法可按调试的目的考虑,一般有以下几种情况:
(1)为了掌握一般指令执行过程。
采用单拍和单步,结合实验板观察有关的变化。
图7单拍或单步运行
(2)为观察寄存器的变化。
采用单步和连续执行,打开寄存器窗口观察寄存器变化。
图8观察寄存器变化
(3)为了观察内存的变化。
采用单步和连续执行,打开内存窗口观察内存变化。
图9观察存储器变化
(4)为了调试一段条件转移程序。
可以在不同转移目标点设置断点,观察其转移情况。
图10设置断点
部分参考指令系统
(一)模型机指令系统
序号
类型
汇编助记符
指令格式
指令
状态位
注释
操作码
源
目
第二字节
长度
1
算逻运算一类
ADDRD,RS
0001
RS
RD
1
Z,C,E,V,N
RD←(RD)+(RS)
2
ADCRD,RS
0010
RS
RD
1
Z,C,E,V,N
RD←(RD)+(RS)+CY
3
SUBRD,RS
0011
RS
RD
1
Z,C,E,V,N
RD←(RD)-(RS)
4
SBCRD,RS
0100
RS
RD
1
Z,C,E,V,N
RD←(RD)-(RS)-CY
5
MULRD,RS
0101
RS
RD
1
Z,C,E,V,N
RD←(RD)*(RS)
6
ANDRD,RS
0110
RS
RD
1
Z
RD←(RD)and(RS)
7
ORRD,RS
0111
RS
RD
1
Z
RD←(RD)or(RS)
8
9
算逻运算二类
ADDRD,#IMM
101000
#IMM
RD
#IMM
2
Z,C,E,V,N
RD←(RD)+#IMM
10
ADCRD,#IMM
101001
#IMM
RD
#IMM
2
Z,C,E,V,N
RD←(RD)+#IMM+CY
11
SUBRD,#IMM
101010
#IMM
RD
#IMM
2
Z,C,E,V,N
RD←(RD)-#IMM
12
SBCRD,#IMM
101011
#IMM
RD
#IMM
2
Z,C,E,V,N
RD←(RD)-#IMM-CY
13
CMPRD,#IMM
101100
#IMM
RD
#IMM
2
Z,C,E,V,N
PWS←(RD)-#IMM,比较不改变寄存器
14
ANDRD,#IMM
101101
#IMM
RD
#IMM
2
Z
RD←(RD)AND#IMM
15
ORRD,#IMM
101110
#IMM
RD
#IMM
2
Z
RD←(RD)OR#IMM
16
MOVRD,#IMM
101111
#IMM
RD
#IMM
2
Z
RD<-#IMM
17
18
移位循环三类
SRRRD
100000
RD
1
Z,C
右一位,带进位位循环
19
SRLRD
100001
RD
1
Z,C
左一位,带进位位
20
CLRRD
100010
RD
1
Z
清零
21
COMRD
100011
RD
1
Z,C
取反操作
22
INCRD
100100
RD
1
Z
RD←RD+1
23
DECRD
100101
RD
1
Z
RD←RD-1
24
25
26
传数类指令四类
LDRD,MEM
110000
RD
MEM
2
直接寻址,RD←MEM
27
STMEM,RS
110010
RS
MEM
1
直接寻址,MEM←RS
28
LDRD,(MEM)
110001
RD
[MEM]
2
间接寻址,RD←(MEM)
29
ST(MEM),RS
110011
RS
[MEM]
2
间接寻址,(MEM)←RS
30
INRD,PORT
110100
RD
PORT
2
将数据输入接口输入到RD
31
OUTPORT,RS
110101
RS
PORT
2
将RS数据输出到数据接口
32
MOVRD,RS
110110
RD
R0
1
寄存器寻址,RD←(R0)
33
34
转移类指令五类
JNZADDR
11101000
ADDR
2
结果不为零,转移
35
JZADDR
11101001
ADDR
2
结果为零,转移
36
JNCADDR
11101010
ADDR
2
进位不为零,转移
37
JCADDR
11101011
ADDR
2
进位为零,转移
38
JNEADDR
11101100
ADDR
2
不等,转移
39
JEADDR
11101101
ADDR
2
相等,转移
40
JOADDR
11100110
ADDR
2
溢出,转移
41
JNOADDR
11100111
ADDR
2
溢出,转移
42
43
JMPADDR
11110001
ADDR
2
转移
44
其它
45
46
NOP
11110100
空操作
47
48
49
HALT
11111111
停机操作
代码
Exmp1.asm
movr0,#16
movdptr,#11H
movxa,@dptr
mov11H,agetdat:
movr0,#16
movdptr,#11H
movxa,@dptr
mov11H,a
mov1FH,a
incdptr
loop:
movxa,@dptr
cjnea,11H,maxcmp
maxcmp:
jcmincmp
mov11H,a
mincmp:
cjnea,11h,mincmp1
mincmp1:
jnccmpend
mov1FH,a
mincmp1:
incdptr
incr0
djnzr0,loop
ret
mov1FH,a
incdptr
loop:
movxa,@dptr
cjnea,11H,maxcmp
maxcmp:
jcmincmp
mov11H,a
mincmp:
cjnea,1FH,mincmp1
mincmp1:
jnccmpend
mov1FH,a
mincmp1:
incdptr
incr0
djnzr0,loop
ret
结果如图:
Exmp2.asm
MOVAH,00H;ah清零
MOVS,1;s初值为0
pa1:
SUBAL,30H;ASCII码转化成十进制数据表示
MOVBX,AX;保存输入数据于BH中
MOVCX,AX;循环次数存于CX
DECCX;做阶乘
pa2:
MULCX
LOOPpa2;求和
pa3:
ADDS,AX;计算结果存于S
DECBX
CMPBX,0
JEPART4
MOVCX,AX
CMPCX,0
JNEpa2
实验截图
Exmp3.asm
MOVR0,#05H
MOVR1,#06H
MOVR2,#07H
MOVR3,#08H
ADDR1,R0
SUBR1,R2
MULR2,R3
ANDR3,R1
ORR2,R0
L1:
JMPL1
Exmp4.asm
MOVR0,#0FEH
MOVR1,#06H
MOVR2,#07H
MOVR3,#08H
ADDR0,#05H
ADCR3,R2
SUBR3,#02H
ANDR3,#66H
ORR1,#0F9H
L1:
JMPL1
Exmp5.asm
MOVR0,#05H
MOVR1,#06H
MOVR2,#07H
MOVR3,#08H
SRRR0
SRLR1
CLRR2
COMR3
INCR2
DECR1
L1:
JMPL1
实验小结
(1)通过这个实验,我掌握了带进位控制的算术运算功能发生器的功能,掌握了按指定的数据完成几种指定的算术运算。
而且真切地知道了实验真得很需要耐心和细心,特别是这个实验要在操作前先对进位标志清零,否则整个实验就全部失败了。
(2)在之前的实验基础上,对一些实验出现的问题及时向老师请教了。
所以这个实验进行得比较顺利