前言:一篇好文章的诞生,需要你不断地搜集资料、整理思路,本站小编为你收集了丰富的汇编程序主题范文,仅供参考,欢迎阅读并收藏。
关键词:汇编语言程序设计; 教学方法; 内联编程
1课程的现状
汇编语言不同于其它高级语言,必须要求编程人员有一定的硬件基础,如对CPU的结构、CPU与存储器等部件的数据传送过程必须要有基本的了解,这样才能学好这门课程。在教学过程中,我们发现学生对高级语言编程学习积极性高,对汇编语言课程缺乏兴趣,因为课程本身指令复杂,规定繁多,再加上学习汇编指令前对CPU的相关工作过程理解不透,导致学生厌学,又由于本课程面对的低年级学生只有高级语言的基础,习惯于高级语言的自然表达,初次接触计算机硬件知识心理上有恐惧感,更难以适应繁杂的低级语言。
针对本课程的特点,对教学内容、环节、过程等进行了精心设计,下面就教学方法的设计、实践教学方法、课程考核形式等方面进行的一系列改革进行详细探讨。
2教学方法设计改革
为了避免学生因指令复杂,规定繁多、难度大而对该课程产生畏惧的学习心理,教师有必要对教学内容进行合理组织,对教学过程进行精心的设计。
2.1利用FLASH技术,使教学难点容易理解
在多年的教学过程中,我发现学生在学习CPU结构这章节中,对介绍的CPU由哪些寄存器(名称、大小)构成,各个寄存器的含义,用途,CPU与存储器等部件的数据传送过程,会觉得很抽象,多数同学都是采用死记硬背的方式,这章节是第二章节的内容,也是能否学好该课程关键的一章,如果理解不深,这无疑为后续的学习,特别是寻址方式的学习埋下了隐患。
针对这个问题,教师有必要对教学过程进行精心的设计。
在这章节中我们利用FLASH技术,把各种寻址方式下传送指令的CPU与存储器等部件的数据传送过程以动画形式展现给学生,使得复杂,抽象的过程变得直观,学生理解比较容易,也加深了对寻址方式的记忆。
2.2对比法教学
目前计算机专业的课程设置中,《汇编程序语言的程序设计》课程通常是学习完C语言课程之后开始学习的。所以在教学中可以采用对比法来讲解课程,对某些语法知识点和程序设计过程我们可以以C语言和汇编语言对应分析。
例如在介绍寄存器时,由于在一般的c语言程序中并没有直接使用到寄存器。因此,我们使用vC++6.0环境下的调试工具显示一个c语言程序及其对应的机器码,让学生看到编写汇编程序寄存器的用途,加深了学生对汇编语言程序的理解。
int m=5,n=6,c;
004010E8 mov dword ptr [ebp-4],5
004010EF mov dword ptr [ebp-8],6
c=m+n;
004010F6 mov eax,dword ptr [ebp-4]
004010F9 add eax,dword ptr [ebp-8]
004010FC mov dword ptr [ebp-0Ch],eax
在介绍语法知识时,比如变量的定义:
C语言中的变量定义形式如下:
int c1,c2=0;
汇编语言的变量定义形式如下:
cl DW ?
c2 DW 0 转贴于
2.3抽象概念的比喻教学法
在对段地址和偏移地址的讲解过程中,可以采用比喻法,把操作数比喻成学生,把教室的房间号比喻成段地址,教室内每个座位编个号,编号就是偏移地址,要想到教室把某个学生找到,就要找到相应的教室号,再到对应的座位号找到这个学生,同理,要想把主存中的操作数找到就要找到段地址和相应的偏移地址,另外要让学生知道每个教室里的座位号都是从0号开始编号的,也就是每个段里的偏移地址如果不特别指定,也是从0号开始编号的。
3实践教学改革
3.1增强实验环节,做一些实际项目
程序设计对于大多数的初学者来说有一定的难度。对于给定的一个实验题目,许多学生往往感到无从下手。目前的上机实验时间往往很短,常常是学生才刚刚有点入门,实验环节就结束了;且课外实践环节几乎没有,导致学生即使课内学的再好也不会应用。
在实验设计方面可以先把一些经典的程序提供给学生,例如分支结构的设计、循环结构的设计等,让学生在写出C语言程序之后再设计汇编程序,找出两者编程思维的区别。这样通过一段时间的经验积累,就能够编写比较复杂的的程序,由于上机时间有限,可以每次实验课之后布置一些题目供学生选择思考,让学生课外分组来设计这些程序,题目的类型可以是研讨型的让学生从更多的角度去思考上机实验过的题目,编写出不同的程序;另一种为编程型,
例如可以设置这2道题目,音乐小键盘、贪吃蛇游戏等,以加强同学们的编程能力的训练。
3.2采用与高级语言混合编程
目前越来越多的场合要使用汇编语言和高级语言进行混合编程,因此在教学时应强调汇编语言和C/C++的混合编程,并且这样也可以为今后嵌入式系统软件开发的学习打下坚实的软硬件基础。
在实验课中可以借助 Visual C++开发工具,采用内联汇编的方式,在 C/C++源程序中嵌入汇编指令序列完成一定的功能,并让学生设置断点然后跟踪执行,同时注意观察寄存器的内容和变量的值。这样可以一方面让同学们熟练掌握两种语言的切换使用,另一方面让他们感受到两种语言各有特点。例如可以利用汇编语言处理高级语言中不方便处理的一些问题。
4课程考核形式改革
因为“汇编语言程序设计”是实践性很强的一门课程,所以实验课成绩应该在总成绩中占有相当大的比重。目前大多数高校的汇编语言课程的实验课成绩只占很小的比重,即理论知识往往占课程期末考核总成绩的70%~80%,这样往往会导致学生不得不将大量的精力放在理论知识的学习中,结果只会造就大批的应试高手。在教学中,我们遇到过有的学生考试试卷能考90分以上,却连最基本的计算机操作都不能动手。今后这门课程的考核,实验课成绩应该提高到占总成绩的1/2。老师在实验中应该营造出互动气氛,检查每个学生的完成情况同时做好记录,根据学生的实际动手情况给出他们的平时实验成绩,而不是只依据交上来的实验报告,这样也能杜绝抄袭之风。
5结束语
通过教学改革的实践,在一定程度上提高了他们对本课程的学习积极性,又降低了学习难度。良好的教学效果是永远追求的目标,在今后的教学中,我们还需要不断进行探索、研究和尝试,不断更新观念,发现自身教学过程中的问题,找到解决办法,提高教学效果。
参考文献
[1] 王成耀.80x86汇编语言程序设计[M].北京:人民邮电出版社,2008(第2版).
[2] 卜登立,彭嵩松,唐卫东,龙侃.“汇编语言程序设计”课程教学改革研究与探讨[J].井冈山学院学报,2009,30(10):124-127.
“微机原理与接口技术”是电子电气信息类专业中一门非常重要的专业基础课程,其内容包括微处理器基本结构与工作原理、汇编语言指令系统、常用接口芯片的基本原理与编程方式、通过系统总线与外设接口进行连接的基本方法等,具备软件与硬件紧密结合的显著特点。该课程帮助学生从根本上认识和理解计算机的底层工作原理[1],培养学生综合运用模拟电子技术、数字电子技术和汇编语言、C语言等相关知识,理解接口电路工作原理,设计接口电路及对接口电路进行初始化编程的能力。其中,汇编语言的编程能力对学生理解硬件工作原理及对接口芯片进行初始化编程具有非常重要的意义。笔者在实验教学中利用Debug[2-3]调试程序引导学生对汇编语言程序的执行过程进行详细跟踪分析,帮助学生理解计算机底层[4]工作的实质,取得了显著的效果。
1 主要命令简介
2.1 排序前内存中数据的存储情况
阅读此段程序可知,子程序disp用以显示字符串“Hello World!”,将disp子程序定义为中断处理子程序,分配的中断类型号为67H,利用指令“int 67h”实现中断调用显示字符串。子程序init_int将67H号中断原来的中断向量从中断向量表中取出来加以保存,将disp子程序的入口地址填写至中断向量表中把原来的中断向量替换掉。子程序restore_int用以恢复原来的中断向量。对程序调试过程如下。
4.1 查找原中断向量和数据段的值
5 结束语
利用Debug调试程序的主要命令,结合实例阐述了汇编程序执行过程的跟踪方法,展示了Debug调试程序强大的功能。在教学中,要充分利用Debug调试程序的几个主要命令,对课程内容做层次化设计[8],引导学生对汇编语言程序的执行过程加以详细跟踪和比较分析,从而深入理解计算机底层工作的实质,这种方法不仅适用于“微机原理与接口技术”课程,对于其他微处理器和高级语言的学习都是有价值的。
参考文献:
[1] 曹玉波.Debug软件在微机原理课程教学中的应用与实践[J].吉林化工学院学报,2010.27(5):21-24
[2] 龙祖强,梁昔明,杨利容.汇编语言程序调试工具DEBUG浅析[J].衡阳师范学院学报,2008.29(6):33-35
[3] 董洁.浅谈DEBUG程序的主要命令用法[J].赤峰学院学报,2007.23(5):61-62
[4] 孙丹岭,蒋方炎.汇编语言和微机接口技术实验教学探讨[J].计算机教育,2011.17:43-45
[5] 钱晓捷.汇编语言程序设计[M].电子工业出版社,2000.
[6] 罗万钧.田立炎,冯子纲,冯世蔚.汇编语言程序设计[M].西安电子科技大学出版社,1998.
汇编语言传送指令是汇编语言中使用的一些操作符和助记符,还包括一些伪指令。
用于告诉汇编程序如何进行汇编的指令,它既不控制机器的操作也不被汇编成机器代码,只能为汇编程序所识别并指导汇编如何进行。
(来源:文章屋网 )
关键词 仿真技术 微机原理 EMU8086
随着信息科学的发展,高校课程体系也在改革,微机原理的教学课时不断被压缩,这提高了实际讲授和学习的难度,学生普遍反映难度大且不容易理解,教学效果一般。为了提高教学效率,并在一定程度上降低学习难度,本文依据笔者的教学经验,借助多媒体教室的平台优势,发挥CAD仿真工具直观形象的功能特点,对微机原理课程的重点和难点部分做了课堂同步仿真演示,并对仿真过程和结果做出分析,取得了较好的教学效果,同时也调动了学生的积极性。
目前,计算机在高校图书馆和学生中相当普及,课下学生可在教师课件和仿真文件的帮助下,对课程的教学内容做仿真分析,这调动了学生学习积极性的同时也培养了独立分析和解决问题的能力。在电子设计分析领域中,CAD仿真工具众多,本文以EMU8086为仿真工具,结合实例介绍将仿真技术引入微机原理课堂教学中所体现的优势。
一、EMU8086软件介绍
EMU8086是一款基于Windows平台的8086微处理器仿真软件,内部集成了汇编程序、连接器和调试器,并提供了丰富的设计例程和参考资料。该软件可模拟真实微处理器运行程序的过程,也可单步执行并显示寄存器、存储器、堆栈、标志寄存器以及变量的值,对数值的修改通过鼠标操作即可完成。另外,通过EMU8086还可模拟IO接口及显示器、直流步进电机、交通红绿灯和LED等外设。
二、EMU8086仿真在课堂教学中的运用
(一)源程序的输入和编译。在EMU8086环境下,系统提供了四套模板com/exe/bin/boot,分别用于简单程序段、完整汇编程序、二进制源码和启动程序的高效输入编写。结合微机原理课程特点,本文选择exe模板,输入汇编程序代码如下:
data segment
x dd 11111111h
y dd 2222F222h
z dd ?
ends
stack segment
dw 128 dup(0)
ends
code segment
assume cs: code, ds:data, ss:stack
start:
mov ax, data
mov ds, ax
mov si, offset x
mov di, offset y
mov bx, offset z
mov ax, [si]
mov cx, [di]
add ax, cx
mov [bx], ax
mov ax, [si+2]
mov cx, [di+2]
adc ax,cx
mov [bx+2], ax
mov ah, 4ch
int 21h
ends
end start
该程序采用完整汇编程序结构编写,用于完成存储器中两个32位二进制数的加法操作,并将结果送存储器保存;其中涉及数据传送指令、加法指令和中断调用指令的使用。将源文件存盘后进行编译,并根据系统提示修改可能出现的错误,编译通过后即可进行模拟仿真。
(二)仿真分析。点击工具栏emulate按钮,即可对编译得到的可执行文件进行仿真,并出现如图1所示的仿真界面:
仿真界面同时以窗口形式显示了:源程序代码、机器码、反汇编代码、通用寄存器值和段寄存器值等信息,方便使用者对照分析;底部扩展按钮可用于查看标志寄存器、变量、堆栈段、存储器、ALU数据。工具栏按钮实现程序控制功能,如:reload可重新加载程序,run可运行程序,single back和single step可分别控制程序向后与向前单步执行。在程序执行中,各通用寄存器的值同步更新。
对本程序单步执行“add ax, cx”指令后,寄存器AX的值更新为0333H,进位标志为1,实现了变量x和y的低16数据相加。在仿真界面也可得到如下信息:指令“add ax, cx”对应的机器码为“07222:03H, 07223:C1H”,对应的反汇编指令为“add ax, cx”。
此仿真过程可以直观形象地向学生展示CPU工作的状态变化和工作原理,以及汇编和反汇编的对应信息。在实际课程教学的相关章节中适当添加EMU8086的仿真演示,可获得较好的教学效果。
三、结束语
本文针对《微机原理》课程的特点,提出了将仿真技术引入课程教学的方法,并结合实例给出了仿真过程介绍和分析,提高了教学效率,调动了学生的积极性,是一种较好的教学方式,取得了较好的实际教学效果。
参考文件:
李娜娜(1981-),女,商丘市人,本科,助理实验师,研究方向:计算机教学与研究。
摘要:C语言和汇编语言原本各自独立,在单片机程序设计中各具优势。为减轻程序开发难度,并提高程序的效率,将两种设计语言混合是最好的方式。主要对混合编程机理以及函数的混合调用进行了分析。
关键词:C语言;汇编语言;混合编0.引言
当前的单片机系统程序设计多依靠两种设计语言完成,一是C语言,它具有良好的可读性和较强的可移植性,不足之处在于难以精确控制程序的运行时间,而且编码效率较低;二是汇编语言,其编码效率高,但是可读性并不理想,且数据运算处理函数设计极为复杂。在提高运行效率的同时,为了能降低开发难度,将C语言和汇编语言混合使用成了研究重点。
1.原理
设计人员在利用纯汇编语言设计程序时,常会出现代码重叠的情况,这就要求综合代码长度、代码段的起始地址等因素加以考虑;设计中断服务函数时,需保证代码定位的准确性;使用数据段时,需合理分配寄存器空间,为提高对空间的利用率,通常还会涉及数据生存期等问题。如果使用纯C语言进行编程,则无需考虑这些问题,可将其交由编译器和连接器完成。基于C语言的程序最终经编译器转换,会形成包含有代码段定位、寄存器使用状况等信息的汇编语言文件。因此,在今后可以此汇编文件规范进行汇编程序的编写工作,从而使得编译器和连接器将C语言代码和汇编代码相结合。
2.函数的混合调用机制
2.1 函数特征及命名规则
在编写函数时通常要考虑很多因素,如有无参数传递、有无返回值、是否是公共函数等。只有这些条件成立,才能成为函数。函数都有名称,如在A51中 利用ACALL、LCALL两个指令调用函数,就以指令的操作函数作为函数名称,在程序体内具有唯一性。汇编时调用C函数,如果C函数无需依靠寄存器传递函数,则ACALL的参数就是C函数的名称;反之,ACALL的参数需要在C函数名称前面加一个下划线“_”。在编写汇编函数时,需在利用寄存器传递参数的汇编函数名称以下划线开始。
2.2 参数传递方式
通常依靠以下两种方式传递函数参数:
①工作寄存器
对参数数量有限制,如果参数过多,则尽量选择另一种方式。Keil编译环境将工作寄存器作为默认的传递方式,若不能传递所有参数,剩余的参数需要借助数据缓冲区完成。是否使用工作寄存器传递函数参数,可通过编译器人为地控制,如#pragma noregparms为禁止使用,#pragma regparms则表示开启。指令与C函数的名称也有关,因为不使用这种方式,那么就无需在C函数前面加下划线。
虽然51单片机安装有4个工作寄存器组,但一次只能使用一组。在C语言中常借助using n(n=0,1,2,…,n)来表示参与参数传递的寄存器组,n是其序号。应注意的是,若两个参与参数传递的函数使用的寄存器组不是同一个,那么函数参数就无法正确地传递。这意味着在函数调用时尽量不要改变寄存器组。这4个寄存器组中有一个8字节的,最多只能传递3个参数。函数中传递参数最多的数量为4个。
②数据缓冲
在C函数中调用汇编函数,因为全部细节在汇编函数内部都进行了处理,所以采用两种方式的操作具有一致性。在汇编中处理C函数参数表的难度较大,尤其是访问参数寄存器时。利用寄存器传递参数时,寄存器的地质具有固定性,可以直接访问。然而采用数据缓冲的传递方式时,参数地址是由编译器和连接器自动分配的,需采用偏移地址的方法才能确定参数具置。其实在这两种传递方式中,参数都归为函数的局部变量,但只有对数据缓冲区的参数才能通过偏移地址的方法访问。
利用偏移地址访问C函数的参数时,需在汇编中将调用的数据段首地址?fuc_name?BYTE通过extrn data(?func_name?BYTE)加以说明,然后通过MOV?func_name?BYTE+n,A等赋值指令进行访问。
2.3 函数的声明与定位
C语言程序中函数体的声明为:void c_func(void)。这是一个名称为c_func且没有参数传递及返回值的函数。可按照以下方式实现函数体的定义:
Void c_func(void)
{
/*c_func()函数体*/
}
汇编语言包括有传递参数及无传递参数的两种函数,一般汇编程序设计时无需区分,但混合编程需要给编译器一个函数是否有参数传递的标志,即函数名称之前是否有下划线。若有说明有参数传递,反之则没有参数传递。
为提高程序的可移植性,需要对中断项量表精确定位,其它函数则完全有连接器进行定位。不过这种情况并不绝对,比如需要给程序加密时应将某段代码精确定位于一个固定的地址,此时便需要绝对定位。设计时可利用ORG、AT任意一个关键词对代码段进行定位,但若是数据段定位,只能选择后者。
3.混合编程的应用分析
某类测量仪器主要用于检测物体表面的污染程度,主控制器使用的是uPSD芯片psd3224,具有控制外设及处理数据等功能。在开发时需要对时间和时序进行严格控制,这就对汇编语言提出了较高的要求。另外,有大量数据需要处理,汇编语言难以完成,此时应选择C语言编写。最后将这两种设计语言混合使用,既有利于提高代码使用效率,又能够起到简化系统设计的作用。
因篇幅有限,在此只给出了部分程序,程序包含main.asm和file_c.c两个文件。前者为汇编程序文件,里面包括主程序main和一个有参数传入和传出的控制函数char control(char);后者为C语言文件,包括一个8b与8b乘法的处理函数int process(char)。
ACALL_PROCESS
MOV A,R7;处理process()函数的返回值的低位
MOV B,R6;处理process()函数的返回值的高位
AJMP MAIN
;char control(char i);
PUBLIC_CONTROL;声明control()为public型
?PR?_CONTROL;FILE_ASM SEGMENT CODE AT 0100H;control()函数的代码段声明
RSEG?PR?_CONTROL?FILE_ASM;control()函数代码段的开始
…
…
…
{
int result;
result=i*100;
i=control(i);//调用汇编控制程序
Return result;
}
4.结束语
该仪器在程序设计时采用C语言和汇编语言混合的方法,使得程序设计更加简单,开发周期有所缩短。测试结果表明,系统性能稳定可靠,验证了函数混合调用的安全性。可见,C语言和汇编语言混合编程能取得更好的效果,值得推荐应用。(作者单位:商丘职业技术学院)
参考文献:
[1]张开便.C语言与汇编混合编程机理探析与应用[J].电脑开发与应用,2010,22(4):109-110
[2]袁静萍.C与汇编混合编程技术及其应用实例[J].江苏技术师范学院学报,2012,24(2):143-145
二、怎么学习汇编:
1、汇编的调试环境总的来说比较少,也很少有非常好的编译器。
2、设计的轻松汇编是一款非常适合初学者的汇编编译器。轻松汇编是一个汇编语言集成开发环境,主要面向汇编语言初学者,也可以用它进行开发。
关键词:微机原理;接口技术;教学改革
作者简介:王昊(1985-),男,江苏泰州人,南京理工大学泰州科技学院,助教。(江苏 泰州 225300)
中图分类号:G642.0?????文献标识码:A?????文章编号:1007-0079(2012)31-0084-02
“微机原理与接口技术”是电子信息类专业的一门必修专业基础课程。课程内容涉及8086CPU工作原理及汇编语言设计、存储器工作原理及扩展设计、接口电路工作原理及应用设计三大方面,是一门兼有软件设计与硬件电路设计的综合应用性课程。[1]随着计算机科学的发展,微机的应用也愈加广泛,“微机原理与接口技术”课程在整个专业课程体系中也占据着越来越重要的地位,课程的教学质量好坏将直接影响学生后续课程的学习及毕业就业。因此,如何把握学生学习现状,激发学生学习热情,开拓学生思维,挖掘学生动手实践能力,成为教学工作的重中之重。
一、“微机原理与接口技术”教学现状
依据笔者所在学院“微机原理与接口技术”课程教学大纲安排,设定学分数为3,学时数为48,其中理论教学40学时,实验教学8学时。教材选用彭虎、周佩玲编著,电子工业出版社出版的《微机原理与接口技术》,并配以其编著的《微机原理与接口技术学习指导》作为参考书。课程需要学生掌握汇编语言、8086微处理器与接口电路,目的旨在培养学生软硬件开发能力。针对独立学院学生特点,并结合两届学生的教学效果分析,发现传统的教学过程中存在一些问题。
1.学生学习动力匮乏
现今微处理器已发展至64位,而本课程主讲16位的8086/8088微处理器。部分学生认为课程学习16位微处理器缺少实际意义,没有实际用处,从而导致学习能动性薄弱。
2.课程概念性强,记忆量大
“微机原理与接口技术”课程概念多、专用名词多、接口芯片多、内容抽象,相互之间缺少必要的关联和体系。学生面对大量的抽象概念,难以记牢,从而增加学习畏难情绪。
3.课程涉及软硬件,难度较高
“微机原理与接口技术”是学生学习的第一门涵盖软件设计与硬件设计两大方面的课程,其中软件设计采用汇编语言。汇编语言与C语言风格差异较大,编程复杂。硬件设计电路接口丰富,对数电、模电相关知识应用要求较高。学生往往很难真正掌握微机与其接口电路的内部结构,很难形成汇编程序设计的思维方式,对教学内容似懂非懂,更不用说软硬件开发能力的培养。同时,“微机原理与接口技术”也是一门教学难度较大的课程,存在学生基础差异大的问题,教师很难把握教学的进度与深度。
4.课程实验缺乏挑战性
课程实验基本为验证性实验。由教师给出汇编程序,给出电路接线图,学生只需要将程序烧入微处理器,按照接线图连接好各种线路,点击调试运行按钮,记录实验现象并撰写实验报告就可。整个实验过程中,学生只是处于一个低级的操作工角色,很难激发学生的动手热情。
二、“微机原理与接口技术”教学改革
针对上述教学现状中存在的问题,本文从理论教学、实验教学以及考核评价体系方面进行改革探索。
1.理论教学改革
“微机原理与接口技术”内容比较枯燥难懂,讲课过程中经常出现学生听课精神萎靡的现象。为了激发学生的学习兴趣,达到预期的教学效果,在讲课内容和讲课方法上进行改革,充分调动学生学习的积极性和主动性。
(1)讲解课程体系,提升学生课程认识。微机课程既是数电、模电的后续课程,又是单片机原理与应用、数字信号处理及嵌入式系统等课程的学习基础,具有极强的承接作用。课堂教学中,讲述微处理器从16位到64位的发展过程,梳理微机原理与接口技术、单片机、嵌入式系统的脉络关系。例如,讲述8086处理器结构,强调对单片机等处理器架构的影响;讲述8086汇编语言,强调汇编语言在单片机、嵌入式课程中的应用;讲述接口电路,复习数电、模电相关知识,同时涉及相同接口电路在单片机、嵌入式课程中的使用。通过对课程体系的讲解,加强学生对课程意义的认识,改变认为微机课程无用的错误观念。
(2)弱化抽象概念,突出重点、难点。微机课程只有40理论学时。在如此短的学时之内,要将各个知识点都讲到,做到面面俱到,显然是不现实的。因此,教学过程中,将概念进行筛选,舍去抽象、较冷僻的概念,只求学生重点掌握核心概念,从而消减其记忆量,将较多的课时安排到汇编程序编写、接口电路的设计章节中。
(3)运用多媒体动画,丰富讲课形式。讲课过程中,采用多媒体课件、FLASH动画等现代化教学手段进行教学,将图形、文字、动画有机地结合在一起,丰富讲课形式,增加学生学习兴趣。例如,在8086寻址方式的教学过程中,8086的寻址方式共有8种,并且每种寻址方式都涉及到8086内部存储器的相应操作,包括存储器地址的形成和存储器的读写,学生对此较难理解。为此,课堂上,利用FLASH,将存储器地址的形成以及数据在存储器中存入与取出的过程做成动画,动态演示,富有感染力,使学生得到更多的视觉与听觉的刺激,加速知识理解的过程。
程序文件。org是游戏系统里自己调用的文件,一般除了本游戏,无法另外将其打开。org在汇编语言中是一条指令。其作用是告诉汇编程序,在开始执行的时候,将某段机器语言装载到内存中的哪个地址。如果没有它,有些指令就不能正确地翻译和执行。由于这条指令不是机器语言中的直接指令,所以又被称之为伪指令。另外,某些指令符号的含义也随之变化。例如::RESB 0x1fe-$这条指令的含义是从现在开始,填写0x00,直到0x001fe,而有了ORG指令后,美元符“$”的含义也随之变化。它不再是指输出文件的第几个字节,而是代表将要读入的的内存地址。
文件格式(或文件类型)是指电脑为了存储信息而使用的对信息的特殊编码方式,是用于识别内部储存的资料。比如有的储存图片,有的储存程序,有的储存文字信息。每一类信息,都可以一种或多种文件格式保存在电脑存储中。每一种文件格式通常会有一种或多种扩展名可以用来识别,但也可能没有扩展名。扩展名可以帮助应用程序识别的文件格式。对于硬盘机或任何电脑存储来说,有效的信息只有0和1两种。所以电脑必须设计有相应的方式进行信息-位元的转换。对于不同的信息有不同的存储格式。
(来源:文章屋网 )
关键词:Keil;编程;调试;仿真
年来,随着社会对人才素质要求的不断提高和MCU51单片机的广泛应用,社会已形成的学习单片机的热潮,单片机在各行业中已经发挥了重要的作用,相适应的单片机软件开发工具也种类繁多,在高校和业界最广泛应用的是德国Keil Software公司的8051单片机软件开发工具,它可用于众多的8051及派生MCU以实现嵌入式应用开发。
一、系统要求
Keil运行的系统要求相对于现代计算机的主流配置来说是相当之低的,通常为了保证编译器和工具的正常工作的Windows系统必须满足软件和硬件的最低配置为: 100 IBM 兼容386 或以上PC、Windows3.1 版或以上、至少4M 内存、硬盘至少有6MB 磁盘空间。
二、软件开发流程
当使用Keil Software工具时的项目开发流程和其它软件开发项目的流程极其相似:
1.创建一个项目从器件库中选择目标器件配置工具设置 ;2.用C语言或汇编语言创建源程序;3.用项目管理器生成你的应用;4.修改源程序中的错误;5.测试连接应用。
三、开发工具
(一)µVision集成开发环境
µVision IDE(目前使用的版本一般为µVision2或µVision3)是一个基于Windows的开发平台包含一个高效的编辑器、一个项目管理器和一个MAKE工具。µVision有两种操作模式:1.创建模式让你编译应用中所有的文件以产生执行程序; 2.调试模式提供一个非常强劲的调试器你可以用它来调试你的程序。
(二)C51优化的C语言交叉编译器
Keil C51交叉编译器是一个基于ANSI C标准的针对8051系列MCU的C编译器,生成的可执行代码快速、紧凑,在运行效率和速度上可以和汇编程序得到的代码相媲美。
(三)A51宏汇编器
A51是一个8051MCU系列的宏汇编器,它把汇编语言翻译成机器代码。该汇编器的宏特性让公共代码只需要开发一次从而节约了开发和维护的时间源。
(四)BL51具有代码分段功能的连接/重定位器
BL51是具有代码分段功能的连接/重定位器,它组合一个或多个目标模块成一个8051的执行程序。此连接器处理外部和全局数据,并将可重定位的段分配到固定的地址上。
(五)LIB51库管理器
该库管理器让用户建立和维护库文件。一个库文件是格式化的目标模块(由编译器或汇编器产生)的集合。库文件提供了一个方便的方法来组合和使用大量的连接程序可能用到的目标模块,利用µVision项目管理器的Options for Target Output Create Library选项可以建造一个库,也可以从命令行运行LIB51程序命令行参数。
(六)OH51 目标代码到HEX文件的转换器
此转换器为绝对目标模块创建Intel HEX格式的文件。
四、应用举例
下面依托武汉伟福赛思电子有限公司的LabMCU51-X08(KF)单片机实验板,通过设计数码管的0-9每隔1秒跳动循环显示来详细分析Keil编辑源程序、调试、运行、仿真的各功能模块。
(一)算法分析
为了更好实现源代码的编写,在具体编写之前要整理好设计问题的核心算法。该设计涉及3个方面:定时器实现1s计时、数码管显示、0-9的数据查表,通过分析得出该设计的算法流程图:(见图1)
由于现在设计分析处理问题均应有工程理念,所以程序编写第一步应新建工程项目,新建的工程项目名建议能准确描述项目含义,例如该设计问题可命名为DigitalDisplay,工程保存的后缀名为.uv2,接下来Keil环境要求为该工程进行单片机的芯片选型,我们选择Atmel公司的89C51系列,然后工程建立完毕。
接下来新建一个源程序文件,这里我们选用汇编程序代码,保存为文件的后缀名为DisplayLoop.asm(如选用C51程序代码,后缀名为.c)。利用编辑器进行代码编写,编辑器有语法分析功能,不同的语言成分会程序不同的颜色,可帮助用户及时发现错误。代码编写完毕后将源文件添加到项目目录下,具体操作为: 鼠标右键点击 “Source Group 1”,在弹出的菜单中选“Add Files to Group ‘Source Group 1’”:,选择编写的源文件,这样文件就添加到了工程中。
(三)程序运行
源程序编写完成之后,利用Keil的编译器进行编译运行,具体操作为:点击Project->Build Target 或者 点击工具栏的图标。如若程序无语法错误,在Keil的Build Window 会显示 “DigitalDisplay ― 0 Error(s),0 Warning(s)”。由于要将程序最终写入单片机芯片中,所以我们要生成HEX(16进制)文件或BIN(2进制)文件,Keil也提供了这一便利:右键点击“Target 1”,在弹出的菜单中选择“Option for Target 1”,在打开的对话框中选择“Output”选项卡,在选项卡中的“Create HEX File”选项前打勾,Rebuild all target files之后汇编、连接、创建HEX文件一气呵成,在工程中会生成与工程名相同的一些文件,如:DigitalDisplay.hex,这是我们烧入芯片所需要的文件。
(四)调试仿真
如若编写的源程序有语法错误或者写入芯片后,硬件显示出来的效果与预期设计的不一样,即逻辑错误时,我们就需要应用Keil的第二种操作模式:调式模式。点击工具栏的图标或者在菜单栏选择“Start Debug Session”。
而且在实际应用中,如果每次将程序写入芯片来进行操作会增加操作成本,比如我们所使用的AT89S52的重复烧写次数为1000次左右,芯片的批发单价在7.5元/片,当程序较长逻辑较复杂时,重复烧写是不经济的,所以利用Keil的仿真功能是很重要的。Keil中可仿真的设备有:Interrupt System(中断系统)、I/O-Ports(I/O口)、Serial(串口)、Timer(定时器)。仿真可分为软件模拟仿真和硬件仿真,两者区别在于前者不需要外接任何硬件,只是在PC机上用纯软件的形式模拟目标程序的运行,后者需要外接仿真器和目标系统。µVision可提供的调试手段有:CPU程序计数器复位(Reset CPU)、连续运行直到断点或程序结束(Go)、停止运行(Stop Running)、单步运行(Step)、单步跨越(Step Over)等。以本项目为例,进入调试模式后(如图5),调出“Memory Window”和Peripherals中的“Timer-Timer 0”,接着单步运行程序,首先可通过存储器窗口观察到查表存数据的过程,同时关注左边寄存器窗口各所用到的寄存器值的变化是否符合自身事先的设计变化思路;接下来程序依次选择了定时器0的工作方式、设置定时器初值、开启中断后开始计数、进入等待中断。我们可以来观看Timer/Counter窗口,当定时器开始计数后,“TR0”被选中,“Status”中内容由“Stop”转变为“Run”,T0由4C00H计数到达FFFFH,再经过1个机器周期,计数溢出,“TF0”被置1,选项被选中(我们也可手动选中该项,使T0的中断请求位TF0置1),产生中断信号,程序从定时器0的中断向量入口地址000BH进入,执行显示的中断服务子程序。由此可见Keil在模拟仿真设备的优越性和对于程序调试的便利性。
五、结语:
本文通过Keil在单片机系统中的具体应用实例将其功能模块做了较详细的介绍,将其把单片机原理的学习和实践可以很好的贯穿起来,充分发挥“理论指导实践,实践带动理论”的教育教学方式。
参考文献:
[1]陈涛.单片机应用及C51程序设计[M].机械工业出版社,2008.
[2]潘永雄.新编单片机原理与应用实验[M].西安:西安电子科技大学出版社,2005