资源描述
课程设计报告
( 20010-- 2011年度第 1学期)
名 称: 汇编语言程序设计报告
题 目: 数据统计
院 系: 电气与电子工程学院
班 级: 电子0902
学 号: 1091230213
学生姓名: 张永辉
指导教师: 廖斌
设计周数:
成 绩:
日期: 年 月 日
课程 课程设计(综合实验)报告
一、课程设计(综合实验)的目的与要求
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<0,DA2自增一次:SI=0,DA3自增一次。
6. 直到所有的数字运行一遍后,DA1,DA2,DA3的值便是正数,负数,0的个数
原程序设计如下:
DATA SEGMENT
ADR DB 13,-20,32,-5,0,56,-68,0,46,-17
NUM EQU $-ADR
DA1 DB ?
DA2 DB ?
DA3 DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
LEA SI,ADR
MOV CX,NUM
MOV AX,0
DONE1:
MOV AL,[SI]
CMP AL,0
JGE DONE2
INC BYTE PTR DA2
JMP END0
DONE2:
CMP AL,0
JZ DONE3
INC BYTE PTR DA1
JMP END0
DONE3:
INC BYTE PTR DA3
END0:
INC SI
DEC CX
JNZ DONE1
MOV AH,4CH
INT 21H
CODE ENDS
END START
三、课程设计(综合实验)总结或结论
通过对汇编语言程序设计短时间的学习,我知道了程序就是内存中的一段数据,我们可以将其当作代码,也可以当做数据,也可以作堆栈来使用。所以内存的这些数据如何使用,决定权在我们如何去定义,且让内存的数据与处理器产生联系去实现我们编程的目的。
而在操作ASM软件的过程中,我知道了很多指令的重要性,在编程的过程中,我们必须对所有我们所需要的指令有一定的了解,只有这样我们才能更快更准确的设计出我们想要的结果。
汇编的学习不仅仅是学习其语法,而更多的是学习计算机基本的体系结构。其中遇到很多新的概念,名字。如寄存器、中断、寻址方式等。这些概念在刚接触汇编这门课的时候难以理解,但在之后的学习中通过老师的讲解,自己亲手编程的方式也就渐渐清晰明了。
总之,在学习汇编语言时,指令的功能是学习和掌握的重点,我们应该准确有效并合理的使用这些指令,必须了解一些使用的规则。
四、参考文献
廖建明 《汇编语言程序设计》 清华大学出版社2009年10月第一版
附录(设计流程图、程序、表格、数据等)
1.设计流程图
2.在Masm for Windows中输入设计好的程序(截图如下)
在保存好文件后,点击运行,出现的界面如下
在输入反汇编指令u后,debug测试界面如下
再输入指令t后,可以显示每步运行的结果,其中蓝色下划线标注的即为其运行的程序。
程序运行结束后,数据段DS:000A,000B,000C分别DA1,DA2,DA3的值,它们表示数据中大于0,小于0,等于0的个数,13,-20,32,-5,0,56,-68,0,46,-17中有四个正数,四个负数,两个零,与实际结果相符。(截图如下)
6
展开阅读全文