计算机组成原理与汇编实验报告

时间:2024.5.13

计算机组成原理与汇编实验报告

计算机组成原理与汇

编课程设计

实验报告

学 院: 信息科学与工程学院

专业班级: 信息安全1301班

指导老师: 何小贤

学 号: 0906130119

姓 名: 田泽佳

目录

一、课程设计目标………………………………………………………3

二、课程设计基本要求…………………………………………………3

三、课程设计的内容……………………………………………………3

四、课程设计的要求……………………………………………………5

五、实验详细设计………………………………………………………5

1. 统计文件中各字母出现的频率…………………………5

2. 用递归计算50以内Fibonacci 数, 以十进制数输出…9

3.虚拟平台模拟机实验……………………………………11

六、使用说明…………………………………………………………19

七、总结与心得体会……………………………………………………19

八、参考文献…………………………………………………………20

九、附录………………………………………………………………20

1. 字符统计.asm……………………………………………20

2. 斐波那契数(小于50).asm………………………………29

- 2 -

一、 课程设计目标

通过课程设计使学生综合运用所学过的计算机原理与汇编知识,增强解决实际问题的能力,加深对所学知识的理解与掌握,提高软硬件开发水平,为今后打下基础。

课程设计的目的和要求:

1、使学生巩固和加强《计算机原理与汇编语言》课程的基本理论知识。

2、使学生掌握汇编语言程序设计的方法及编程技巧,正确编写程序。

3、使学生养成良好的编程习惯并掌握调试程序的基本方法。

4、使学生养成规范书写报告文档的能力,撰写课程设计总结报告。

5、通过查阅手册和文献资料,培养学生独立分析问题和解决问题的能力。

二、课程设计的基本要求

1、认真查阅资料,独立完成设计任务,每道题都必须上机通过。

2、编写预习报告,写好代码,上机调试。

3、独立思考,培养综合分析问题解决问题和调试程序的能力。

4、按时完成课程设计,写出课程设计报告。

三、课程设计的内容

1、给定一个英文ASCII码文件,统计文件中英文字母的频率,以十进制形式输出。

2、用递归计算50以内Fibonacci 数, 以十进制数输出.

3、虚拟平台的模型机实验,具体要求如下:

1) 选择实验设备,将所需要的组件从组件列表中拖到实验设计流程栏中

2) 搭建实验流程:根据原理图1和电路图(见附件),将已选择的组件进行连线。

3) 输入机器指令:选择菜单中的“工具”,再选择“模型机调试”,在指令输入窗口中输入如下指令:

00000000

00010000

00001001

00100000

00001011

00110000

- 3 -

00001011 01000000 00000000 00000001

本实验设计机器指令程序如下:

计算机组成原理与汇编实验报告

4) 这里做的是个加法运算,第一个加数已经存入到内存的0000 1010单元

中,第二个加数是需要手工输入的。在实验运行面板中点击“运行”按钮,选择“输入”芯片,设置输入的数据后,双击连接“输入”芯片的单脉冲,这样第二个加数就设置好了。

5) 在实验运行面板中双击连续脉冲,模型机便开始工作,观察各个芯片的状

态。或者在模型机调试窗口中(如图2所示)点击“指令执行”选项卡,在模型机调试窗口中点击“下一时钟”,模型机机执行到下一个时钟,点击“下一微指令”,模型机机执行到下一个微指令,点击“下一指令”,模型机机执行到下一条指令。观察各个芯片的状态,思考模型机的运行原理。

- 4 -

四、课程设计的要求

1、根据题目内容,查阅资料。

2、编写课程设计预习报告。

3、编制程序及调试程序。

4、分析总结,写出课程设计报告,报告中应该包含程序功能与使用说明、程序功能实现方法说明、如流程图与算法参数说明等内容,设计经验体会总结,源程序清单。

5、实验过程由指导老师监督,听从老师安排和督导。

6、每次任务完成后由指导老师逐个的检查实验内容、结果并评分,不符合要求的重写

五、实验详细设计

1)统计文件中各字母出现的频率

一、实验原理

在程序中,以是否读到ASCII码为0作为字符串末尾结束的标志;读取文件,并对文件中的字符串进行逻辑判断(不同字母之间各自对应的ASCII码),统计字符数。

二、 实验目的

经过该实验知道如何通过编写汇编程序读取文件并且读取文件中内容;通过分支程序设计来统计字符数,

三、实验设计内容

读取文件代码段:

MOV AX,DATAS

MOV DS,AX ;置数据段寄存器 ;

MOV DX,OFFSET FNAME

MOV AX,3D00H ;读打开指定文件 INT 21H

JNC OPEN ;打开成功,转 OPEN MOV SI,OFFSET ERROR1 ;显示打开不成功提示信息 CALL DMESS

JMP OVER

- 5 -

;

OPEN:

MOV BX,AX ;保存文件代号

GO: CALL READ_CHAR ;从文件中读一个字符 JC READ_ERROR ;如读出错,则转

CMP AL,EOF ;读到文件结束符吗? JZ TYPE_OK

CALL PUTCH

JMP GO

将文件内容推入栈中,并输出:

READ_CHAR PROC

MOV CX,1

MOV DX,OFFSET BUFFER ;置缓冲区地址 MOV AH,3FH ;置功能调用号 INT

21H ;读

JC R2 ;读出错,转 CMP AX,CX ;判断文件是否结束 MOV AL,EOF ;若文件已经结束,置文件结束符 JB R1 ;文件确定已经结束,转到 MOV AL,BUFFER ;文件未结束,取所读字符 R1:CLC

R2:RET

READ_CHAR ENDP

;

DMESS PROC

DMESS1:MOV DL,[SI]

INC SI

OR DL,DL

- 6 -

JZ DMESS2

MOV AH,2

INT 21H

JMP DMESS1

DMESS2:RET

DMESS ENDP

PUTCH PROC

PUSH DX

MOV DL,AL

MOV AH,2

INT 21H

POP DX

文件主体部分(对所读字符ASCII码进行比较判断并统计字符数): mov CL,41H

LEA DI,ARRAY

MOV CH,AL

CMP CH,CL ;若IF<41H(A),OTHERS++ JB OTHER

CMP CH,5AH ;若IF>5AH(Z),跳转继续比较 JA HIGHER2

H1:

CMP CH,CL

JE CHAR ;若IF=41H(A),CHAR[0]++

JA LOOP1 ; 若IF>41H(A),跳L1比较42H(B)

LOOP1:

INC CL

ADD DI,1

- 7 -

JMP H1

HIGHER2:

mov CL,61H LEA DI,ARRAY

CMP CH,CL JB OTHER

CMP CH,7AH ; JA OTHER

H2:

CMP CH,CL

JE CHAR JA LOOP2

LOOP2:

INC CL ADD DI,1 JMP H2

CHAR:

XOR CH,CH

MOV CH,[DI] INC CH

mov [DI],CH 若IF<61H(A),OTHERS++ 若IF>7AH(Z),跳转继续比较 若IF=61H(a),CHAR[0]++ 若IF>61H(a),跳L02比较62H(b) - 8 - ;;;

OTHER:

INC OTHERS ;OTHERS++

;比较结束

四、实验截图

2)用递归计算50以内Fibonacci 数, 以十进制数输出

一、实验目的

通过该实验充分了解递归程序的用法

二、实验内容

计算机组成原理与汇编实验报告

- 9 -

三、实验设计内容

循环递归代码段(主要实现递归调用斐波那契函数) MOV AX,F1 ;ax=0

ADD AX,F2 ;ax=1

JC EXIT ;若有进位则跳出

MOV BX,F2 ;bx=1

MOV F1,BX ;f1=1

MOV F2,AX ;f2=1

CALL OUTPUT ;调用output

MOV DL,' ' ;每个数字后的空格

MOV AH,2

INT 21H

DEC N

JNZ LP

EXIT:

MOV AH,4CH

INT 21H ;返回DOS

输出斐波那契数:

OUTPUT:

MOV BX,10

MOV CX,0

OL1:MOV DX,0

DIV BX ;ax=0,dx=1

ADD DL,'0' ;加上30h,使数字3变成字符3 PUSH DX

INC CX ;CX=0,每次加1

CMP AX,0 ;比较ax=1和0

JNZ OL1

MOV AH,2 ;字符输出,要输出的字符已经在dl中 OL2:

POP DX

INT 21H

LOOP OL2

RET

四、实验结果

- 10 -

3)虚拟平台的模型机实验设计

1、 实验目的

1) 掌握模型机的基本原理和结构

2) 掌握机器指令与微程序的对应关系;

3) 掌握机器指令的执行流程;

2、 实验设备

74LS181芯片两片,memory 6116一片,微程序控制存储器芯片一片,编译器芯片一片,八位同步计数器芯片一片,ALU_G芯片一片,PC_G芯片一片,74LS273

计算机组成原理与汇编实验报告

- 11 -

芯片若干,输入,输出芯片各一片,选择器芯片若干,连接器芯片若干,灯泡若干,开关若干等。

3、环境

组成原理虚拟实验室采用的是B/S架构,在客户端电脑上的浏览器地址栏中输入正确的地址进行访问即可。网址为http://192.168.1.252/pco/Entry.html。 4、实验原理

计算机组成原理与汇编实验报告

图1 模型机示意图

图1中所示模型机包括运算器、存储器、微控器、输入设备、输出设备以及寄存器。这些部件的动作控制信号都有微控器根据微指令产生。需要特别说明的是由机器指令构成的程序存放在存储器中,而每条机器指令对应的微程序存储在微控器中的存储器中。模型机详细原理见附件。 5、实验内容

1)选择实验设备,将所需要的组件从组件列表中拖到实验设计流程栏中 2)搭建实验流程:根据原理图1和电路图(见附件),将已选择的组件进行连线。

- 12 -

3)输入机器指令:选择菜单中的“工具”,再选择“模型机调试”,在指令输入窗口中输入如下指令: 00000000 00010000 00001001 00100000 00001011 00110000 00001011 01000000 00000000 00000001

本实验设计机器指令程序如下:

计算机组成原理与汇编实验报告

4)这里做的是个加法运算,第一个加数已经存入到内存的0000 1010单元

中,第二个加数是需要手工输入的。在实验运行面板中点击“运行”按钮,选择“输入”芯片,设置输入的数据后,双击连接“输入”芯片的单脉冲,这样第二个加数就设置好了。

5)在实验运行面板中双击连续脉冲,模型机便开始工作,观察各个芯片的状

态。或者在模型机调试窗口中(如图2所示)点击“指令执行”选项卡,在模型机调试窗口中点击“下一时钟”,模型机机执行到下一个时钟,点击“下一微指令”,模型机机执行到下一个微指令,点击“下一指令”,模型机机执行到下一条指令。观察各个芯片的状态,思考模型机的运行

- 13 -

原理。

计算机组成原理与汇编实验报告

图2 模型机调试窗口

6、具体过程实现

(1) 控制器把PC中的指令地址送往地址寄存器AR,并发出读命令。存储器按给

定的地址读出指令,经由存储器数据寄存器MDR送往控制器,保存在指令寄存器IR中。

(2) 指令译码器ID对指令寄存器IR中的指令进行译码,分析指令的操作性质,

并由控制电路向存储器、运算器等有关部件发出指令所需要的微命令。

(3) 当需要由存储器向运算器提供数据时,控制器根据指令的地址部分,形成

数据所在的存储单元地址,并送往地址寄存器AR,然后向存储器发出读命令,从存储器中读出的数据经由存储器数据寄存器MDR送往运算器。

(4) 当需要由运算器向存储器写入数据时,控制器根据指令的地址部分,形成

数据所在的存储单元地址,并送往存储器地址寄存器AR,再将欲写的数据存入存储器数据寄存器MDR,最后向存储器发出写命令,MDR中的数据即被写入由MAR指示地址的存储单元中。

(5) 一条指令执行完毕后,控制器就要接着执行下一条指令。为了把下一条指

令从存储器中取出,通常控制器把PC的内容加上一个数值,形成下一条指令的地址,但在遇到“转移”指令时,控制器则把“转移地址”送入PC。 - 14 -

控制器不断重复上述过程的(1)到(5),每重复一次,就执行了一条指令,直到整个程序执行完毕

7、设计结果截图

虚拟实验室连线截图:

计算机组成原理与汇编实验报告

执行第一个指令:

- 15 -

执行第二个指令:

计算机组成原理与汇编实验报告

计算机组成原理与汇编实验报告

- 16 -

执行第三个指令:

计算机组成原理与汇编实验报告

执行第四个指令:

.

- 17 -

执行第五个指令

计算机组成原理与汇编实验报告

:

计算机组成原理与汇编实验报告

- 18 -

执行第六个指令:

计算机组成原理与汇编实验报告

六、使用说明

两个程序使用汇编语言在“Masm for Windows集成实验环境”下编写,在MS-DOS模拟平台下运行。使用情况如详细设计所述。

七、总结与心得体会

为期两周的计算机组成原理与汇编课程设计就结束了,在这段时间呢,完成了诸多实验题目,解决了许多问题,包括计算机组成与那里和汇编语言。在充实而忙碌的课程设计同时,最重要的还是巩固并进一步学习了像组成原理和汇编这样更接近低层的软硬件知识,而不再是仅仅局限于像C、C++或是Java这样的高级语言开发。

理论学习只是一个学习初期阶段,只有经过了亲身实践操作,才能叫是真正掌握了知识技能。就像是这个学期的课程设计初期一样,初次开始汇编课设,我对汇编并不是十分了解,只是简简单单懂得几句语言而已或者说只会读懂程序,做几个题而已。至于如何将它们拼凑到一起组成一个实现一定功能的完整程序,成了我面前巨大的障碍,所以刚开始时,我也是束手无策,毫无头绪。但是通过对教材的复习,查阅相关文献和网络资料,我慢慢懂得并熟悉了这个过程。

课程设计完了之后,我才真切意识到,低级的东西并不十分简单,恰恰相 - 19 -

反,没有艰辛的付出,没有刻苦的努力,任谁也永远不能攻克它。

八、参考文献

[1].Patric Juola.《计算机组成与汇编语言原理》.机械工业出版社

[2].沈美明.《IBM-PC汇编语言程序设计》.清华大学出版社

[3].唐朔飞.《计算机组成原理》.高等教育出版社

九、附录

1、字符统计.asm:

DATAS SEGMENT

FNAME DB 'TEST.TXT',0 ;文件名

ERROR1 DB 'File not found',07H,0 ;提示信息

ERROR2 DB 'Reading error',07H,0

STRING1 DB 'Number of $' ;各类字符提示信息 STRING2 DB ': $'

ARRAY DB 26 DUP(0) ;字母

OTHERS DB 0 ;其他

BUFFER DB ?

EOF DB 035 ;以#结

束 ;1字节的缓冲区、

DATAS ENDS

;代码段

- 20 -

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS

START:

MOV AX,DATAS

MOV DS,AX ;

MOV DX,OFFSET FNAME

MOV AX,3D00H INT 21H

JNC OPEN MOV SI,OFFSET ERROR1 CALL DMESS

JMP OVER

;

OPEN:

MOV BX,AX

GO: CALL READ_CHAR JC READ_ERROR CMP AL,EOF JZ TYPE_OK

CALL PUTCH

JMP GO

READ_ERROR:MOV SI,OFFSET ERROR2

;置数据段寄存器 ;读打开指定文件 ;打开成功,转 OPEN ;显示打开不成功提示信息 ;保存文件代号 ;从文件中读一个字符;如读出错,则转 ;读到文件结束符吗? - 21 -

CALL DMESS

;

TYPE_OK:MOV AH,3EH

INT 21H

CALL ENDLINE

CALL SHOW

OVER: MOV AH,07;为了显示

INT 21H ;为了显示

MOV AH,4CH

INT 21H

;

READ_CHAR PROC

MOV CX,1

MOV DX,OFFSET BUFFER

MOV AH,3FH 功能调用号

INT

21H

JC R2 转

CMP AX,CX 文件是否结束

- 22 - ;置缓冲区地址 ;置读 ;读出错,;判;

MOV AL,EOF ;设文件已经结束,置文件结束符

JB R1 ;文件确已结束,转

MOV AL,BUFFER ;文件未结束,取所读字符

R1:CLC

R2:RET

READ_CHAR ENDP

;

DMESS PROC

DMESS1:MOV DL,[SI]

INC SI

OR DL,DL

JZ DMESS2

MOV AH,2

INT 21H

JMP DMESS1

DMESS2:RET

DMESS ENDP

PUTCH PROC

PUSH DX

- 23 -

MOV DL,AL

MOV AH,2

INT 21H

POP DX

mov CL,41H

LEA DI,ARRAY

MOV CH,AL

CMP CH,CL ;若IF<41H(A),OTHERS++ JB OTHER

CMP CH,5AH ;若IF>5AH(Z),跳转继续比较 JA HIGHER2

H1:

CMP CH,CL

JE CHAR ;若IF=41H(A),CHAR[0]++

JA LOOP1 ; 若IF>41H(A),跳L1比较42H(B)

LOOP1:

INC CL

ADD DI,1

JMP H1

- 24 -

HIGHER2:

mov CL,61H LEA DI,ARRAY

CMP CH,CL JB OTHER

CMP CH,7AH JA OTHER

H2:

CMP CH,CL

JE CHAR JA LOOP2

LOOP2:

INC CL ADD DI,1 JMP H2

CHAR:

若IF<61H(A),OTHERS++ 若IF>7AH(Z),跳转继续比较 若IF=61H(a),CHAR[0]++ 若IF>61H(a),跳L02比较62H(b) - 25 - ;;;;

XOR CH,CH

MOV CH,[DI]

INC CH

mov [DI],CH

OTHER:

INC OTHERS ;OTHERS++ ;比较结束

RET

PUTCH ENDP

SHOW PROC

LEA SI,ARRAY

MOV DI,41H

LOOP3:

LEA DX,STRING1 ;字符串的输出Number of MOV AH,09H

INT 21H

MOV DX,DI

- 26 -

MOV AH,02H

INT 21H

LEA DX, STRING2 ;字符串的输出

MOV AH,09H

INT 21H

XOR AX,AX

MOV Al,[SI] ;将统计的数字送AX

ADD SI,1

CALL DISPLAY ;调用输出两位数字的子程序 CALL ENDLINE

INC DI

CMP DI,5BH

JB LOOP3

MOV AH,4CH

INT 21H

RET

SHOW ENDP

ENDLINE PROC NEAR;控制输出格式,输出回车换行子程序 MOV AH,02H

MOV DL,0AH

; INT 21H ;输出换行符

- 27 -

MOV AH,02H

MOV DL,0DH

; INT 21H ;输出回车符

RET

ENDLINE ENDP

DISPLAY PROC NEAR;输出两位数字的子程序(输出两位数字为十进制) MOV BL,10

DIV BL ;AX/BL,AL=商,AH=余数

PUSH AX ;保存AX中的信息

MOV DL,AL

ADD DL,30H

MOV AH,02H

INT 21H ;输出十位数

POP AX ;出栈送AX

MOV DL,AH

ADD DL,30H

MOV AH,02H

INT 21H ;输出个位数

RET

DISPLAY ENDP

CODES ENDS

END START

- 28 -

2、斐波那契数(小于50).asm:

DATAS SEGMENT

M1 DB 13,10,'Fibonacci number Below 50 is: $' N DW 8

F1 DW 0

F2 DW 1

DATAS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS

START:

MOV AX,DATAS

MOV DS,AX

LEA DX,M1

MOV AH,9

INT 21H

MOV DL,'1' ;输出1和空格,1在dl中 MOV AH,2

INT 21H

MOV DL,' '

- 29 -

INT 21H

LP:

MOV AX,F1 ;ax=0

ADD AX,F2 ;ax=1

JC EXIT ;若有进位则跳出 MOV BX,F2 ;bx=1

MOV F1,BX ;f1=1

MOV F2,AX ;f2=1

CALL OUTPUT ;调用output

MOV DL,' ' ;每个数字后的空格 MOV AH,2

INT 21H

DEC N

JNZ LP

EXIT:

MOV AH,4CH

INT 21H ;返回DOS

OUTPUT:

MOV BX,10

- 30 -

MOV CX,0

OL1:MOV DX,0

DIV BX ;ax=0,dx=1

ADD DL,'0' ;加上30h,使数字3变成字符3 PUSH DX

INC CX

CMP AX,0

JNZ OL1

MOV AH,2

OL2:

POP DX

INT 21H

LOOP OL2

RET

CODES ENDS

END START

;CX=0,每次加1 ;比较ax=1和0 ;字符输出,要输出的字符已经在dl中- 31 -

、 - 32 -

更多相关推荐:
计算机组成原理实验报告

计算机组成原理实验报告软件学院计算机组成原理实验报告专业班级学号日期学生姓名指导教师计算机组成原理实验报告运算器组成实验一实验目的1熟悉双端口通用寄存器堆的读写操作2熟悉简单运算器的数据传送通路3验证运算器74...

计算机组成原理 电子科大技大学 实验报告

课程名称计算机组成原理学院计算机科学与工程专业计算机科学与技术指导教师王学生姓名郭学号实验成绩日期实验报告勇小明20xx06010002920xx年126月日电子科技大学实验报告一实验一ALU设计实验二实验室名...

计算机组成原理实验报告-存储器

计算机硬件实验室实验报告课程名称34

计算机组成原理实验报告1

计算机组成原理实验报告1姓名学号教师时间地点机位实验名称数据传送实验一实验目的1理解自然语言形式命令的人工译码过程2学习系统部件和数据总线间传送数据的操作二实验原理寄存器的作用是用于保存数据的CP226实验仪用...

《计算机组成原理》运算器实验报告

《计算机组成原理》实验报告学院:专业:班级学号:AP0804114学生姓名:实验日期:指导老师:成绩评定:五邑大学信息学院计算机组成原理实验室实验一一、实验名称:运算器实验二、实验目的:1、掌握运算器的组成及工…

计算机组成原理实验报告——1认识性实验_华北电力大学_李梅

综合实验报告20xx20xx年度第一学期名称计算机组成原理综合实验题目院系计算机系班级学号学生姓名指导教师李梅王晓霞设计周数第22周成绩日期20xx年1月一目的与要求1学习和了解TECXP16教学实验系统监控命...

计算机组成原理课程设计实验报告

计算机组成原理课程设计实验报告学院专业班级学号姓名评分20xx年6月8日实验一一实验名称验证74LS181运算和逻辑功能二实验目的1掌握算术逻辑单元ALU的工作原理2熟悉简单运算器的数据传送通路3画出逻辑电路图...

计算机组成原理实验报告2

上海大学计算机组成原理实验报告二姓名学号座位号上课时间教师报告成绩一实验名称运算器实验二实验目的1学习数据处理部件的工作方式控制2学习机器语言程序的运行过程三实验原理CP226实验仪的运算器由一片CPLD实现包...

计算机组成原理实验报告

昆明理工大学信息工程与自动化学院学生实验报告20xx20xx学年第二学期课程名称计算机组成原理含数字逻辑开课实验室信自楼50420xx年4月12日目录实验一LED显示2页实验二运算器4页实验三存储器9页实验四总...

计算机组成原理实验报告3

实验报告第1页共6页第2页共6页第3页共6页第4页共6页第5页共6页第6页共6页

计算机组成原理实验报告

河北大学计算机组成原理实验实验报告学院计算机科学与技术学院年级20xx专业网络工程学号20xx434090姓名王卫宾实验日期20xx1021实验地点C1228指导教师左丽娜实验项目运算器部件加法器成绩一实验目的...

计 算 机 组 成 原 理 实 验 报 告

计算机组成原理实验报告ComputerOrganizationLabReports一实验目的综合运用所学计算机原理知识设计并实现较为完整的计算机二实验环境DaisCMX16达爱思教仪三实验原理1数据格式模型机规...

计算机组成原理实验报告(25篇)