资源描述:
《《汇编语言程序设计》教案89228》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《汇编语言程序设计》教案授课题目第五章[BX]和loop指令课时安排4学时一、教学目的通过本次课程学习,让学生1.掌握使用bx存放偏移地址的方法2.掌握loop指令的使用3.掌握使用[bx]的方法实现循环4.掌握段前缀的含义及用法5.了解内存中的安全空间二、教学重点1.[bx]的用法2.loop指令的使用三、教学难点1.使用[bx]实现循环2.内存中的安全空间四、教学方法(请打√):讲授√□讨论□课堂练习√□实验□其他□五、教学手段(请打√):多媒体√□模型□实物□挂图□音像□其他□六、教学内容及过程1.课程引入(约5分钟)在第三章中,我们学过[…]表示一个内
2、存单元,[0]表示内存单元的偏移地址为0,那么[[bx]是什么意思呢?其次,我们在C语言学过可用for或者while来进行循环操作,那么在汇编中,如何进行循环操作呢?2.[bx](约20分钟)(1)[bx]的含义[bx]也表示一个内存单元,其偏移地址存在寄存器bx中。(2)movax,[bx]和mov[bx],axbx中存放的数据作为一个偏移地址EA,段地址SA默认在ds中。movax,[bx]将SA:EA处的数据送入ax中。mov[bx],ax将ax中的数据送入SA:EA处。问题5.13.LOOP指令(约35分钟)(1)loop指令格式《汇编语言程序设计》教
3、案Loop标号寄存器cx存放循环次数。(2)举例问题5.2和问题5.3。4.在Debug中跟踪用loop指令实现的循环程序(约35分钟)(1)分析计算ffff:0006单元中的数乘以3,结果存储在dx中。运算后的结果是否会超出dx所能存储的范围?用循环累加来实现乘法,用哪个寄存器进行累加?ffff:0006单元是一个字节单元,ax是一个16位寄存器,数据长度不一样,如何赋值?(2)编写代码讲解时注意赋值的方法。(3)对循环进行跟踪注意在debug中参数g和p的使用。5.Debug和汇编编译器Masm对指令的不同处理(约25分钟)(1)debug和masm对mo
4、vax,[0]的不同理解在debug中,movax,[0]表示将ds:0处的数据送入ax中。在masm中,movax,[0]被当作指令“movax,0”处理。举例。Debug中将[idata]当做内存单元的偏移地址,而编译器将[idata]解释为idata。(2)显示给出段地址或者将idata送入寄存器Moval,[0]含义(al)=0,将常量0送入al中。Moval,ds:[0]含义(al)=((ds)*16+0)。Moval,[bx]含义:含义(al)=((ds*16)+(bx))。Moval,ds:[bx]含义:含义与“moval,[bx]”相同。6lo
5、op和[bx]的联合应用(约20分钟)(1)分析计算ffff:0~ffff:b单元中的数据的和,结果存储在dx中。用[bx]存放数据的偏移地址,从而实现循环访问一段连续的内存单元。7段前缀(约10分钟)Movax,[bx]内存单元的偏移地址由bx给出,而段地址默认在ds中。可以在访问内存单元的指令中显式地给出内存单元的段地址所在的段寄存器。显示指明内存单元段地址的ds:,cs:,ss:,es:就是段前缀。8一段安全的空间(约10分钟)在一般的PC机中,DOS方式下,DOS和其他合法的程序一般都不会使用0:200~0:2FF(0:200h~0:2FFh)的256
6、个字节的空间。《汇编语言程序设计》教案9段前缀的使用(约10分钟)可以使用段前缀可以省略重复的程序段。10课程小结(约10分钟)[bx]表示内存单元的偏移地址EA,其段地址SA默认在ds中,也可以显示指明段地址,如SS:[bx]。Loop指令是循环指令,指令格式为loop指令,其中循环次数用cx寄存器存放。当“[…]”中的内容为idata时,需要显示指明段地址。在ds:[bx]中的ds表示段前缀。0:200-0:2ff的一段空间是内存中一段安全空间,可以使用该段空间存放代码。11.思考与练习(1)[0]在debug中和汇编编译器中有什么不同?如何保证它们的含义
7、相同?(2)loop是循环指令,如何动态修改循环地址?七、参考资料1.沈美明.IBM-PC汇编语言程序设计.北京:清华大学出本社,1991.2.郑晓薇.汇编语言.北京:机械工业出版社,2009.3.朱耀庭.汇编语言程序设计.北京:清华大学出版社,2009.4.杨季文.80x86汇编语言程序设计教程.北京:清华大学出版社,2008.八、教学后记