8086汇编语言教学体会
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
冲器的作用,使学生明白8086CPU这两个独立的工作部件之间是怎样协调工作的。
这对于理解寻址方式是至关重要的,也是以后学习基础中的基础。
1.2指令中的寻址方式
7种寻址方式中按操作数的位置与CPU的相对位置分为两种:CPU内部和CPU外部。
立即数寻址,在取指时把操作码和立即数同时取到了CPU的内部,所以这种方式执行速度比存储器方式快,而比寄存器方式慢。
因为立即数是数值,本身不具备存储容量,所以只能作为源操作数。
寄存器方式时因操作数与运算器同在EU部件中,执行速度是最快的。
存储器操作数需要计算内存地址,需要BIU各部件协调,所以取操作数时间较长,但容量最大。
操作数位置从立即数到寄存器再到存储器实际上就是从简单到复杂,从直观到抽象的一个过程。
1.3熟练掌握DEBUG要以命令G、T、E、D的学习为重点。
例如命令G,G←┘表示从当前CS:IP处执行到第一个退出/结束当前程序处,仅用于查看内存和寄存器中的结果;G=XXXX←┘,表示从偏移地址XXXXH处执行到第一个退出/结束当前程序,常用于忽略一些辅助程序段;G XXXX←┘时表示从当前CS:IP处执行到偏移地址XXXX,通过观察断点处存储器和寄存器值的变化判断出程序当前的运行结果与预期的结果是否一致,是模块化调试时必须掌握的指令。
在T命令中可以观察每一条指令执行前后各寄存器和存储器值和状态的变化,当然要注意命令T和G的结合,这样可以忽略确切功能的子程序或功能调用模块。
有效地使用E命令可以避免调试时输入模块的干扰。
而D指令与其他指令的结合,可以加快调试过程,减少调试的工作量。
教学过程中,作者发现DEBUG使用熟练的学生比DEBUG使用不熟练的学生掌握8086汇编语言教学体会
赵学良1 张雯2 杜海涛1 王红梅1 尚宪刚1
1、泰山医学院信息工程学院计算机结构教研室 2710002、泰山医学院护理学院
前言
8086汇编语言的学习是高等学校工科学生理解计算机基础必经途径之一。
学习时要先明确所学的汇编语言是面向8086微处理器或与之兼容的微处理器,就是说汇编语言的学习要针对具体的CPU。
MOTOROLA的MC68系列、51系列单片机、ARM9、DSP等都有自己的汇编语言,但架构上与8086系列微处理器不同,所以在寻址方式和指令集上会有很大区别,因为8086系列及其兼容机应用广泛,所以以其作为学习对象。
1 重点必须明确
1.1微处理器的内部结构图
从图1必须掌握的内容有:在EU中包含有8位的和16位的寄存器各多少个,常用名称是什么;状态标志寄存器的16位中有哪几位表示状态,哪几位表示控制,要讲清楚标志寄存器、运算寄存器和通用寄存器之间的相互关系。
在BIU中包含几个段寄存器,20位地址线形成过程,CPU寻找存储器操作数时的过程,命令队列缓
汇编指令及程序快的多,理解指令也深刻
的多,所以,建议教学过程中强调DEBUG。
1.4程序的结构
程序的结构分为四种:顺序、分支、循环和子程序。
顺序结构要求真相关条件,结构最简单,但要严格按顺序结构来写一个完整汇编程序并不简单;分支结构要以查表法的学习作为重点,注意分支条件的包含、被包含关系,注重对符号名三属性的理解;循环结构要以冒泡排序法为重点,注重在循环嵌套时循环主体循环次数的设置;子程序学习时要以三种参数传递方法为重点,注重对递归调用的理解。
2 要重视知识的深化2.1 逻辑地址与物理地址由逻辑地址向实际物理地址转化容易,要注意由物理地址向逻辑地址转化有一对多的关系。
例如实际物理地址38000H~39FFFH,写成逻辑地址可以是3800:0000~3800:1FFF,37FF:0010~200F等等。
也就是说会有地址重叠,那8086是怎么样保证一对一的关系呢?在实模式下,采用normalizedaddresses使每个逻辑地址都是唯一的对应一个物理地址。
2.2结束当前程序
关于结束当前程序返回DOS(或父进程)的7种方式推荐采用DOS调用的4C功能。
其他的方式不是需要CS指向PSP开头或就是要内存驻留,而DOS调用的4C功能不仅含义清晰,指令少,安全关闭文件,还能在父进程中得到子进程的错误代码,对于初学8086汇编语言的学生应该强制使用此方式。
2.3进制加法在各类进制数加法中,BCD加法最易搞混。
BCD加法时,一定要记住BCD是用二进制表示的十进制的数,因此在书
面表达时直接按十进制加法就可以即直接把BCD用D来代替,例如(23)BCD+(79)BCD=(102)BCD,相当于(23)D
+
(79)D=(102)D
,但是要注意进制的混
合加法如(79)H+(25)BCD=(92)H=(146)BCD,讲解时要结合调整指令DAA。
2.4循环出口条件大多数程序都要使用循环,使用循环时一定要注意循环的出口条件。
例
如图1 8086CPU内部结构示意图
段开始的时候要有起始标号;不要在代码段中写变量的定义,除非是写COM程序;各段之间、各功能模块之间要留有足够空行,各指令后尽量写注释。
3.2多上机
遇到不会的或模棱两可的问题时要上机来验证。
例如通用寄存器可以相互赋值吗?通过在DEBUG上做各种尝试,发现可以。
但是要注意DEBUG编写时不报错的指令不一定全对,例如MOV CS,AX在编写就不会给出错信息,但是执行时DEBUG就会报错。
再就是尽量把能够得到汇编语言源程序,尤其是难于理解的都上机调试。
理论知识要在实践过程中不断得到充实完善。
在汇编语言的学习中,应反复给学生这样的信息:重视上机,勤于动手。
3.3要注重总结
上课、上机时能明白的要尽量转化为自己的阐述,经常性的对前后知识点进行对比性总结,“温故而知新”,通常可以起到事半功倍的效果。
例如判断有符号的正负时,有3种方法(要判断的数已经读到AL中):1、CMP AL,80H; 2、TESTAL,10000000H;3、OR AL,AL;JS标号。
4 小结
在教学活动中,从与学生经常性的沟通中,作者发现重点明确可以使学生建立正确知识结构和学习方向;相应知识上的深化可以使学生所学知识纵横联系形成整体;从一开始就养成一个良好的编程习惯,对于减少编程障碍,增加、延长学生对于本课程学习兴趣非常重要。
从各个层次的学生反应来看,效果良好。
建议各位同仁在汇编语言的教学中,注意这几个环节。
的颜色指代人,如英语中blue worker,(蓝领工人),white-collar worker (白领工人),gray hair(老年人),bluestocking (女秀才),汉语中的“红颜”,“黄脸婆”等。
3.2.3事物转喻这种转喻是用事物的颜色指代事物,如英语中的yellow bus (接送学生的专车),pink slip(解雇通知单), brown goods(家电), black coffee(不加牛奶的咖啡), green apple(未熟的苹果),thewhite book(白皮书),blue print (蓝图),汉语中的“黄豆”,“白开水”等。
3.2.4地位转喻这种转喻是用人的服饰或血液的颜色转指人的社会地位,如英语中的be bornin the purple(生在王侯贵族之家),beraised to the purple(升为红衣主教),blue blood(名门望族,blue为传说中西班牙贵族血液的颜色),汉语中的“黄袍加身”,“朱门”,“红楼”等。
3.2.5政治转喻这种转喻是用政府部门所在的建筑物和某些组织的标志颜色指代相关政府和组织,如the White House(白宫),theWhite Hall(白厅),the Red Across(红十字会),汉语中的“黄巾军”,“绿林军”等。
4 颜色词的隐喻与转喻的关系
传统的语言观认为隐喻与转喻是一种
非此即彼的关系,刘正光认为这种区别过
于武断、静态,无法真实全面地反映两者之
间的关系[5]。
Radden的“转喻—隐喻连续体”理论重新诠释了两者之间的关系。
Radden认为,隐喻和转喻是“转喻—隐喻连续体”上的两个典型范畴,连续体轴上的中间部分反映了两者之间的互动关系(转引自刘正光,2002)。
因此,颜色词的隐喻和转喻认知并不是对立的,在思维中两者具有连续性,往往相互作用。
根据Radden的理论,隐喻和转喻连续体中的两个实体概念的性质可能随着观察角度的不同而更接近某一端,如计算机英语中的white board,如果我们强调white的命名功能,那么white board和blackboard一样属于转喻认知的范畴。
如果我们强调white board的书写功能,实际上是把black board的这一功能投射到white board之上,那么white board属于隐喻认知的范畴。
考察颜色词隐喻和转喻关系的另一个角度是颜色隐喻的来源问题。
许多研究表明,大量隐喻的产生是建立在转喻基础之。