突破学习难点,提高编程能力及应用水平

2014-09-22 04:01郑克忠
关键词:突破难点

摘要:本文论述了学习难点的突破,为掌握现代计算机理论和控制技术应用编程铺平道路,提供了一个提高学习质量的借鉴方法。

关键词:突破难点 存储器分段 存储器访问

《微型计算机接口技术及应用》这门课程具有很强的理论性、实践性、应用性。它和工程实际有着紧密的联系,在工程实际中能够解决很多关键的难题。但是在实际教学这门课程的过程中,由于《微型计算机接口技术及应用》课程具有很多的难点,很多学生都无法真正的消化掉这些难点,不仅制约了编程应用,也无法提高学生的实际应用能力。

为了更好的为实际工程服务,及时的解决一些在实际的工程应用中会遇到的问题,应该掌握计算机控制技术理论知识,这是提高自身实践能力的基础和前提。因为只有把计算机控制技术理论掌握好,才有能力掌握和应用计算机,进而在工程应用出现问题时有能力解决那些问题。以下几个部分组成了微型计算机:

①中央处理器CPU。②存储器。③I/O接口电路。④I/O设备。

在学习《微型计算机接口技术及应用》这门课程的过程中,最大的难点就是存储器的组织和使用。在进行难点突破时,我们以存储器的分段为例,存储器是存储程序和数据的装置,属于计算机不可分缺的一个组成部分。计算机要想发挥自身的作用,存储器是必要部件,反之,计算机的存在就没有意义了。虽然微型计算机有很多类型,但是只要掌握其中的一种,其他的类型也都大同小异。因此我们在讲解存储器的使用方法时可以以8086/8088微型计算机系统为例。首先说明该计算机中央处理器CPU的结构及原理,然后学习该计算机系统的存储器组织。

1 存储器分段的原因

8086/8088CPU的20根地址总线决定了8086/8088系统的存储器容量,其存储器容量是1MB。但是该系统要想寻址1MB的内存空间,还存在着一些问题,因为该系统CPU内部的寄存器是16位的寄存器,这与20位地址的要求是冲突的。即16位寄存器装配不了20位的地址或数据,只能装配16位的地址或数据。要想解决这个问题,就需要装配20位的寄存器,但是由于客观原因所限,8086/

8088CPU无法装配20位的寄存器。为了有效的解决这个问题,8086/8088CPU的设计师,很巧妙的把1MB的内存进行分段,实现对全部内存的管理和使用。

2 实现分段管理的办法

8086/8088CPU内部提供了4个16位的段寄存器,分别是CS、DS、ES、SS;2个专用寄存器;8个16位的通用寄存器。

4个段寄存器的用途:

装配20位地址的高16位地址是4个段寄存器的作用,并且该地址能够被16整除。我们可以发现,这样的地址低4位都是0,也就是xxxx xxxx xxxx xxxx 0000的形式。如果20位地址是这样形式的,那么我们把这样的20位地址叫做段的地址起始,简称段地址。虽然段地址也是20位地址的,但是由于其低4位都是0,可以把都是0的这4位省略掉,保留高16位地址。如此一来,4个段寄存器中就可以装配段地址的高16位地址,那么16位段寄存器的要求也就得到了满足。

一般情况下,代码段寄存器CS装配的是某一程序代码的起始地址。数据段寄存器DS装配的是某一数据段的起始地址。附加数据段寄存器ES装配的是某一附加数据段的起始地址。堆栈段寄存器SS装配的是系统堆栈或用户设置的堆栈段的起始地址。

8个16位通用寄存器的用途:

装配16位数据是AX、BX、CX、DX四个寄存器的主要作用。装配16位偏移地址是BX、SI、DI、SP、BP这5个寄存器的主要作用。由于在8086/8088系统中,寄存器是16位的,而8086/8088却有20根地址线,8086/8088的寻址是通过段地址与偏移地址合成的,这样的话,如果用cs来指明段地址,用IP指出偏移地址,由于IP是16位的,它能表示的偏移地址只有0000H-FFFFH,也就是共64KB,而8086/8088地址线有20根,也就是可以寻址空间为1M,这样就需要通过分段管理,把内存地址分为若干段,每段有一些存储单元构成。用段地址指出是哪一段,偏移地址标明是段中的哪一个单元。每段最多为64KB,最小为16个字节,并且每段必须以16的倍数开始,也就是说每段的最后一位必须为0,如00000H,10000H,00010H等。逻辑地址是用户编程时使用的地址,分为段地址和偏移地址两部分。实行分段管理就是把段地址装配到相应段寄存器中,把偏移地址装配到地址寄存器中。如此一来,8086/8088CPU内部的寄存器都是16位的寄存器,所有矛盾都获得了解决。

3 地址转换方法

要想得到20位的实际地址(物理地址),程序地址(逻辑地址)利用以下公式就可以实现:

段地址×16d+偏移地址=物理地址(实际地址)

参考上述公式,利用CPU的地址加法器就可以把程序地址转换成物理地址。实际上是当你在编程时,写一条指令,例如:

MOV AL,DS:[2002H]

已知DS的值,比如:5678H,那么56780H就是数据段的起始地址,并且在指令中偏移地址已经给出就是2002H。数据在内存的物理地址是:56780H+2002H=

58782H。

通过指令译码器把指令译码后,发出一系列控制信号,把数据段空间偏移地址为2002H单元中数据传送给AL寄存器。实际上,源操作数程序地址已经被地址加法器转换成物理地址58782H,之后20位地址信息被发出,这20位地址信息就是所对应的数据内存单元地址58782H,把内存单元地址58782H中存放的数据传送给寄存器AL。完成了这一条指令的操作。

4 4个段寄存器CS、DS、ES、SS和几个通用寄存器及专用寄存器的默认搭配关系

①CS与IP搭配,用于程序代码段空间的访问。

②DS与BX、SI、DI搭配,用于数据段空间的访问。

③ES与DI搭配,用于附加数据段空间的访问。

④SS与BP、SP搭配,用于堆栈段空间的访问。

5 存储器的寻址方式

以上已经学习了存储器的组织和存储器分段问题,之后应该学习存储器的寻址方式这个问题。如果学生已经真正掌握了存储器的分段问题,那么学习存储器的寻址方式这个问题就简单多了。比如,指令

MOV BX,3002H

MOV AX,DS:[BX]

对于第二条指令的功能就能真正理解,从而从实质上进行掌握。她的意思是:源操作数在内存数据段中存放,数据段的段地址在寄存器DS中存放,相对于数据段的起始地址,偏移地址是3002H单元,这个地址在寄存器BX中存放。因此,叫做寄存器间接寻址。在这个单元中存放的数据要传送给寄存器AX。因为,存储器的分段问题的难点已经掌握,所以对存储器的寻址方式也很容易掌握了。

6 指令的功能和用途

在学习了存储器的分段方法和对存储器的访问方法之后,应该学习指令的功能和用途,只有这样才能使其真正的发挥作用,达到预期的目的和应用效果。

7 提高编程能力和应用能力

如果能够突破存储器的分段问题的难点,那么正确使用内存资源在编程的过程中就简单多了。由于数据都是在数据段中,并且都是存放在内存中。因此很多在实际的工程当中遇到的问题也就迎刃而解了,比如如何存放采集到的大量数据;一旦一个数据段不够用,存放时是否应多安排几个数据段等。

例如,模/数、数/模转换问题:声音数据采集,录音和播放声音实际工程应用问题。通过对内存的有效安排,将采集的数据分别存放在内存的不同数据段区域。为数据的管理提供了方便,也提高了效率。

通过对实际应用工程的编程实践,学生感受到现代科技的力量和作用及其价值,自己动手设计编程,获得成果,兴趣大增。编程应用能力和应用水平显然得到了很大提高。

参考文献:

[1]李继灿.新编16/32位微型计算机原理及应用(第二版)[M].北京:清华大学出版社,2001

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

[3]李晖,张世彤.如何在计算机教学中培养学生的编程能力[J]. 辽宁教育行政学院学报,2008(12).

作者简介:郑克忠(1951-),男,副教授,服务单位:广东科技学院。

猜你喜欢
突破难点
浅析现代信息技术在初中英语教学中的运用
运用思维突破语文教学难点
浅谈信息技术在高中语文教学中的作用
运用现代教育技术培养学生语文能力
运用多媒体技术,优化语文课堂教学