摘 要:目前,我国单片机教学多以INTEL公司的8051单片机为教学对象。8051单片机指令系统涉及汇编指令多达111条,指令的学习与掌握是影响学生学习该课程的一大障碍。Intel 8051单片机汇编语言指令的理解和记忆是学习单片机一个难点。本文提供了学习记忆的一些技巧。
关键词:汇编语言指令;巧记
中***分类号:TN911.2 文献标识码:A
随着现代科学技术的快速发展与普及,单片机知识也已普及进入工科相关专业课程体系。目前,我国单片机教学多以INTEL公司的8051单片机为教学对象。8051单片机指令系统涉及汇编指令多达111条,指令的学习与掌握是影响学生学习该课程的一大障碍。表现在:一是指令众多,学生感到难以记忆;二是利用指令编写程序时,不知如何书写及表达应用;三是指令出现错误,不能判别指令错误原因。其中,指令的理解与掌握是解决这些问题的基本。笔者通过多年的教学实践,力求找到一条快速掌握指令的捷径,希望给单片机初学者带来帮助。
8051单片机指令系统按功能把汇编指令划分为数据传送、算术运算、控制转移、逻辑运算和位处理指令五个大类。指令的基本格式为:
【标号:】 操作码 操作数;注释
指令的学习首先是操作码功能识别与助记符的记忆,其次是操作数的表达。操作数表达相对繁杂,这也是初学时感到指令繁杂的一个主要原因。下面就从这两方面做一简要探讨。
1 操作码的学习
操作码的学习,可按功能类型,结合助记符相关英语单词含义解析,让学生快速,深刻理解操作码助记符,以促进学生理解和掌握指令功能。英语在这里仅是场景辅助,帮助学生了解操作码助记符的来源及含义。理解后,学生按“操作码功能&操作码助记符”记忆、表达方式日常练习使用即可。如操作码DJNZ,表达为“减1不为零转移指令DJNZ”,操作码INC,表达为“加1指令INC”。
2 操作数的学习
操作数的学习,也有记忆方法。先看下表:
操作数的出现主要有两种类型。类型一,该类指令,操作码不变,而操作数组合方式灵活多样,形成多条指令。如片内字节传送指令根据操作数不同组合有15条指令。加减运算有24条指令。与、或、非逻辑操作有18条指令等,这些可按“#AdR@”顺序记忆操作数,再辅以特定规律就可应对许多指令记忆。这类指令重点在于操作数的格式掌握上。类型二:该类指令中操作数较简单,记忆相对简单。如条件转移指令JZ rel。这类指令的记忆主要在于操作码功能理解。
2.1 对于操作数类型一,因篇幅所限,下面以片内数据传送指令示例说明。
指令格式: MOV 目的操作数,源操作数
操作码助记符英文释义:助记符原型单词就是MOV,其意为移动,指令功能就是把一个数从一个存储单元移动到另一个存储单元。指令中是从源操作数移向目的操作数存储单元。
片内数据为字节传送时,源、目的操作数有15种组合方式,即有15条字节传送指令。
记忆窍门: 操作数中,两个R不能见面;
两操作数,自己不能跟自己见面(自我传送,无意义);
立即数不能作为目的操作数(不能给数据赋值)
如:MOV #30H, R3 ;给数据赋值,非法
MOV R5, @R0 ;两个R见面,非法
MOV 30H, 30H ;自我传送,非法
字节传送MOV指令的速记默写示例:
默记操作数“#AdR@”。由于不能数据赋值,所以只能分别以(累加器)A、d(寄存器direct)、R(工作寄存器Rn)和@(间质寻址Ri)分别为第一操作数,即目的操作数。源操作数仍按顺序排列组合依次很快就可写出片内数据传送的15条指令。
2.2 对于操作数类型二,下面以一些指令为例简说操作码识记如下:
左移指令RL:第一个字母取rotate 首字母表示进行循环,第二个字母取left首字母,即为左循环,第二个字母如取right首字母就组合为右循环指令RR,位单元CY内容也可作为第8位,即最高位参与循环,就有了带进位左循环RLC和带进位右循环RRC指令。循环操作只能对累加器A内容进行操作。所以指令很简单,只有相应4条循环移位指令。
逻辑运算指令:ANL,前两个字母表示逻辑操作方式为and即“与”操作,第三个字母取“逻辑”的英文单词logic首字母,表示是逻辑运算功能;“或”英文单词OR结合字母L就构成逻辑或运算指令操作码ORL助记符。exclusive or是异或的意思,各取一个字母X,R组合表示异或,加上字母L形成异或逻辑运算符号XRL。操作数组合除仿算术运算指令操作数组合技巧以外,适度完善不规则组合即可。
XCH:exchange 交换。该指令第一操作数必须是累加器A,可利用巧记操作数序列列写第二操作数。显然序列中#,即立即数不能赋值,所以不能出现。而半字节交换指令第二操作数,序列中只有Ri可以分割成字符和Ri两字符,其余不能分割。因此操作数据此可记住半字节交换指令只有一条,且为XCHD A,@Ri。XCHD操作码末尾字母“D”即divde,此处为分割的意思。
JZ: J为英文单词JUMP首字母,意为跳,表明实现跳跳转功能。跳的条件由操作码字母J后条件决定,满足条件跳转,否则顺序执行下一条指令,既不跳转。Z:zero,中文含义“零”,默认对累加器A进行“判零”。
CJNE:C是英文单词compare(比较)首字母;J:跳转;字母J后是跳转条件:两操作数比较满足Not equal,即不想等时,跳转。
DJNZ:D是英文单词DECREASE(减少)首字母;J后是跳转条件,操作数减1后,结果NOT ZERO即不为零就执行跳转,否则顺序往下执行。
当然有少数没有明显记忆规律的指令仍需死记,其实动些脑子,也许你会发现适合自己记忆的窍门。总之,指令学习的有效方法就是多用巧记。本文旨在抛砖引玉,给出一些指令学习技巧与思路,文中不到之处还请理解。
参考文献
[1]杨文龙.单片机原理及应用[M].西安:西安电子科技大学出版,2006.
[2]章鸿猷.英汉计算机词汇[M].北京:清华大学出版社,1997.
转载请注明出处学文网 » 8051单片机指令的快速记忆