汇编语言程序设计.doc_第1页
汇编语言程序设计.doc_第2页
汇编语言程序设计.doc_第3页
汇编语言程序设计.doc_第4页
汇编语言程序设计.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

汇编语言程序设计课程教学大纲学 时:32学 分:2理论学时:24实验学时:8面向专业:电科、电信、通信课程代码:b2700009先开课程:c语言程序设计课程性质:必修执 笔 人:王艳春审 定 人:陈龙猛、张金政第一部分:理论教学部分 一、说明1、课程的性质、地位和任务本课程属于专业基础课,是电科、电信和通信专业学生必修的核心课程之一,是进一步学习微机原理、操作系统等课程的基础。掌握它有助于提高学生对计算机系统的设计、研究、开发和应用能力。汇编语言是一种面向机器、实践性很强的程序设计语言,必须结合一种实际的计算机来组织教学。因此,本课程选择最广泛使用的ibm pc作为具体的机型来介绍。通过课堂教学和上机实践,培养学生用汇编语言进行编程的思路、方法,养成良好的程序设计习惯,并了解底层i/o驱动软件的编程方法,熟悉源程序汇编、链接和调试运行的步骤和方法,掌握dos、bios功能的调用方法及使用debug工具的调试手段,为后续课的学习打下扎实的基础。2、课程教学和教改基本要求课程的目的与教学基本要求:本课程主要介绍汇编语言和宏汇编的基本概念,80x86cpu的指令系统和寻址方式;介绍汇编语言程序格式、伪操作和上机全过程。通过实际例子,详细叙述顺序、分支、循环、子程序等基本程序结构以及程序设计的基本方法和技巧。学习这门课程,应达到以下几个要求:掌握汇编语言的基本理论知识和有关概念;掌握用汇编语言编写源程序的基本原则、方法和技巧;具有阅读,分析汇编语言程序的能力;通过上机实践,能够熟练地掌握汇编语言程序的编辑、汇编、连接、运行过程及debug工具的调试手段。课堂授课采用多媒体教学,采用由浅入深、循序渐进学习步骤,主要讲解设计思想、实现技巧,通过提问题引导学生思考,提高学生的学习兴趣,从而加深学生对理论课的理解,提高学生的动手能力。二、教学内容与课时分配第一章 基础知识(2学时)1.1 机器语言及汇编语言的产生1.2 汇编语言的组成1.3 存储器1.4 指令和数据1.5 存储单元及cpu对存储器的读写1.6 三大总线1.7 主板、接口卡及各类存储器芯片1.8 内存地址空间教学的重点与难点:指令和数据在内存或磁盘上没有区别;内存地址空间。建议教学方法:讲授思考题:1. 1个cpu的寻址能力为8kb,那么它的地址总线宽度是多少?2. 8080、8088、80286、80386的地址总线宽度分别为16根、20根、24根、32根,那么它们的寻址能力分别为多少?3. 8080、8088、80286、80386的数据总线宽度分别为8根、8根、16根、16根,则它们一次可以传送的数据为多少字节?4. 在存储器中,数据和程序以什么形式存放?5. 为什么机器语言和汇编语言没有通用性?第二章 寄存器(3学时)2.1 通用寄存器2.2 字在寄存器中的存储2.3 几条汇编指令2.4 物理地址、8086cpu给出物理地址的方法2.5 段的概念及段寄存器2.6 代码段及相关寄存器教学的重点与难点:8086cpu给出物理地址的方法;段的概念。建议教学方法:讲授思考题:1. 给定段地址为0001h,仅通过变化偏移地址寻址,cpu的寻址范围是?2. 有一个数据存放在内存20000h单元中,现给定段地址为sa,若想用偏移地址寻址到此单元,则sa的最小值和最大值分别是多少?3. 执行下面3条指令,cpu修改几次ip?是在什么时候?最后ip的值是?movax, bxsubax, axjmpax第三章 寄存器(内存访问)(3学时)3.1 内存中字的存储3.2 ds和address3.3 字的传送3.4 mov、add、sub指令3.5 数据段3.6 栈、cpu提供的栈机制3.7 栈顶超界问题3.8 push和pop指令3.9 栈段教学的重点与难点:对address的理解;栈的概念及其实现。建议教学方法:讲授思考题:1. 在debug中,用“d 0:0 1f”查看内存,结果如下:0000:0000 70 80 f0 30 ef 60 30 e2 00 80 80 12 66 20 22 600000:0010 62 26 e6 d6 cc 2e 3c ab ba 00 00 26 06 66 88下面程序执行前,ax=0,bx=0,写出每条指令执行完后相应寄存器中的值。movax, 1movds, axmovax, 0000ax=_movbx, 0001bx=_movax, bxax=_movax, 0000ax=_movbx, 0002bx=_addax, bxax=_addax, 0004ax=_movax, 0ax=_moval, 0002ax=_movbx, 0bx=_movbl, 000cbx=_addal, blax=_2. 补全下面的程序,使其可以将10000h-1000fh中的8个字,逆序复制到20000h-2000fh中。movax, 1000hmovds, ax_push 0push2push4push6push8pushapushcpushe3. 补全下面的程序,使其可以将10000h-1000fh中的8个字,逆序复制到20000h-2000fh中。movax, 2000hmovds, ax_pop epop cpop apop 8pop 6pop 4pop 2pop 0第四章 第一个程序(2学时)4.1 源程序从写出到执行的过程4.2 源程序、编辑源程序、编译、连接4.3 可执行文件的执行4.4 跟踪程序执行教学的重点与难点:编连接程序的正确用法;程序执行过程的跟踪,debug常用命令建议教学方法:讲授思考题:1. 执行可执行文件时,有一个正在运行的程序将可执行文件加载入内存,这个正在运行的程序是什么?它将程序加载入内存后,如何使程序得以运行?2. 程序运行结束后,返回到哪里?第五章 bx和loop指令(2学时)5.1 bx的含义5.2 loop指令5.3 在debug中跟踪用loop指令实现的循环程序5.4 debug和汇编编译器masm对指令的不同处理5.5 loop和bx的联合应用5.6 段前缀及其使用5.7 一段安全的空间教学的重点与难点:理解loop指令的功能,bx和loop指令配合使用,编写循环程序。建议教学方法:讲授思考题:1. 计算ffffh:0000hffffh:000bh单元中的数据的和,结果存放在dx中。第六章 包含多个段的程序(1学时)6.1 在代码段中使用数据6.2 在代码段中使用栈6.3 将数据、代码、栈放入不同的段教学的重点与难点:理解程序各个段在内存中的存放。建议教学方法:讲授思考题:1. 下面的程序实现依次用内存0:00:15单元中的内容改写程序中的数据,完成程序。assumecs: codesgcodesgsegmentdw0123h, 0456h, 0789h, 0abch, 0defh, 0fedh, 0cbah, 0987hstart:movax, 0movds, axmovbx, 0movcx, 8s:movax, bx_addbx, 2loopsmovax, 4c00hint21hcodesgendsendstart2. 下面的程序实现依次用内存0:00:15单元中的内容改写程序中的数据,数据的传送用栈来进行,栈空间设置在程序内。完成程序。assumecs: codesgcodesgsegmentdw0123h, 0456h, 0789h, 0abch, 0defh, 0fedh, 0cbah, 0987hdw0, 0, 0, 0, 0, 0, 0, 0, 0, 0start:movax, _movss, axmovsp, _movax, 0movds, axmovbx, 0movcx, 8s:pushbx_addbx, 2loopsmovax, 4c00hint21hcodesgendsendstart第七章 更灵活的定位内存地址的方法(1学时)7.1大小写转换问题7.2用bx+idata的方式处理数组7.3 bx+si和bx+di7.4 bx+si+idata和bx+di+idata7.5 不同寻址方式的灵活应用教学的重点与难点:理解和掌握各种寻址方式建议教学方法:讲授思考题:1. 用si和di实现将字符串welcome to masm!复制到他后面的数据区中。assumecs:codesg, ds:datasgdatasgsegmentdbwelcome to masm!db datasgends2. 将datasg段中每个单词的前4个字母改为大写字母。datasg段定义如下:datasgsegmentdb1. display db2. brows db3. replace db4. modify datasgends第八章 数据处理的两个基本问题(2学时)8.1 bx、si、di和bp8.2 寻址方式8.3 指令处理的数据长度8.4 寻址方式综合应用8.5 div指令、伪指令dd、dup教学的重点与难点:理解寻址方式和数据长度的表达;灵活应用各种寻址方式。建议教学方法:讲授思考题:1. 指出指令错误的原因movax, bx+bpmov ax, si+dimovax, almovbl, cx2. 用div计算data段中第一个数据除以第二个数据后的结果,商存在第三个数据的存储单元中。datasegmentdd100001dw100dw0dataends第九章 转移指令的原理(2学时)9.1 操作符offset9.2 jmp指令9.3 根据位移进行转移的jmp9.4 转移的目的地址在指令中的jmp9.5 转移地址在寄存器中的jmp9.6 转移地址在内存中的jmp9.7 jcxz指令、loop指令9.8 根据位移转移的意义9.9 编译器对转移超界的检测教学的重点与难点:理解jmp指令,掌握各种转移方法建议教学方法:讲授思考题:1. 若要使下面程序中的jmp指令执行后,cs:ip指向程序的第一条指令,在data段中应如何定义数据?assumecs:codedatasegment?dataendscodesegmentatart:movax, datamovds, axmovbx, 0jmpword ptr bx+1codeendsendstart2. 补全编码,利用jcxz指令,实现在内存2000h段中查找第一个值为0的字节,找到后,将它的偏移地址存储在dx中。assumecs:codecodesegmentstart:movax, 2000hmovds, axmovbx, 0s:_jmpshort sok:movdx, bxmovax, 4c00hint21hcodeendsendstart第十章 call和ret指令(2学时)10.1 ret和retf10.2 call指令10.3 依据位移进行转移的call指令10.4 转移的目的地址在指令中的call指令10.5 转移地址在寄存器中的call指令10.6 转移地址在内存中的call指令10.7 call和ret的配合使用10.8 模块化程序设计10.9 参数和结果传递的问题10.10 寄存器冲突教学的重点与难点:理解和掌握call指令和ret指令建议教学方法:讲授思考题:1. 编写子程序,在指定位置,用指定的颜色,显示一个用0结束的字符串。2. 编写程序,将data段中的数据,以十进制形式显示出来。第十一章 标志寄存器(2学时)11.1 zf、pf、sf、cf、of标志11.2 adc、sbb、cmp指令11.3 检测比较结果的条件转移指令11.4 df标志和串传送指令11.5 pushf和popf指令11.6 标志寄存器在debug中的表示教学的重点与难点: cmp等指令和条件转移指令的配合建议教学方法:讲授思考题:1. 补全下面的程序,统计f000h:0处的32个字节中,大小在32,128的数据个数。movax, 0f000hmovds, axmovbx, 0movdx, 0movcx, 32s:moval, bxcmpal, 32_cmpal, 128_incdxs0:incbxloops2. 补全下面的程序,统计f000h:0处的32个字节中,大小在(32,128)的数据个数。movax, 0f000hmovds, axmovbx, 0movdx, 0movcx, 32s:moval, bxcmpal, 32_cmpal, 128_incdxs0:incbxloops3. 下面程序执行后,(ax)=?movax, 0pushaxpopfmovax, 0fff0haddax, 0010hpushfpopaxandal, 11000101bandah, 00001000b第十二章 内中断和int指令(2学时)12.1 内中断的产生12.2 中断处理程序12.3 中断向量表12.4 中断过程12.5 中断处理程序和iret指令12.6 除法错误中断的处理12.7 单步中断12.8 int指令12.9 bios和dos提供的中断例程教学的重点与难点:中断的概念、中断处理程序的编写安装、理解int指令建议教学方法:讲授思考题:1. 用debug查看内存,情况如下:0000:0000 68 10 7a 00 8b 01 70 00-16 00 9d 03 8b 01 70 00则3号中断源对应的中断处理程序的入口地址为多少。2. 存储n号中断源对应的中断处理程序入口的偏移地址的内存单元的地址为多少。存储n号中断源对应的中断处理程序入口的段地址的内存单元的地址为多少。三、考核方式和要求笔试(闭卷70%)+平日(20%)+考勤(10%);考试范围:不超出本大纲基本要求和所选择教材的内容范围;重点:2、3、4、5、6、7、8、9、10、11章;试题类型:选择(单选)、填空、简答、程序分析、程序设计等;比例分配:识记20%,领会20%,简单运用30%,综合运用30%。第二部分:实验教学部分 一、说明1、本门课程实验的性质任务、目的与要求汇编语言程序设计是电信专业和信工专业必修的专业基础课程,汇编语言程序设计实验的目的是:着重培养学生的逻辑思维能力和动手能力,帮助学生掌握程序设计的基本方法和技能,熟练掌握汇编语言设计、编写、调试和运行程序的方法,培养良好的实验习惯。基本要求是:要求学生独立完成每个实验,实验中出现的问题,学生应尽量解决,也可以在指导教师的德指导下加以解决。通过上机实践,培养用汇编语言进行编程的思路、方法,养成良好的程序设计习惯。2、本门课程实验项目设置情况序号实验名称学时必开选开实验类型内容提要验证基本操作综合设计应用创新1熟悉debug的常用命令2用机器指令和汇编指令编程,熟悉debug常用命令2汇编语言上机基本过程2掌握编程、编译、连接、跟踪的方法3循环程序2利用bx和loop编写循环结构程序4具有多个段的程序2理解各个段在内存中的存储 二、各实验项目教学要求实验一 熟悉debug的常用命令(2学时)1、实验目的:用机器指令和汇编指令编程,熟悉debug常用命令。2、实验步骤:用机器指令和汇编指令分别向内存中写入程序,运行查看结果以及每条指令执行后,寄存器的变化。3、问题讨论:数据在内存是如何存放的?实验二汇编语言上机基本过程(2学时)1、实验目的:学习汇编源程序的编辑、汇编、链接的全过程;学习edit、masm及link的使用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论