




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章指令系统,硅谷芯微技术贡献网址:www.threeway.cc,本章重点:,理解指令的6种寻址方式理解各种类型指令的用法能读懂简单的程序,3.1MCS51指令概述,3.1.1机器指令:用二进制编码表示的,能够被计算机直接识别和执行的语言称为机器语言,对应的指令成为机器指令。机器指令不需要翻译就可直接运行,是计算机发展初期使用的。,3.1.2汇编指令:机器语言的繁杂和不便操作直接催生了汇编指令。汇编语言用助记符、符号和数字来表示机器指令。它与机器语言指令一一对应,便于理解和记忆。但是汇编语言并不能直接被机器识别,因此汇编程序在编写好后必须被翻译成相应的机器语言才能执行,而这些工作是由编译器完成的。,3.1.3汇编伪指令伪指令和汇编指令属于同一范畴,属于一种符号语言。不同之处在于,汇编指令都有其对应的机器码,而伪指令没有对应的机器码,伪指令的作用在于控制编译器的编译过程。也就是说,汇编指令的实质是对应的机器指令,程序运行过程中才会被执行。而伪指令的实质是编译过程控制语句,编译完成后伪指令就完成使命了,在程序烧录进单片机实际运行过程中并没有伪指令的参与。,3.2指令的语句结构MCS-51汇编语言的完整语句结构如图3.1,包括标号、操作码、操作数和注释4部分。其中,操作码和操作数是必选部分,而标号和注释(方括号括起来的部分)是可选项目。,寻址方式,是指指令语句中操作数的解析方式。即,操作数按照什么规则来存取。,3.3MCS51的6中寻址方式,3.3.1立即寻址又叫立即数寻址,是指在指令中直接给出参与运算的数字。为了区别于作为地址的数字,把这种直接使用的数字称为立即数,并在其前面加上#以区别于作为地址的数字。因为立即数本质上即是一个数字,因此其只能作为源操作数而不能作为目的操作数(目的操作数需要的是一个地址)。如:MOVA,#30H;把#30H复制到A中,3.3.2直接寻址操作数来源于直接地址。所谓直接地址,是指RAM区域的一个字节型地址空间。大多数直接寻址会使用用户RAM区(30H7FH),当位寻址区(20H2FH)被按字节寻址时,也属于直接寻址范畴。直接寻址可作为源操作数或目的操作数,当其用作源操作数时,实际作为操作数的是该地址内存储的数据。如MOV30H,#40HMOVA,30H第二句中源操作数的30H即为直接寻址,此时实际使用的操作数其实是存储于30H中的#40H,所以程序执行后A中实际值为#40H。直接寻址作为目的操作数时,实际指示的是这个地址本身(而不是地址内的数),因为目的操作数的任务是存储操作后的结果数据,因此需要的是一个地址(虽然命名为操作数,但实际叫“存储地址”更加确切)。直接寻址作为目的操作数的一个实例是上面第一句语句中的30H。,3.3.3寄存器寻址也叫寄存器直接寻址(以明确区别于寄存器间接寻址),此处的寄存器指的是工作寄存器R0R7。无论作为源操作数还是目的操作数,寄存器寻址的特点和直接寻址均很类似。实际上,在内部结构一节我们已经知道,工作寄存器区和用户RAM区同属于RAM区,在逻辑上本来就是同级的。MOVA,R0,3.3.4寄存器间接寻址寄存器间接寻址用于源操作数时,语句中的寄存器中取出的不再是操作数,而是操作数的地址,真正的操作数需要用这个地址去寻址RAM区才能得到。同样,寄存器间接寻址用于目的操作数时,实际目的地址不再是语句中的寄存器,而是该寄存器中内容对应的RAM区地址。如图3.2所示,R0寄存器内装入#34H,在执行完语句MOVA,R0后,实际取到的操作数是RAM区域的34H地址处的地址(#56H)。符号是间接寻址的标志符,不能省略或者混用。此外,间接寻址寄存器只能使用工作寄存器区的R0或R1,其余R2R7不可使用。(4个区中的R0和R1均可),3.3.5基址+变址寻址首先,基址+变址寻址也属于一种间接寻址,即不是直接给出操作数,而是给出操作数的地址。与寄存器间接寻址(操作数地址由工作寄存器给出)不同,基址+变址寻址的操作数地址由两部分给出,分别成为基地址和变地址。典型的基址+变址寻址的实例如:MOVCA,A+DPTR其中,DPTR数据指针内指出基地址,A中存放变地址,A+DPTR共同指出了真实操作数的地址。,3.3.6位寻址由于51单片机内部包含一个位处理器,因此具有位寻址能力。可以位操作的内容有RAM的位寻址区(20H2FH)、可位寻址的SFR等。MCS-51的指令系统中有专门设置的位寻址指令用于按位操作这些内容。,3.4常用符号,Rn:工作寄存器中的寄存器R0、R1R7之一,Ri:工作寄存器中的寄存器R0或R1#data:8位立即数#data16:16位立即数direct:片内RAM或SFR的地址(8位):间接寻址寄存器Bit:片内RAM或SFR的位地址addr11:11位目的地址addr16:16位目的地址rel:补码形式的8位地址偏移量。偏移范围为-128127/:位操作指令中,该位求反后参与操作,不影响该位X:片内RAM的直接地址或寄存器(X):相应地址单元中的内容:箭头左边的内容送入箭头右边的单元内,3.5指令分类,以下分数据传送类、算术运算类、逻辑运算与移位类、控制转移类、布尔操作类共5个大类来详细讲解MCS-51的指令系统:3.5.1.数据传送类助记符:MOV、MOVX、MOVCXCH、XCHD、SWAPPUSH、POPMOV:将后面的立即数(地址中的数据)放到前面的地址(寄存器)中。MOVR0,R1MOVX:用于片外寻址,由于使用外部存储器技术已经基本被淘汰,在此就不做过多讲解。MOVC:主要用于查表中,是将ROM中的数取出。本组指令也被称为查表指令,常用此指令来查一个已做好在ROM中的表格。MOVDPTR,#T_tabMOVA,R0MOVCA,A+DPTR.T_tab:DB0,1,4,9,16,25,XCH:用于两个字节型变量互相交换数据。XCHD:用于两个字节型变量互相交换低4位数据(高4位保持不变)。SWAPA:指令,用于将A的高4位和低4位互相交换。PUSH、POP:堆栈操作指令,分别为压栈和弹栈操作。这两句经常用来在进入中断服务程序时保存ACC和PSW,以保证主程序中的ACC和PSW不会被中断服务程序破坏掉。注意压栈和出栈时,先压后出,后压先出。总结:数据传送类指令结构简单、容易理解,关键在于熟练掌握并应用于各种寻址方式。,3.5.2.算术运算类算术运算主要对8位无符号数;也可用于带符号数运算。包括:加、减、乘、除、加1、减1运算指令影响PSW有关位。,助记符:ADDADDCINCMULDASUBBDECDIVADD:前后两数相加,和放入前面寄存器。影响进位标志位C。ADDC:前后两数相加再加上进位标志位C的值,和放入前面寄存器。ADDC往往和ADD配合使用,完成多字节加法。结果对C有影响。INC:对地址或者寄存器里面的数据进行加一。不影响进位标志位C。SUBB:前后两数想减再减去C的值,差放入前面寄存器,同ADDC,结果对C有影响。DEC:对地址或者寄存器里面的数据进行减一。不影响进位标志位。MULAB:AB两数相乘,积的低八位放入A中,高八位放入B中。DIVAB:AB两数相除,商放入A中,余数放入B中。DAA:十进制调整,可以看成对十六进制数进行十进制运算。如下:MOVA,#49H;A=49HADDA,#1;加一DAA;A=50H,3.5.3逻辑运算类,助记符:ANLORLCPLCLRRRRLRRCRLCANL:前后两数按位相与,结果放入前面寄存器。ORL:前后两数按位相或,结果放入前面寄存器。CPL:对累加器A(bit位地址)数据按位进行取反。CLR:对累加器A(bit位地址)中数据清零。RR:循环右移。RRC:带C循环右移。RL:循环左移。RLC:带C循环左移。,助记符:LJMPAJMPJMPSJMPJZJCJBJNZJNCINBLCALLACALLRETRETICJNEDJNZLJMP:无条件跳转,寻址范围64k。AJMP:无条件跳转,寻址范围2k。JMP:散转,跳转地址由A+DPTR决定。SJMP:相对跳转,范围上下128字节。JZ:A中数据为0跳转,不为0向下执行。JNZ:与JZ相反。JC、JB:C、bit位为0向下执行,不为0跳转。JNC、JNB:与JC、JB相反。LCALL、ACAlL:子程序调用。前者调用范围64k,后者2K。RET、RETI:前者,子程序返回,与LCALL、ACALL配合使用。后者只用于中断返回。CJNE:两数相比较相等则向下执行,不等则跳转。同时前面数大于后面数,C=0。后面数大于前面数,C=1。DJNZ:该数减一是否为0,为零则向下执行,不为0则跳转。CJNE和DJNZ常用来实现循环程序结构,即是两种最典型的循环结构。,3.5.4控制转移类,3.5.5.布尔操作类(位操作),助记符:MOVCLRCPLSETBANLORLJB(JNB)JC(JNC)MOV:对位进行赋值。CLR:对该位进行清零。CPL:对该位进行取反。SETB:对该位置1。ANL:相与。ORL:相或。,3.5.6.伪指令,助记符:ORGCSEGDBEQUENDDSEGDWBIT,ORG伪指令用于指定该指令语句后一段语句生成的机器码在ROM内存储的起始点,每条ORG指令的作用范围为本条语句后面的一条指令开始到下一个ORG指令出现为止。END伪指令为汇编程序结束标志,编译器将无视END后的指令语句。DB、DW伪指令用于在ROM中开辟一些数值区域,DB开辟的数值区域以字节(8bit)为单位,DW开辟的数值区域以双字节(16bit)为单位。EQU指令和DAT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人与海鸥课件
- 《谁看见过风》诗歌课件
- 《读后感》课件教学课件
- 肺移植患者术后的护理
- 慢性肾脏病护理查房
- 高效团队管理技巧培训
- 童年的家绘本讲解
- 电解质代谢紊乱患者护理
- 高血压低血压的自我护理
- 《苏三起解》课件
- 加油站人员培训和安全意识教育
- 全国职业大赛(中职)ZZ006水利工程制图与应用赛项赛题库共计10套
- 复方电解质醋酸钠葡萄糖注射液-药品临床应用解读
- 变压器租赁协议书x
- 高压电气设备试验的基本知识
- 整理我的小书桌(课件)小学劳动二年级通用版
- 危重产科患者麻醉管理
- 宾馆旅客财物保管制度
- 学前教育政策法规全套精美课件
- 三相桥式整流
- 2023年上海国企中远海运(上海)有限公司招聘笔试题库含答案解析
评论
0/150
提交评论