论文部分内容阅读
摘要:为达到激发学生学习兴趣和缩短他们掌握“微机原理与接口技术”课程时间的目的,围绕“地址”的概念展开讲解,让学生重点掌握汇编语言的特点,理解“接口”的定义,以期初学者能在合适的教学方法下提高学习热情,牢固地掌握该课程的知识。
关键词:地址;接口;教学方法
作者简介:王亭岭(1975-),男,内蒙古呼伦贝尔人,华北水利水电学院电力学院,讲师,工学硕士,主要研究方向:自动化及嵌入式系统;熊军华(1973-),女,河南罗山人,华北水利水电学院电力学院,讲师,北京航空航天大学机械学院博士研究生,(北京100191)主要研究方向:电力系统自动化、电力电子、嵌入式系统、机械设计及理论。(河南郑州450011)
“微机原理与接口技术”是工科院校非计算机专业的必修专业基础课,是工科学生普遍感到比较难学的一门课程,也是一门实践性非常强的专业基础课,在教学时间和实验资源有限的条件下,如何使学生能学有所获、学有所得是从事“微机原理与接口”课程教学的高校教师非常关注的问题。由于学时数的不同,各院校讲解的内容有所差别,主要以80×86系列为主,少部分学校以单片机8051为讲授对象。作者结合80×86与8051的特点,在近几年的教学过程中积累了一些经验和心得,供初学者参考。
一、围绕“地址”展开讲解
在微处理器问世之前,运算器和控制器是两个分离的功能部件,加上当时的存储器还是以磁芯存储器为主,计算机存储的信息量较少,因此早期冯·诺依曼提出的计算机结构是以运算器为中心的,其他部件通过运算器完成信息的传递。随着微电子技术的进步,人们成功地研制出了微处理器。微处理器将运算器和控制器两个主要功能部件合二为一,集成到一个芯片里。同时,随着半导体存储器代替磁芯存储器,存储容量成倍地扩大,加上需要计算机处理的信息量与日俱增,以运算器为中心的结构已不能满足计算机发展的需求,甚至会影响计算机的性能。为适应发展的需要,现代计算机组织结构逐步转化为以存储器为中心的组织结构。但是现代计算机基本结构仍然遵循冯·诺依曼思想。冯·诺依曼型计算机是根据存储程序原理构造的计算机。存储程序原理的基本思想是指令驱动,即程序由指令组成,并和数据一起存放在计算机存储器中。机器一经启动,就能按照程序指定的逻辑顺序把指令从存储器中读出来逐条执行,自动完成由程序所描述的处理工作。[1]
存储器的主要功能是用来存放系统工作时的信息,包括程序和数据。访问存储器的关键是要知道存储单元的地址。这就好比去一栋大楼找人一样,楼层代表存储器块,房间号代表存储单元地址。对于80×86指令系统,程序和数据被放在一个存储区中,称为诺依曼经典结构,寻址方式有10种之多,实际上可分为两大类:非存储器寻址方式和和存储器寻址。非存储器寻址方式有立即寻址和寄存器寻址,这两种寻址方式不需要访问存储器,故执行速度快。存储器寻址是一大类,可以分为很多种形式,但都是围绕“地址”展开的,因此如何计算操作数的物理地址是学习的关键。对于8051指令系统,程序和数据是分别存放的,称为哈佛结构,即存储器分为数据存储器和程序存储器。寻址方式大体与80×86相同,也是以存储器寻址为重点。无论80×86还是8051,都是CISC(复杂指令集)结构的,而现在嵌入式系统中以RISC(精简指令集)结构的微处理器为主流。RISC微处理器精简了指令系统,采用超标量和超流水线结构,它们的指令数目只有几十条,却大大增强了并行处理能力。RISC结构的微处理器指令系统的寻址方式比较简单,以间接寻址为主。间接寻址类似于存储器寻址,就是先知道操作数的地址,再去取操作数。
“地址”不仅在汇编语言中处于中心地位,在高级语言中也十分重要。目前,工科院校在低年级普遍开设C语言课程,以C语言中的指针举例,变量的指针就是变量的地址。指针可以用来有效地表示复杂的数据结构,可以用于函数参数传递并达到更加灵活使用函数的目的,使C语言程序的设计具有灵活、实用、高效的特点。指针是C语言的精华。
句柄概念在windows编程中是一个很重要的概念,在许多地方都扮演着重要的角色。句柄是一个标识符,是拿来标识对象或者项目的。应用程序几乎总是通过调用一个windows函数来获得一个句柄,之后其他的windows函数就可以使用该句柄,以引用相应的对象。一般情况下我们在编程的时候,给应用程序分配的内存都是可以移动的或者是可以丢弃的,这样能使有限的内存资源充分利用,所以,在某一个时候我们分配的那块内存的地址是不确定的,因为它是可以移动的,所以得先锁定那块内存块,应用程序需要调用相关的API(应用编程接口)函数来锁定句柄,这样应用程序才能存取这块内存。如果想更透彻地认识句柄,首先就要明白句柄实质上是一种指向指针的指针。windows需要向程序员提供必要的编程接口,在这些接口中,允许程序员访问、创建和销毁对象。但是,出于封装的考虑,windows并不想向程序员返回指针。指针包含了太多的信息。首先,指针给出了对象存储的确切位置;其次,要操作一个指针,程序员必须知道指针所指对象的内部结构特征,即windows必须向程序员暴露相应的数据结构,而这些数据结构也许是操作系统想向程序员隐藏的。如果说COM技术向用户隐藏了数据,只暴露了接口并只允许按接口定义的方法操作数据的话,句柄这种方式则允许你按自己的方式直接操作数据,但windows又不向你直接暴露数据。直接操作数据是程序员需要的,不暴露数据是windows所需要的,句柄封装方式实现了各取所需。总之,用户通过句柄间接地访问内存地址。
二、汇编指令的特点
汇编指令是低级语言,它和机器指令是一一对应的关系。不同的微处理器拥有不同的指令系统,指令格式也各有区别,但完成的功能大体相同,如算术运算、逻辑运算、程序跳转和子程序调用等等。对于CISC来说,指令的条数较多,学习的时候也不需要一一记住。经统计结果表明,CISC计算机中,各种指令的使用频率相差悬殊,最常使用的一些比较简单的指令,仅占指令总数的20%,但在程序中出现的频率却占80%。由于低级语言较为抽象,且CISC指令较多,学生开始接触时,往往一头雾水。初学汇编时,应先掌握使用频率较高的指令,大概有30多条左右。对于某一类指令先掌握一条再触类旁通。数据传送类指令应掌握MOV、算术运算类掌握ADD、逻辑运算类掌握AND、条件转移类掌握JZ及循环控制类掌握LOOP等,串操作可以先不讲,此类较复杂,汇编入门后回头再学效果会好一些。
关于符号数与无符号数的运算是学习的难点。其实,应用中是符号数还是无符号数,由编程人员看问题的视角来定。给定的两个数进行加法运算时,对于CPU来说,是统一使用补码运算规则,结果为一个。可以从符号数的角度看,也可以从无符号数的角度看,相同的编码,不同的视角,值有所不同,并且对运算结果的溢出判断标准也不同:符号数,当OF=1时溢出,OF=0时不溢出;无符号数,当CF=1时溢出,CF=0时不溢出。OF标志位专门是为有符号数设计的,加法运算时,次高位和最高位不同时、有进位时OF=1。举例如表1所示。[2]
表1 加法运算结果分析
要想成为一个真正的编程高手,掌握汇编语言是一个基础条件。汇编语言的重要性怎么强调也不为过,但仅有汇编语言是远远不够的。也就是说,掌握了汇编语言,相当于你只是掌握了与机器直接对话的能力,你还必须掌握机器的脾气秉性,必须掌握CPU的工作模式、操作系统如何使用CPU、操作系统的内部工作机制、高级语言与汇编语言的接口等等,只有掌握了这些必要的内容,并经过大量的实践,才真正具备了成为编程高手的条件。
三、接口的理解
接口电路,简称接口,它是CPU和外部设备之间数据交换的桥梁,起到协调的作用。什么是接口地址,什么是端口地址呢?首先要理解什么是端口,端口就是接口内部的大量寄存器的统称,分为数据端口、状态端口和控制端口。[3]要想访问这些端口,必须知道它们的地址,即端口地址。根据微处理器的结构不同,访问端口的方式也不一样。80×86采用的是独立寻址,存储器的单元地址和接口地址分别编排地址。这种结构的微处理器需要用专用的指令才能访问端口地址。8051采用统一编址,接口地址映射到存储器区。访问端口地址就像访问存储单元一样方便,但它占用了存储单元的地址。对于地址重叠的区域,应该采用不同的寻址方式加以区别。而接口地址实际上是一个范围,对接口电路来说,它是所有端口地址的集合,也是CPU的地址线经过地址译码后输出接到接口芯片的CS(片选)端所得到的范围。
接口中有一种很重要的电路,用来处理硬件中断,叫做中断控制器。中断,即程序执行的中间被外部事件打断。中断的原理就是程序的切换,从当前的指令地址跳到中断服务程序的入口地址。中断服务程序的入口地址称为中断向量,管理中断向量的表格叫做中断向量表。[4]中断向量地址是某种中断类型的中断向量存放在中断向量表中的位置,即中断服务程序入口地址的地址,如同C语言中指针的指针。
对接口电路的初始化是“微机原理与接口技术”中的难点,主要是学生不太会写命令字。什么是命令字?命令字就是发出控制命令的字节,对于计算机的外部接口来说,内部的寄存器大多以字节为基准,向这些寄存器设置初始化数据就是写初始化命令字。会写命令字当然要十分了解各种端口的功能,它们的地址是多少。
四、结语
“微机原理与接口技术”是电子信息类等专业承上启下的课程,既要对前面所学课程进行应用,又要树立起系统和应用的思想。如何让学生在课时一再压缩的情况下理解好本课程是本文关注的重点。更好地掌握本门课程是学好后续的“单片机原理”、“可编程控制器”、“信号处理器”和“嵌入式系统”等课程的必备条件。本文的观点在实际教学过程中普遍获得学生的好评。能使初学者迅速入门,缩短掌握“微机原理与接口技术”课程的学习时间是本文的目的所在。
参考文献:
[1]张凡.微机原理与接口技术[M].北京:清华大学出版社,2003.
[2]徐晨,等.微机原理及应用[M].北京:高等教育出版社,2004.
[3]戴梅萼.微型计算机技术及应用(第3版)[M].北京:清华大学出版社,2003.
[4]周明德.微机原理与接口技术[M].北京:人民邮电出版社,2002.
(责任编辑:刘辉)
关键词:地址;接口;教学方法
作者简介:王亭岭(1975-),男,内蒙古呼伦贝尔人,华北水利水电学院电力学院,讲师,工学硕士,主要研究方向:自动化及嵌入式系统;熊军华(1973-),女,河南罗山人,华北水利水电学院电力学院,讲师,北京航空航天大学机械学院博士研究生,(北京100191)主要研究方向:电力系统自动化、电力电子、嵌入式系统、机械设计及理论。(河南郑州450011)
“微机原理与接口技术”是工科院校非计算机专业的必修专业基础课,是工科学生普遍感到比较难学的一门课程,也是一门实践性非常强的专业基础课,在教学时间和实验资源有限的条件下,如何使学生能学有所获、学有所得是从事“微机原理与接口”课程教学的高校教师非常关注的问题。由于学时数的不同,各院校讲解的内容有所差别,主要以80×86系列为主,少部分学校以单片机8051为讲授对象。作者结合80×86与8051的特点,在近几年的教学过程中积累了一些经验和心得,供初学者参考。
一、围绕“地址”展开讲解
在微处理器问世之前,运算器和控制器是两个分离的功能部件,加上当时的存储器还是以磁芯存储器为主,计算机存储的信息量较少,因此早期冯·诺依曼提出的计算机结构是以运算器为中心的,其他部件通过运算器完成信息的传递。随着微电子技术的进步,人们成功地研制出了微处理器。微处理器将运算器和控制器两个主要功能部件合二为一,集成到一个芯片里。同时,随着半导体存储器代替磁芯存储器,存储容量成倍地扩大,加上需要计算机处理的信息量与日俱增,以运算器为中心的结构已不能满足计算机发展的需求,甚至会影响计算机的性能。为适应发展的需要,现代计算机组织结构逐步转化为以存储器为中心的组织结构。但是现代计算机基本结构仍然遵循冯·诺依曼思想。冯·诺依曼型计算机是根据存储程序原理构造的计算机。存储程序原理的基本思想是指令驱动,即程序由指令组成,并和数据一起存放在计算机存储器中。机器一经启动,就能按照程序指定的逻辑顺序把指令从存储器中读出来逐条执行,自动完成由程序所描述的处理工作。[1]
存储器的主要功能是用来存放系统工作时的信息,包括程序和数据。访问存储器的关键是要知道存储单元的地址。这就好比去一栋大楼找人一样,楼层代表存储器块,房间号代表存储单元地址。对于80×86指令系统,程序和数据被放在一个存储区中,称为诺依曼经典结构,寻址方式有10种之多,实际上可分为两大类:非存储器寻址方式和和存储器寻址。非存储器寻址方式有立即寻址和寄存器寻址,这两种寻址方式不需要访问存储器,故执行速度快。存储器寻址是一大类,可以分为很多种形式,但都是围绕“地址”展开的,因此如何计算操作数的物理地址是学习的关键。对于8051指令系统,程序和数据是分别存放的,称为哈佛结构,即存储器分为数据存储器和程序存储器。寻址方式大体与80×86相同,也是以存储器寻址为重点。无论80×86还是8051,都是CISC(复杂指令集)结构的,而现在嵌入式系统中以RISC(精简指令集)结构的微处理器为主流。RISC微处理器精简了指令系统,采用超标量和超流水线结构,它们的指令数目只有几十条,却大大增强了并行处理能力。RISC结构的微处理器指令系统的寻址方式比较简单,以间接寻址为主。间接寻址类似于存储器寻址,就是先知道操作数的地址,再去取操作数。
“地址”不仅在汇编语言中处于中心地位,在高级语言中也十分重要。目前,工科院校在低年级普遍开设C语言课程,以C语言中的指针举例,变量的指针就是变量的地址。指针可以用来有效地表示复杂的数据结构,可以用于函数参数传递并达到更加灵活使用函数的目的,使C语言程序的设计具有灵活、实用、高效的特点。指针是C语言的精华。
句柄概念在windows编程中是一个很重要的概念,在许多地方都扮演着重要的角色。句柄是一个标识符,是拿来标识对象或者项目的。应用程序几乎总是通过调用一个windows函数来获得一个句柄,之后其他的windows函数就可以使用该句柄,以引用相应的对象。一般情况下我们在编程的时候,给应用程序分配的内存都是可以移动的或者是可以丢弃的,这样能使有限的内存资源充分利用,所以,在某一个时候我们分配的那块内存的地址是不确定的,因为它是可以移动的,所以得先锁定那块内存块,应用程序需要调用相关的API(应用编程接口)函数来锁定句柄,这样应用程序才能存取这块内存。如果想更透彻地认识句柄,首先就要明白句柄实质上是一种指向指针的指针。windows需要向程序员提供必要的编程接口,在这些接口中,允许程序员访问、创建和销毁对象。但是,出于封装的考虑,windows并不想向程序员返回指针。指针包含了太多的信息。首先,指针给出了对象存储的确切位置;其次,要操作一个指针,程序员必须知道指针所指对象的内部结构特征,即windows必须向程序员暴露相应的数据结构,而这些数据结构也许是操作系统想向程序员隐藏的。如果说COM技术向用户隐藏了数据,只暴露了接口并只允许按接口定义的方法操作数据的话,句柄这种方式则允许你按自己的方式直接操作数据,但windows又不向你直接暴露数据。直接操作数据是程序员需要的,不暴露数据是windows所需要的,句柄封装方式实现了各取所需。总之,用户通过句柄间接地访问内存地址。
二、汇编指令的特点
汇编指令是低级语言,它和机器指令是一一对应的关系。不同的微处理器拥有不同的指令系统,指令格式也各有区别,但完成的功能大体相同,如算术运算、逻辑运算、程序跳转和子程序调用等等。对于CISC来说,指令的条数较多,学习的时候也不需要一一记住。经统计结果表明,CISC计算机中,各种指令的使用频率相差悬殊,最常使用的一些比较简单的指令,仅占指令总数的20%,但在程序中出现的频率却占80%。由于低级语言较为抽象,且CISC指令较多,学生开始接触时,往往一头雾水。初学汇编时,应先掌握使用频率较高的指令,大概有30多条左右。对于某一类指令先掌握一条再触类旁通。数据传送类指令应掌握MOV、算术运算类掌握ADD、逻辑运算类掌握AND、条件转移类掌握JZ及循环控制类掌握LOOP等,串操作可以先不讲,此类较复杂,汇编入门后回头再学效果会好一些。
关于符号数与无符号数的运算是学习的难点。其实,应用中是符号数还是无符号数,由编程人员看问题的视角来定。给定的两个数进行加法运算时,对于CPU来说,是统一使用补码运算规则,结果为一个。可以从符号数的角度看,也可以从无符号数的角度看,相同的编码,不同的视角,值有所不同,并且对运算结果的溢出判断标准也不同:符号数,当OF=1时溢出,OF=0时不溢出;无符号数,当CF=1时溢出,CF=0时不溢出。OF标志位专门是为有符号数设计的,加法运算时,次高位和最高位不同时、有进位时OF=1。举例如表1所示。[2]
表1 加法运算结果分析
要想成为一个真正的编程高手,掌握汇编语言是一个基础条件。汇编语言的重要性怎么强调也不为过,但仅有汇编语言是远远不够的。也就是说,掌握了汇编语言,相当于你只是掌握了与机器直接对话的能力,你还必须掌握机器的脾气秉性,必须掌握CPU的工作模式、操作系统如何使用CPU、操作系统的内部工作机制、高级语言与汇编语言的接口等等,只有掌握了这些必要的内容,并经过大量的实践,才真正具备了成为编程高手的条件。
三、接口的理解
接口电路,简称接口,它是CPU和外部设备之间数据交换的桥梁,起到协调的作用。什么是接口地址,什么是端口地址呢?首先要理解什么是端口,端口就是接口内部的大量寄存器的统称,分为数据端口、状态端口和控制端口。[3]要想访问这些端口,必须知道它们的地址,即端口地址。根据微处理器的结构不同,访问端口的方式也不一样。80×86采用的是独立寻址,存储器的单元地址和接口地址分别编排地址。这种结构的微处理器需要用专用的指令才能访问端口地址。8051采用统一编址,接口地址映射到存储器区。访问端口地址就像访问存储单元一样方便,但它占用了存储单元的地址。对于地址重叠的区域,应该采用不同的寻址方式加以区别。而接口地址实际上是一个范围,对接口电路来说,它是所有端口地址的集合,也是CPU的地址线经过地址译码后输出接到接口芯片的CS(片选)端所得到的范围。
接口中有一种很重要的电路,用来处理硬件中断,叫做中断控制器。中断,即程序执行的中间被外部事件打断。中断的原理就是程序的切换,从当前的指令地址跳到中断服务程序的入口地址。中断服务程序的入口地址称为中断向量,管理中断向量的表格叫做中断向量表。[4]中断向量地址是某种中断类型的中断向量存放在中断向量表中的位置,即中断服务程序入口地址的地址,如同C语言中指针的指针。
对接口电路的初始化是“微机原理与接口技术”中的难点,主要是学生不太会写命令字。什么是命令字?命令字就是发出控制命令的字节,对于计算机的外部接口来说,内部的寄存器大多以字节为基准,向这些寄存器设置初始化数据就是写初始化命令字。会写命令字当然要十分了解各种端口的功能,它们的地址是多少。
四、结语
“微机原理与接口技术”是电子信息类等专业承上启下的课程,既要对前面所学课程进行应用,又要树立起系统和应用的思想。如何让学生在课时一再压缩的情况下理解好本课程是本文关注的重点。更好地掌握本门课程是学好后续的“单片机原理”、“可编程控制器”、“信号处理器”和“嵌入式系统”等课程的必备条件。本文的观点在实际教学过程中普遍获得学生的好评。能使初学者迅速入门,缩短掌握“微机原理与接口技术”课程的学习时间是本文的目的所在。
参考文献:
[1]张凡.微机原理与接口技术[M].北京:清华大学出版社,2003.
[2]徐晨,等.微机原理及应用[M].北京:高等教育出版社,2004.
[3]戴梅萼.微型计算机技术及应用(第3版)[M].北京:清华大学出版社,2003.
[4]周明德.微机原理与接口技术[M].北京:人民邮电出版社,2002.
(责任编辑:刘辉)