寻址方式在《汇编语言程序设计》中的教学方法研究

2016-11-09 02:50韦庆清周燕崔如春左军
关键词:基址存储器寄存器

韦庆清,周燕,崔如春,左军

(佛山科学技术学院电子信息工程学院,广东佛山528000)

寻址方式在《汇编语言程序设计》中的教学方法研究

韦庆清,周燕,崔如春,左军

(佛山科学技术学院电子信息工程学院,广东佛山528000)

寻址方式是《汇编语言程序设计》课程的重要学习内容。通过分析寻址方式的基本特征,进一步深入探讨了寻址方式的教学重点、教学难点、教学环节及教学方法,并根据该课程的教学特点,给出了简易的应用程序实例,说明寻址方式在汇编语言程序设计中的实际应用,从而达到提高教学效率并顺利完成教学任务的目的。

教学方法;汇编语言程序设计;寻址方式

《汇编语言程序设计》是计算机科学与技术专业本科生必修的专业学科基础课程。寻址方式是《汇编语言程序设计》课程的重要学习内容,其在本课程的教学活动过程中起着承上启下的关键作用,直接影响到能否正常完成本课程后续内容的学习。因此,在开展该课程的日常教学活动过程中,必须重视并把握好寻址方式内容的教学工作,从寻址方式的基本教学内容出发,正确分析、探讨其基本教学特征,明确其教学重点和教学难点,设计并选择使用恰当的教学手段和教学方法,使得本内容的教学活动得以正常完成,从而为顺利完成本门课程的教学工作打下良好的基础。本文主要从课堂教学、实验教学和与学生互动教学等三个基本教学过程来探讨基于Intel 80×86实地址模式下寻址方式的教学方法。

1 寻址方式的课堂教学过程

课堂教学过程是学习寻址方式理论基础知识和基本技能的重要途径和有力保障,在该过程中应该充分利用好课堂的45 min,尽最大可能发挥好课堂教学的作用。学习寻址方式,主要围绕其基本概念、功能及应用等三方面内容进行。首先要明确寻址方式的教学重点(即操作数的有效地址、存储单元的物理地址及操作数的寻址方式)和教学难点(即与转移地址有关的寻址方式);其次要根据寻址方式内容的基本特征来设计并选择使用与之相适应的讲授、动画演示及与学生互动等三个基本教学方法;最后开展并实施日常的课堂教学过程。

1.1基本概念

在引入学习寻址方式之前,首先要描述、讲解相关的概念和术语。比如:机器指令、操作码(助记符)、操作数和有效地址等基本概念,使学生明白机器指令是计算机能识别和执行的并用于解决实际问题的操作命令,该指令通常是由操作码字段和操作数字段两部分组成,操作码字段用来表明操作的类型,操作数字段用来表明参加操作的数据存于何处。相对而言,指令的操作码字段在机器里的表示比较简单,只要对每一种操作指定确定的二进制代码就可以了,而对于指令的操作数字段,情况就比较复杂了,它既可以存放在寄存器中,也可以存放在存储器里,特别是存放在存储器里的操作数,指令该调用什么方式来指定操作数地址更好呢?这可是个很重要的问题,它会影响到机器运行的速度和效率[1]。由此自然而然地就引入了寻址方式的学习。

什么是寻址方式?寻址方式(Addressingmode)是指寻找指令中所需操作数的各种方法。Intel 8086/ 8088 CPU各指令中所需的操作数有4种:寄存器操作数(操作数在CPU的通用寄存器中或段寄存器中)、存储器操作数(操作数在存储器的存储单元中)、立即数操作数(操作数在指令代码中)以及输入/输出端口操作数(操作数在输入/输出端口的寄存器中)[2]。根据寻找所需操作数地址方式的不同,可分为数据寻址方式和程序存储器寻址方式两大类。

1.2数据寻址方式

与数据有关的寻址方式主要包含立即数寻址、寄存器寻址、直接寻址、寄存器间接寻址、基址寻址、变址寻址和基址变址寻址等7种方式。下面以最常用的8086/8088指令系统中的MOV指令来详细说明其各种寻址方式的具体使用。MOV指令是一个数据传送指令。

指令格式:MOV dest,src;dest为目的操作数,src为源操作数

功能:将源操作数src传送至目的操作数dest[3]。

(1)立即数寻址:指操作数直接包含在指令中,紧跟在操作码之后的寻址方式称为立即寻址方式,把该操作数称为立即数。注意:立即寻址方式只能出现在源操作数(S)的位置,其他寻址方式既可以出现在源(S),也可以出现在目标操作数(D)位置。

例1 MOV AL,6;指令执行结果是(AL)=6,6为立即数

例2 MOV AX,1 234 H;指令执行结果是(AX)=1 234 H,1 234 H为立即数

(2)寄存器寻址方式:指操作数直接包含在寄存器中,由指令指定寄存器号的寻址方式。寄存器可以是8位、16位、32位通用寄存器或16位段寄存器(但CS不能用于目标操作数)。

例3 MOV BX,AX;(BX)=(AX)

例4 MOV DI,5 678 H;(DI)=5 678 H

例5 MOV AL,78 H;(AL)=78 H

例6 MOV ECX,7 890 ABCDH;(ECX)=7 890 ABCDH

其中BX、AX、DI、AL、ECX均为寄存器寻址方式。

在存储器里以字节为单位存储信息,每个字单元分配一个惟一的存储器地址(物理地址),从0开始编号,顺序增一。一个存储单元中存放的信息称为该存储单元的内容。如:

(0004)=78 H;4字节单元中存放的数据为78 H

(0004)=5 678 H;4字节单元中存放的数据为5 678 H,字单元地址采用它的低地址来表示

除了以上两种寻址方式外,以下各种寻址方式的操作数都在存储器中,其操作数称为存储器操作数。由于80X86对内存采用分段管理,因此由以下寻址方式得到的只是有效地址(简写为EA,在IBM PC中就是操作数地址的偏移量部分),其物理地址是把有效地址与段基址相加得到,段基址与段寄存器有关。

(3)直接寻址方式:指操作数的有效地址直接包含在指令中的寻址方式。有效地址存放在代码段的指令操作码之后,但操作数本身存在存储器中,所以必须先求出操作数的物理地址。普通变量缺省情况是存放在DS所指向的数据段,但允许使用段超越前缀指定为其他段。这种寻址方式常用于存取简单变量。

例7 MOV AL,[78 H];[78 H]为直接寻址方式

由于没有使用段超越前缀,因此缺省使用DS段寄存器,执行结果如图1所示。

在实模式中,若(DS)=3 000 H,(30 078 H)=12 H,则DS:78 H表示物理地址是30 078 H,该指令的执行结果是(AL)=12 H。

图1 MOV指令执行示意图

(4)寄存器间接寻址方式:指操作数有效地址在基址寄存器BX、BP或变址寄存器SI、DI中,而操作数在存储器中的寻址方式。对于386以上CPU,这种寻址方式允许使用任何32位通用寄存器。若指令中使用的是BX、SI、DI、EAX、EBX、ECX、EDX、ESI、EDI,则缺省情况操作数在数据段,即它们默认与DS段寄存器配合。若使用的是BP、EBP、ESP,则缺省情况默认与SS段寄存器配合,并且均允许使用段超越前缀。

例8 MOV AL,[BX],(DS:[BX])→AL

其中[BX]为寄存器间接寻址方式,注意它与寄存器寻址方式在汇编格式上的区别。指令执行过程如图2所示。

对于指令MOV AL,[BX]

若(DS)=3 000 H,(BX)=78 H,(30 078H)=12 H,则其物理地址=10 H×(DS)+(BX)=30 078 H。该指令的执行结果是(AL)=12 H。

例9 MOV AX,[BP];(SS:[BP])→AX

若(SS)=2 000 H,(BP)=80 H,(20 080 H)=12 H,(20 081 H)=56 H,则其物理地址=10 H×(SS)+(BP)=20 080 H。该指令的执行结果是(AX)=5 612 H。

利用这种寻址方式再配合修改寄存器内容的指令可以方便地处理一维数组。

(5)寄存器相对寻址方式:该操作数的有效地址是一个基址(BX、BP)或变址寄存器(SI、DI)的内容和指令中给定的一个位移量(disp)之和。386以上允许使用任何32位通用寄存器。位移量可以是一个字节、一个字、一个双字(386以上)的带符号数。即EA=(基址<或变址>寄存器)+disp或EA=(32位通用寄存器)+disp。与段寄存器的配合情况是:若指令中寄存器相对寻址方式使用BP、EBP、ESP,则默认与SS段寄存器配合;而使用其他通用寄存器,则默认与DS段寄存器配合。均允许使用段超越前缀。

例10 MOV AL,8[BX];或表示为MOV AL,[BX+8]

若(DS)=3 000 H,(BX)=70,(30 078 H)=12 H,则其物理地址=10 H×(DS)+(BX)+8=30 078 H。该指令的执行结果是(AL)=12 H。其中8[BX]为寄存器相对寻址方式,该指令执行情况如图3所示。

图2 寄存器间接寻址方式执行情况

图3 寄存器相对寻址方式执行情况

(6)基址变址寻址方式:指操作数的有效地址是一个基址寄存器和一个变址寄存器的内容之和。386以上允许使用变址部分除ESP以外的任何两个32位通用寄存器组合。缺省使用段寄存器的情况由基址寄存器决定。若使用BP、ESP或EBP,缺省与SS配合;若使用BX或其他32位通用寄存器,则缺省与DS配合。允许使用段超越前缀,即EA=(基址寄存器)+(变址寄存器)。

例11 MOV AL,[BX][SI];DS:[BX+SI])→AL,或表示为MOV AL,[BX+SI]

该指令执行情况如图4所示。

使用这种寻址方式可以访问一维数组,其中BX存放数组起始地址的偏移量,SI存放数组元素的下标乘以元素的长度,下标从0开始计数。

(7)相对基址变址寻址方式:该操作数的有效地址是一个基址和一个变址寄存器的内容和指令中给定的一个位移量之和。386以上CPU允许使用变址部分除ESP以外的任何两个32位通用寄存器组合。位移量可以是一个字节、一个字、一个双字(386以上)的带符号数。缺省使用段寄存器的情况由基址寄存器决定。若使用BP、EBP或ESP,缺省与SS配合;若使用BX或其他32位通用寄存器,缺省与DS配合。允许使用段超越前缀,即EA=(基址寄存器)+(变址寄存器)+disp

例12 MOV AL,ARY[BX][SI];(DS:[BX+SI+ARY])→AL,或表示为MOV AL,ARY[BX+SI]

指令执行情况如图5所示。

图4 基址变址寻址方式执行情况

图5 相对基址变址寻址方式执行情况

由此可见,寻址方式在汇编指令中的使用是灵活多样的。

1.3程序存储器寻址方式

该寻址方式中的操作数地址与前面学习的操作数地址不一样,程序存储器寻址方式要确定的是转移或调用指令转向后的地址。常用的程序存储器寻址方式主要包含段内相对寻址、段间直接寻址和存储器间接寻址等3种方式[4]。这种寻址方式比较抽象,不易理解,可选择演示法通过形象生动的动画演示来直观演示其寻址方式的具体操作过程。下面以无条件转移指令JMP为例来举例说明。

格式:JMP目标;目标有各种寻址方式

功能:无条件转移到目标处。

段内直接寻址JMP NEAR PTR NEXT

段内间接寻址JMP TABLE[BX]

指令要转向的有效地址EA=(ip)+{8/16位}disp。若位移量是8位,则称为短转移,可以实现在距离下条指令的+127~-128字节范围之内转移;若位移量是16位的,则称为近转移,可以实现在距离下条指令的+32 767~-32 768(以下简称±32 K)字节范围之内转移。

例13若TABLE=20A2 H,(BX)=0 300 H,(SI)=528 EH,(DS)=2 000 H,(2 0300 H)=0 500 H,(223A2 H)=2 450 H。若执行指令:JMP BX

则(IP)=0 300 H,图6a直观形象地演示了该JMP指令的具体执行过程。

段间直接寻址JMP FAR PTR NEXT

段间间接寻址JMP DWORD PTR[BX]

用指令中提供的转向段地址和偏移地址取代CS和IP。指令中直接给出转向的4字节的偏移量和段基址,只需把它们分别送给IP和CS后即可实现段间转移。

例14 JMP FAR PTR LAB;FAR PTR为段间转移操作符

图6b直观形象地演示了该JMP指令的具体执行过程。

图6 JMP指令执行示意图

存储器间接寻址方式中,目的地址不直接出现在指令中,而是存储在一个寄存器或者一个内存单元中,因此,要先使用一种数据寻址方式获取目的地址,然后才判断转移到该目的地址是段内转移还是段间转移,再根据判断结果按照段内相对寻址和段间直接寻址两种寻址方式的规则替换CS和IP的内容。具体指令操作过程略。

2 寻址方式的实验教学过程

在实验教学过程中,强调的是培养学生的学习能力和动手能力。重点在于逐步提高学生理论联系实际,独立解决实际问题的能力,使学生对所学知识能融会贯通、举一反三。尽管在课堂上讲授了各种寻址方式的基本特征、功能作用及应用等基本理论基础知识,但要学生在短时间内很好地理解、掌握并能实际应用,还必须经过编程训练这一课外实践环节,从而延伸、反转课堂,以学生为主,逐步引导学生将其基本思想、理论和技术综合应用到实际汇编程序的开发设计中。在此,通过一个简单程序来分析说明各寻址方式在汇编程序设计中的具体应用。

实例:现有(DS)=2 000 H,(BX)=0 100 H,(SI)=0 002 H,试分析说明各MOV指令中源操作数的寻址方式及指令执行完后AX寄存器的内容。并利用DEBUG命令调试程序。该程序代码说明如下:调用DEBUG的反汇编U命令程序运行结果如图7所示。

图7 U命令运行结果示意图

显然,寻址方式的实验教学过程对保证该内容的有效学习起到重要作用。

3 与学生互动教学过程

与学生互动教学过程主要强调正面激发学生的学习兴趣,培养和提高学生自主学习的积极性和能动性,在互动教学过程中,让学生获得自我纠错、自我肯定的学习体验及学习成功所带来的成就感,从而增强学生的学习兴趣。针对寻址方式的实际教学情况,提出了以下几个与学生互动的具体方法。

(1)随机课堂提问。在课堂上具体讲解有关寻址方式教学内容的过程中,老师可根据课堂学习情况随机提问,让学生独立口头回答,回答完毕后老师要及时给予评价。例如:当讲到目的操作数时,老师可以提问:源操作数可以是立即数、寄存器数和存储器数等几种类型,那么目的操作数和源操作数一样吗?

(2)课堂练习。老师在备课时事先出好相关寻址方式学习内容的练习题目,在课堂结束前几分钟利用PPT展示,让学生个人或小组完成。当学生上讲台做完练习,老师要当场点评,并给出正确答案。例如:请说明下列指令的寻址方式并分析指令执行结果

(3)课后作业讲评。当该寻址方式章节内容学习完毕,应适当布置课后作业,题型、题量、深度和难度都要适宜,让学生通过做作业更好地理解并掌握所学知识,从而培养学生独立解决问题及编程的能力。由于本门课程的性质特征,编写程序代码书写量较大,所以学生交作业方式既可以选择交作业本也可以发电子邮件,相应地,老师批改作业有的是要在作业本上批改,有的则要在电脑上调试运行程序批改,作业批改完毕,还要集中课堂时间进行讲评,并给出正确答案。对于那些有代表性的程序还可以点评、演示。这样既肯定了作业做得好的同学又促动了其他同学,从而端正同学们认真做作业的态度和积极性,以利于形成良好的学习氛围。这样做虽然要花费老师许多时间,但从中也能提高老师自己的教学水平,教学相长。

可见,与学生互动教学过程对保证教学质量起到良好的促进作用。

4 结语

综上所述,寻址方式在《汇编语言程序设计》课程教学中举足轻重,学好该内容知识对学好本课程起着重要作用。因此,在实际的教学活动过程中,应该根据其教学基本特征,制定并使用灵活、恰当的教学环节和教学方法来展开寻址方式的实际教学,以帮助学生更好地理解并掌握寻址方式的基本理论知识和基本技能,为后续内容的学习打下良好的基础,从而达到提高教学效率、完成教学任务的目的。

[1]沈美明,温冬婵.IBM-PC汇编语言程序设计[M].2版.北京:清华大学出版社,2014.

[2]王正智.8086/8088宏汇编语言程序设计教程[M].2版.北京:电子工业出版社,2002.

[3]钱晓.新版汇编语言程序设计[M].西安:电子工业出版社,2008.

[4]李强,温春.汇编语言程序设计[M].西安:西安电子科技大学出版社,2004.

【责任编辑:王桂珍foshanwgzh@163.com】

Research on the method of addressing mode in assembly language programming course

WEI Qing-qing,ZHOU Yan,CUI Ru-chun,ZUO Jun

(School of Electronics and Information Engineering,Foshan University,Foshan 528000,China)

Addressing mode is the important content in the assembly language programming course.This paper analyses the basic characteristics of the addressing mode,and explores teaching emphasis,teaching difficulties,teaching links and teaching methods of addressing mode.Combining with the characteristic of the course learning,gives specific application examples to show the practical application of the addressing mode in assembly language program design.Improves the teaching effect and completes the teaching task successfully.

teachingmethod;assembly language programming;addressingmode

TP313

A

1008-0171(2016)05-0039-07

2016-03-31

韦庆清(1966-),女,广西河池人,佛山科学技术学院讲师。

猜你喜欢
基址存储器寄存器
静态随机存储器在轨自检算法
Lite寄存器模型的设计与实现
河南偃师商城囷仓遗址
分簇结构向量寄存器分配策略研究*
江苏盱眙泗州城遗址出土紫砂器
商代西北方国的文明遗珍 山西吕梁高红商代夯土基址
洛阳瞿家屯战国建筑基址与东周“周赧王居地”
存储器——安格尔(墨西哥)▲
基于Nand Flash的高速存储器结构设计
高速数模转换器AD9779/AD9788的应用