课程设计报告
(2011—2012年度第1学期)
名
题
院班学称:目:系:级:号:学生姓名:指导教师:设计周数:
成绩:
日期:2011年12月30日
一、课程设计(综合实验)的目的与要求
1、掌握实验运行汇编语言所用的计算机机型
2、熟悉常用编辑程序(行编辑程序EDLIN、全屏幕编辑程序QE及其它用于文件编辑的应用程序。)
3、掌握汇编程序ASM、宏汇编程序MASM1.0以上。
4、LINK连接程序
5、DEBUG调试程序
二、设计(实验)正文
题目
以变量ADR为起始地址的字节存储单元中存放一组有符号整数,编写程序分别统计正数的个数、负数的个数和0的个数。
设计思路:
1.以变量ADR为起始地址的字节存储单元中存放一组有符号整数。
2.用变量NUM表示ADR存放有符号整数的个数。
3.用伪指令DB定义DA1,DA2,DA3为不确定内容
4.用SI表示ADR的首地址,SI自增表示依次读取ADR中所存的有符号的整数。
5.将SI与0进行比较,SI>0,DA1自增一次;SI
6.直到所有的数字运行一遍后,DA1,DA2,DA3的值便是正数,负数,0的个数
原程序设计如下:
DATASEGMENT
ADRDB13,-20,32,-5,0,56,-68,0,46,-17
NUMEQU
DA1
DA2
DA3
DATADBDBDB???$-ADRENDS
CODESEGMENT
ASSUME
START:
MOVAX,DATA
MOVDS,AX
LEA
MOVSI,ADRCX,NUM
CS:CODE,DS:DATA
MOVAX,0
DONE1:
MOVAL,[SI]
CMPAL,0
JGEDONE2
INCBYTE
JMPEND0
DONE2:
CMPAL,0
JZDONE3
PTRDA1PTRDA2INCBYTE
JMPEND0
DONE3:
INCBYTE
END0:
INCSI
DECCX
JNZDONE1
MOVAH,4CH
INT21H
CODEENDSPTRDA3
ENDSTART
三、课程设计(综合实验)总结或结论
通过对汇编语言程序设计短时间的学习,我知道了程序就是内存中的一段数据,我们可以将其当作代码,也可以当做数据,也可以作堆栈来使用。所以内存的这些数据如何使用,决定权在我们如何去定义,且让内存的数据与处理器产生联系去实现我们编程的目的。而在操作ASM软件的过程中,我知道了很多指令的重要性,在编程的过程中,我们必须对所有我们所需要的指令有一定的了解,只有这样我们才能更快更准确的设计出我们想要的结果。
汇编的学习不仅仅是学习其语法,而更多的是学习计算机基本的体系结构。其中遇到很多新的概念,名字。如寄存器、中断、寻址方式等。这些概念在刚接触汇编这门课的时候难以理解,但在之后的学习中通过老师的讲解,自己亲手编程的方式也就渐渐清晰明了。
总之,在学习汇编语言时,指令的功能是学习和掌握的重点,我们应该准确有效并合理的使用这些指令,必须了解一些使用的规则。
四、参考文献
廖建明《汇编语言程序设计》清华大学出版社2009年10月第一版
附录(设计流程图、程序、表格、数据等)
1
.设计流程图
2.在MasmforWindows
中输入设计好的程序(截图如下)
在保存好文件后,点击运行,出现的界面如下
在输入反汇编指令u后,debug测试界面如下
再输入指令t后,可以显示每步运行的结果,其中蓝色下划线标注的即为其运行的程序。
程序运行结束后,数据段DS:000A,000B,000C分别DA1,DA2,DA3的值,它们表示数据中大于0,小于0,等于0的个数,13,-20,32,-5,0,56,-68,0,46,-17中有四个正数,四个负数,两个零,与实际结果相符。(截图如下)
课程设计报告
(2011—2012年度第1学期)
名
题
院班学称:目:系:级:号:学生姓名:指导教师:设计周数:
成绩:
日期:2011年12月30日
一、课程设计(综合实验)的目的与要求
1、掌握实验运行汇编语言所用的计算机机型
2、熟悉常用编辑程序(行编辑程序EDLIN、全屏幕编辑程序QE及其它用于文件编辑的应用程序。)
3、掌握汇编程序ASM、宏汇编程序MASM1.0以上。
4、LINK连接程序
5、DEBUG调试程序
二、设计(实验)正文
题目
以变量ADR为起始地址的字节存储单元中存放一组有符号整数,编写程序分别统计正数的个数、负数的个数和0的个数。
设计思路:
1.以变量ADR为起始地址的字节存储单元中存放一组有符号整数。
2.用变量NUM表示ADR存放有符号整数的个数。
3.用伪指令DB定义DA1,DA2,DA3为不确定内容
4.用SI表示ADR的首地址,SI自增表示依次读取ADR中所存的有符号的整数。
5.将SI与0进行比较,SI>0,DA1自增一次;SI
6.直到所有的数字运行一遍后,DA1,DA2,DA3的值便是正数,负数,0的个数
原程序设计如下:
DATASEGMENT
ADRDB13,-20,32,-5,0,56,-68,0,46,-17
NUMEQU
DA1
DA2
DA3
DATADBDBDB???$-ADRENDS
CODESEGMENT
ASSUME
START:
MOVAX,DATA
MOVDS,AX
LEA
MOVSI,ADRCX,NUM
CS:CODE,DS:DATA
MOVAX,0
DONE1:
MOVAL,[SI]
CMPAL,0
JGEDONE2
INCBYTE
JMPEND0
DONE2:
CMPAL,0
JZDONE3
PTRDA1PTRDA2INCBYTE
JMPEND0
DONE3:
INCBYTE
END0:
INCSI
DECCX
JNZDONE1
MOVAH,4CH
INT21H
CODEENDSPTRDA3
ENDSTART
三、课程设计(综合实验)总结或结论
通过对汇编语言程序设计短时间的学习,我知道了程序就是内存中的一段数据,我们可以将其当作代码,也可以当做数据,也可以作堆栈来使用。所以内存的这些数据如何使用,决定权在我们如何去定义,且让内存的数据与处理器产生联系去实现我们编程的目的。而在操作ASM软件的过程中,我知道了很多指令的重要性,在编程的过程中,我们必须对所有我们所需要的指令有一定的了解,只有这样我们才能更快更准确的设计出我们想要的结果。
汇编的学习不仅仅是学习其语法,而更多的是学习计算机基本的体系结构。其中遇到很多新的概念,名字。如寄存器、中断、寻址方式等。这些概念在刚接触汇编这门课的时候难以理解,但在之后的学习中通过老师的讲解,自己亲手编程的方式也就渐渐清晰明了。
总之,在学习汇编语言时,指令的功能是学习和掌握的重点,我们应该准确有效并合理的使用这些指令,必须了解一些使用的规则。
四、参考文献
廖建明《汇编语言程序设计》清华大学出版社2009年10月第一版
附录(设计流程图、程序、表格、数据等)
1
.设计流程图
2.在MasmforWindows
中输入设计好的程序(截图如下)
在保存好文件后,点击运行,出现的界面如下
在输入反汇编指令u后,debug测试界面如下
再输入指令t后,可以显示每步运行的结果,其中蓝色下划线标注的即为其运行的程序。
程序运行结束后,数据段DS:000A,000B,000C分别DA1,DA2,DA3的值,它们表示数据中大于0,小于0,等于0的个数,13,-20,32,-5,0,56,-68,0,46,-17中有四个正数,四个负数,两个零,与实际结果相符。(截图如下)