汇编语言程序设计教案.doc
汇编语言程序设计教学大纲汇编语言程序设计1 课程编号:0401462 教学目的与要求:课程目的:汇编语言是一种符号化了的机器语言,与硬件系统密切相关,可以用来对计算机系统中所发生的事件进行精确控制,将系统的功能发挥到淋漓尽致。通过学习该门课程,可以为后续主干课程,如单片机原理、计算机体系结构、微机原理、计算机接口技术等打好基础,同时,对Windows下的汇编语言的学习,也可以为将来的Visual C+课程做好必要的入门铺垫。课程要求:通过对该门课程的学习,使学生具备基本的汇编语言程序设计能力,能够熟练使用汇编、连接与调试工具,为后续课程打好基础。主要知识点:各种数据的表示与转换,微处理器的基本知识,汇编语言的基本指令,子程序与宏指令设计,I/O操作,Windows下的汇编语言程序设计技术,CPU的3中运行模式及其转换,用Debug和Visual C+工具调试汇编程序。3 课时安排:课程总学时:64,其中授课48学时,实验16学时4 先修课程的要求:计算机导论,C语言5 教材:1 张雪兰, 谭毓安, 李元章. 汇编语言程序设计从DOS到Windows. 北京: 清华大学出版社, 2006.46 教学参考文献:1 求伯君. 深入DOS编程. 北京大学出版社, 1993.12 钱晓捷, 陈涛. 16/32位微机原理、汇编语言及接口技术. 北京: 机械工业出版社, 2006.33 罗云彬. Windows环境下32位汇编语言程序设计. 北京: 电子工业出版社, 2006.34 罗云彬的编程乐园. 2008.85 Masm32官方网站. 2008.86 马玉春教学主页. 2008.87 课程主要内容(48学时):第一章 预备知识(2学时)1.1 进位记数制及不同数制间的转换1.2 二进制数的算术和逻辑运算1.3 数和字符在计算机中的表示方法重点:突出本书的主要内容及其作用与意义,数制的表示与转换及运算。第二章 微处理器的基础知识(6学时)2.1 Intel 80x86系列微处理器简介2.2 程序可见寄存器组2.3 存储器2.4 PC操作系统的发展2.5 DOS内存布局2.6 外部设备及I/O地址空间2.7 汇编语言概述重点:介绍微处理器,重点讲解寄存器组及汇编语言的特点,并用简短的程序进行演示;介绍Debug调试工具的使用。第三章 寻址方式及指令集(18学时)3.1 Intel 80x86指令集的发展3.2 与数据有关的寻址方式3.3 数据传送指令3.4 算术运算指令3.5 逻辑指令3.6 程序控制指令3.7 处理机控制指令3.8 串操作指令3.9 条件字节设置指令重点:讲解算术与逻辑指令、控制指令,要求熟练使用。第四章 汇编语言程序组织(6学时)4.1 汇编语言语句格式4.2 汇编语言源程序结构4.3 常用伪指令4.4 汇编语言操作符4.5 汇编语言程序上机过程4.6 调用ROM BIOS或DOS中断实现数据的输入输出4.7 简化段定义重点:明确汇编语言的源程序结构,熟练使用伪指令及汇编语言的上机操作,理解简化段,为Windows下的汇编做好铺垫。第五章 程序基本结构及其程序设计(2学时)5.1 顺序结构及简单程序设计5.2 分支结构及程序实现5.3 循环结构及程序实现重点:熟悉常用的程序结构,并编程实践。第六章 子程序与宏指令设计(5学时)6.1 子程序结构及设计方法6.2 子程序参数传递6.3 嵌套与递归子程序6.4 宏指令6.5 宏指令库6.6 重复伪指令6.7 条件伪指令重点:子程序的设计与调用,参数的传递方法;宏指令的设计与使用;子程序与宏指令的对比。第七章 实模式I/O程序设计(3学时)7.1 概述7.2 程序查询方式7.3 中断传送方式7.4 DMA方式简介7.5 磁盘文件存取技术重点:熟练掌握程序查询与中断传送的基本概念,练习I/O操作,了解磁盘文件存取技术。第八章 汇编语言高级编程技巧(2学时)8.1 模块化程序设计8.2 汇编语言程序与高级语言程序的连接8.3 使用DOS EXEC功能执行程序8.4 TSR程序设计重点:熟练掌握模块化程序设计的方法及其连接技术,了解中断驻留程序的基本原理与实现方法。第九章 32位CPU及Windows基础(2学时)9.1 保护模式基础9.2 内存管理9.3 Windows环境重点:Windows下的寄存器组,内存的分段与分页管理以及保护技术。第十章 Windows汇编语言程序设计基础(2学时)10.1 Windows汇编环境10.2 Windows下的子程序设计与函数调用10.3 使用Visual C+ 编译调试汇编程序重点:Windows下的程序设计方法、汇编与连接,用Visual C+工具调试Windows汇编程序。8 实验(16学时):8.1 Debug工具的使用(2学时)l 重点练习Debug命令中的如下命令:A、D、E、G、H、L、N、P、Q、R、T、U、W,并熟练掌握。可以设计简单的加法程序,用T命令跟踪调试,用R命令查看寄存器中的内容(参考P111, P445, P30)。l 实验报告要求写出详细的实验步骤,各个要求的Debug命令的使用方法和效果,并附上关键代码。8.2在Debug环境下实现二进制乘法和除法程序(2学时)l 在Debug环境下实现二进制乘法和除法程序,并保存程序。用T命令跟踪调试,用R命令查看寄存器中的内容(参考P57-61)。l 实验报告要求写出详细的实验步骤,主要寄存器的变化情况,并附上关键代码。8.3异或校验码的计算(2学时)l 用循环语句计算给定字节的异或校验码,字节的定义和字节数的表示参考P102页。该程序需要逐步完善,最终用子程序来实现,并显示结果。l 实验报告要求写出详细的原理、实验步骤(即从ASM源代码的建立到Debug调试,参考P111),并附上关键代码。8.4累加和校验码的计算(2学时)l 用循环语句计算给定字节的累加和校验码,字节的定义和字节数的表示参考P102页。该程序需要逐步完善,最终用子程序来实现,并显示结果。l 实验报告要求写出详细的原理、实验步骤(即从ASM源代码的建立到Debug调试,参考P111),并附上关键代码。l 提示:使用 Frame16.asm 模板。8.5 字节取反(2学时)l 利用循环(LOOP)、移位(SHL或SHR)、位测试(TEST)、或(OR)、异或(XOR)、条件转移等指令,将AL寄存器中的字节取反,以实现指令的综合应用。l 实验报告要求介绍指令的用法,写出详细的实验步骤(即从ASM源代码的建立到Debug调试,参考P111),并附上关键代码。8.6 求最大字节(2学时)l 给出10个字节,用循环比较,求出10个字节中的最大值,并输出结果。l 实验报告要求介绍指令的用法,写出详细的实验步骤(即从ASM源代码的建立到Debug调试,参考P111),并附上关键代码。8.7 子程序的学习和应用(2学时)l 学习多功能显示程序,理解其原理,并熟练调用。用Debug工具观察子程序调用与返回过程中,堆栈及指针寄存器的变化情况。l 实验报告要求写出详细的实验步骤,并描述各个子程序的功能与调用方法。8.8 宏指令学习和应用(2学时)l 将上一个实验中的(部分)子程序用宏指令来实现,编译运行,观察lst与map文件。l 实验报告要求写出详细的实验步骤,并用具体实例说明宏指令与子程序的联系与区别。9 考核方式:考试10 学生学习本课程的主要方法及应注意的问题本课程必须理论联系实际,加强编程训练。主要掌握汇编语言的基础知识,为后续课程的学习打下基础。用I/O命令控制仿真模块,并完成校验码的计算,为计算机网络的协议分析和计算机监控课程打下基础,同时,提高学生的学习兴趣和实践技能。5