汇编语言课程设计任务书
一、课程设计目的
1. 掌握汇编语言与高级语言的接口方法,正确编写混合语言程序,掌握混合语言程序的调试和运行;
2. 掌握DOS、BIOS系统功能调用,掌握基本的显存读写技术;进一步了解汇编接口的功能和用法,掌握利用定时器产生声音的方法;
3. 学会用汇编语言编写一个较完整的实用程序,培养自己的动手操作能力; 4. 学习汇编语言项目设计的基本思路和方法,编程、调试、撰写报告等。
二、任务内容:
任务一:混合编程,将内存中的一个字符串的小写字母转换为大写并输出。也可根据自己兴趣自定题目。
要求:1.分别运用混合编程的两种方法:嵌入式编程、C程序调用汇编函数模
块完成该任务;
2.也可根据兴趣自定题目,如排序、求阶乘和等。
任务二:以下题目二选一
1. 显示系统日期和时间
要求:1.在屏幕特定位置显示当前系统日期和时间;
2.显示的日期和时间要求即时更新,即设计为跳动的时钟; 3.可自定义电子钟的显示区域、显示位置、背景和前景色或以图形化方式显示。
4.当按下某个键,如“Q”时,程序返回DOS,数字钟消失。
2. 利用PC扬声器演奏乐曲
要求:1.在屏幕特定位置显示乐曲名称;
2.循环演奏乐曲(自选);
3.当按下某个键,如“Q”时,音乐停止,程序返回DOS。
三、课程设计报告的要求
1. 本次课程设计每位同学必须认真、独立的完成课程设计的编程和调试。 2. 课程设计报告要求使用A4纸打印,必须有目录。封面提供,内容要认
1
真独立完成。
3. 课程设计报告内容一般应包含如下部分:
① 课程设计目的、内容; ② 每个任务的程序流程图 ③ 程序清单 ④ 调试结果及分析; ⑤ 收获、体会和建议。
4. 课程设计结束同时上交课程设计报告,不得拖延。
四、成绩的评定
1. 考勤(20分) 2. 调试验收(30分)
3. 随机回答指导教师的问题(20分) 4. 课程设计报告(30分)
5. 课程设计态度不认真,超过1/3时间不到者,不予及格。
6. 完全拷贝他人,对设计内容一无所者或知之甚少者,一经发现,不予及格。
7. 课程设计报告雷同或抄袭者,不予及格。 8. 可以自主扩充功能,有创新可加分。
2
汇编语言课程设计指导书
一、混合编程预备知识
(一)什么是混合编程
多种程序设计语言间,通过相互调用、参数传递、共享数据结构和数据信息而形成程序的过程就是混合编程。程序的大部分采用高级语言编写,可以提高程序的开发效率;在某些部分,利用汇编语言编写,可以提高程序的运行效率。
(二)混合编程方法
汇编语言与C语言混合编程有4种实现方法:一是嵌入式汇编,即将汇编语句或程序嵌入到C语言程序中;二是在C语言程序中调用汇编语言函数(汇编函数以汇编程序源文件形式存在);三是在汇编语言程序中调用C语言程序;四是采用DOS或BIOS调用函数。这里我们着重介绍前两种方法。
1. 嵌入式汇编
(1)C语言中嵌入汇编语句的格式如下: asm 操作码 操作数 <;或换行> 如以下C源程序文件“test.c”:
(2)编译连接方法
含有嵌入式汇编语句的C程序的编译连接,需要使用TC环境的命令行编译器TCC. EXE,而TCC.EXE在编译时要调用TASM.EXE,因此TC安装目录下必须有汇编程序TASM.EXE。但是在大多数的情况下此目录中是没有TASM.EXE的。我们可以先下载TASM 5.0进行安装,然后将安装目录下的TASM.EXE直接拷贝到TC安装目录下,就可以用了。TCC.EXE的调用格式是:
3
TCC [options] file[s]
其中,file[s]为需要编译或连接的文件,可有一个或多个。[option]为各个参数选项,常用的有“-B”,用于指示源程序中使用了嵌入式汇编,则编译命令为:
TCC –Id:\\tc\\include –B test 注意:TCC区分大小写,B必须为大写。
(3)编译连接过程
假定TC2.0安装目录为C:\\turboc2,test.c文件在turboc2文件夹中,且该目录中含有TASM.EXE。则编译连接过程如下:
①启动命令提示符,使用cd \\turboc2命令切换到tc目录,输入TCC命令:
②运行该编译命令,如下图所示表示编译连接成功:
③此时在当前目录下生成test.obj、test.exe文件,运行test.exe文件,结果如下:
4
结果正确!
2. 在C语言程序中调用汇编语言函数
此方法要求分别编译C语言程序和汇编语言程序,再将目标文件连接成一个可执行文件。在这一过程中,汇编语言程序被看作函数,被C语言程序调用。C语言程序以汇编语言子程序名作为函数名调用汇编语言程序模块。
(1)编写源程序
汇编语言子模块的过程应用PUBLIC伪指令将其说明为“公用过程”。在C语言程序中,也应对被调用的汇编语言程序模块用EXTERN声明为“外部模块”。
例如:在C中调用汇编语言模块完成两个数的求和。 C文件(命名为ADDC.C)
参数传递主要采用堆栈来进行。对于TC中的小模式采用近调用,参数入栈采用自右向左的顺序,即变量y、变量x,且在栈中各占用2个字节。
汇编语言文件(命名为ADDM.ASM,完成的功能为求两个整数之和)
可以看出代码段是以带下划线的标识符开头的,代码段的标识为_TEXT,这是由TC编译程序所定好了的,如果不按照这个格式书写汇编代码,调用就不
5