微机原理ch03指令第三次课_第1页
微机原理ch03指令第三次课_第2页
微机原理ch03指令第三次课_第3页
微机原理ch03指令第三次课_第4页
微机原理ch03指令第三次课_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

知识回顾:数据传送类MOV指令的小寻寻寻A立即寄存知识回顾:数据传送类A与片外RAM的传递指令

PUSHPOPMOVXA,@DPTRMOVX@DPTR,AMOVCA,@A+DPTRXCHA,RnXCHDSWAP3第三章指令指令指令系统的MCS-51指令系统分类4二.算术操作加、减、乘、除、加1和减1程序状态字D7D6D5D4D3D2D1F0P5ADD加法指令(Addition,4条ADDA,(A)+(Rn)ADDA,ADDA,ADDA,(A)+#dataD7有进位时,Cy置D7,D6中1个有进位而另1没有,OV置6例:加法指设(A)=0C3HADDA,7带进位的加法指令(AddwithADDCA,(A)+(Rn)+CyADDCA,(A)+(direct)+CyADDCA,(A)+((Ri))+CyADDCA,(A)+#data+Cy8带进位位的加法指令(4条功能:51单片机是一种8位机,只能做8算,运算的范围只有0~255,这在实际工作中是的,因此就要进行扩 9000100000110001100001010010000010000

PSW中的CY位了。换言之,CY就相当于是100H然后再做10H30HCY,结果是41H,所以设:1067H存在R1R030A0H存在R3R2中,计算;R0+R2→A和;R1+R3+CY→A和INC增1INCINCINC(direct)+1INCINC(DPTR)+1DA十进制调整指(Decimal跟DAA指令,对结果进行十进制调整。BCD码中无1111编结果11,正确结果为DA指若(A)3-0>9或AC=1(A)(A)若(A)7-4>9或Cy=1(A)(A)例如:(A)=56H,(R5)=67H,看作缩BCD码,进行BCD码加ADDA,

0101

DA

DA

0110 1011+)0110 10010

带借位的减法指令(SubtractwithSUBBA,SUBBA,SUBBA,(A)-((Ri))-SUBBA,(A)-#data-D7有借位时,Cy置D3有借位时,Ac置D7,D6中1个有进位而另1没有,OV置例SUBBA,R2DEC减1指令DECDEC(Rn)-DECDEC((Ri))-1不影响PSW乘法和除乘法MULA×B除法指令DIVA/B商:A,余 乘法指令(1条MUL A=4EH,B=5DH,执行指令MULAB后,的则是56HOV=P=除法指令(1条DIV ;A÷B的商→A,余数如:A=11H,B=04H,执行指令DIVAB后,CY=P=A累加A累加第三章指令指令指令系统的MCS-51指令系统分类逻辑运算类单单字节逻辑操作数运双字节逻辑操作数运单字节逻辑操作数运算累加器累加器A清“零”指令累加器A取反指令累加器A循环左移指令累加器A连同进位位循环左移指令累加器A循环右移指令累加器A连同进位位循环右移指令累加器A清“零CLR ;CLR;(A)累加器A清CLRA;CLRSUBBA,累加器A取反CPL ;CPLMOVA,CPL累加器A循环左RL ;RL(Rotate–RLA;MOVA,RL 累加器A连同进位位循环左移指RLCA;RLC(RotateLeftthroughtheRLCRLC

对RLC指令,在CY=0时,RLC相当于乘以累加器A循环右RR ;RR(RotateRR 累加器A连同进位位循环右移指RRC

;RRC(RotateRightthroughtheRRCRRC

对RRC指令,在CY=0时,RRC相当于除以双字节逻辑操作数运算逻辑逻辑“或”指逻辑异或”指逻辑“与”运算指令ANLAndLogic指令助记符为ANL,用符号“∧”指令功能是将目的地址单元中的数和源地址单元中的数按“位”相“与”,其结果放回目的地址单例:设(A)=A3H(10100011B),(R0)=AAH(10101010B)ANLANLP1=F0H,P1.7至P1.4位状态不变,P1.3至P1.0位被清除逻辑“与”运算指令用做清除 某些位小结ANLA,ANLA,

;A指令助记符为ORL,用符号“∨”表示

;(A)←(A) direct,#data指令功能是将目的地址单元中的数和源地址单元中的数按“位相“或”,其结果放回目的地址单例:设(A)=0A3H ORLA,(A)=E7H(11101。小结ORLA,ORLA,

;A=不逻辑“异或”运算指令XRL(Exclusive-OrLogic指令助记符为XRL,用符号“⊕”表示,其运算规则0⊕0=0, 0⊕1=1,

direct,#data“位”例:设(A)=0A3H(10100011B),(R0)=045H(01000l0lB)XRL1010001 01000101110011逻辑“异或”。小结XRLA,#FFHXRLA,#00H;A不 A累加寻《微机原理及应用》课(A)=7AH, 内部RAM(30H)=0A5H,分析下列ANLA,ORL30H,XRLA,CPL

第三章指令指令指令系统的MCS-51指令系统分类控制转移类指令(17条()。包括以无条件转移和条相对转移和绝对长转移调用与短转移类指令:AJMP长转移类指令:LJMP相对转移指令:SJMP间接转移指令:JMP控制转移类指令(17条无条件转移指令AJMP(AbsoluteJump) 器《微机原理及应用》课PC的跳转范围:PCPC的跳转范围:PC当前值在同一个2KBPC15PC14PC13PC12PC110000000000PC15PC14PC13PC12PC111111111111例:假定addr11= B,标号tt的地址为1030H.执行指令:tt:AJMPaddr11序转移到地址()去执行.解:PC H------0001,0000,0011,0010BPC15110001,0addr11接成16位地址0001,0001,0000,0000B 1100 SJMP实现的程序转移LOOP: ┇SJMP┇长跳转指令LJMP(LongLJMP指令执行时把指令的第二和第三字节分别装入PC的 和低 目标地址可以在64K程 器地址空间的任何位置《微机原理及应用》课长跳转指令例:在ROM0000H单元存放指令: ;(PC)←3000H023000则上电复位后程序将跳到3000H 间接跳转指令 由A中8位无符号数与DPTR的16位数内容以DPTR内容作为基址,A的内容作变址给A赋予不同的值,即可实现程序的多无条件转移类指令AJMP,LJMP,SJMP,JMP跳转的范围短转移类指令:AJMP长转移类指令:LJMP相对转移指令:SJMP指令构成不AJMP、LJMP后跟的是绝对地而SJMP后跟的是相对地址

转移范围-,原则上,所有用SJMP或AJMP的地方都可用LJMP2JMP与前三条指令相比有所间接转移指令:JMP。指令对A、DPTR和标志位均无影条件转移 rel(JumpifAis JNZrel(JumpifAisNot

比较不相等转移指令CJNE:CompareX1toX2,andJumpifNot

A,direct,relA,#data,relRn,#data,rel@Ri,#data,比较前面两个操作数的大小,如果它们的值不相等则(整数),则进位标志位置1“0”。比较不相等转移指令减1不为0转移指令DJNZ(DecrementRegisterandJumpifNot把减1与条件转移两种 Rn, Rn←(Rn)-1若(Rn)=0,则PC否则PC direct,若(direct)=0,则PC否则PC允许程序员把寄存器Rn或内部RAM的direct单元用作程序循环计数器。主要用于控制程序循环。以减1后是否为“0”作短调用指令ACALL(Absolutesubroutine addrll或ACALLPC←SP←(SP)+1,(SP)←(PCSP←(SP)+1,(SP)←(PCPC10~0←

;标号表示子程序首当前PC压子程序首地址送PC,实现转长调用指令LCALL(Longsubroutine addr16LCALLPC←(PC)+3SP←(SP)+1,(SP)←(PCSP←(SP)+1,(SP)←(PCPC←addr功能:在主程序中调用子

当前PC子程序首地址送PC两者的区别:对短调用指令,被调用子程 地址必须与调用 《微机原理及应用》课(SP)=30H,PC)=3000H,标号为SUB1子程序首址在2500H执行指令:3000H:LCALL则:(SP)= (31H)=

(PC)=2500H,(32H)= PC←(PC)+3PC←(PC)+3SP←(SP)+1,(SP)←(PCSP←(SP)+1,(SP)←

addraddr《微机原理及应用》课返回子程序返回指令RET PC15~8←((SP)),SP← PC7~0←((SP)),SP←

中断返回指令RETI(Returnfrom PC15~8←((SP)),SP←PC7~0←((SP)),SP←

给PC,实现返回除了实现程序返回外,清除中断响应的 《微机原理及应用》课空操作指令NOP(No常用于程序中等PC(PC) 第三章指令指令指令系统的MCS-51指令系统分类《微机原理及应用》课位操作指MCS-51单片机的硬件结构中,有一个位处理器(又称布尔处器),控制程序转移等。位地址位操作区:内部RAM的20H-2FH单元,128个位单元(位地址空间可位寻址的特殊功能寄存器:字节地址均可被8整除,如A累加器,在进行位处理CY用作“位累加器” 《微机原理及应用》课位操作指数据位MOVC,bit;CMOVbit,C;bit实现位累加器(CY)和其它位地址之间的数据位变量CLRCPL

;Cy

CLRCPL

;bitSETBC; SETBbit; 《微机原理及应用》课 ANLC,/bit逻辑或

;C(C)∧;C(C)∧ORLC,bit ;C(C)∨(bit)ORLC,/ ;C(C)∨(/bit)注意:指定的位地址中的值本身并不发 《微机原理及应用》课判布尔累加器C转移指判位变量转移判位变量 转移指判布尔累加器C转移JC Jumpifcarryisset),rel:8位相对偏移JNC ;(Jumpifcarryisnot 《微机原理及应用》课JBbit, ;(JumpifdirectbitisJNBbit, ;(Jumpifdirectbitisnot判位变量 转移指 JBCbit,rel ;(Jumpifdirectbitisset&clearbit) 一、助记符号 方表格列英文还功能模

CJNE-CompareX1X2andjumpifnot

RLC-RotateLeftthroughthe3功能模 单片机的44按功能相似原则为2~3组。这样,化整为零,各个击破,实现快 MOVMOVC程 MOVXANLORL

ADDSUBBLCALLRET 希望能起到抛砖引玉的作用,在学习单片机的过程中能找到适合自己的方法来。但是,有了例判断以下指令的正误。MOVMOVINCDECCLR答(1)错误,寄存器间接寻址只允许使用R0和Rl两个寄存器。MOVMOVMOVR0,#0D0HMOVA,@R0POPACC(3)不行,因为SFR区只能用直接寻址不能用间接寻例欲将外部数据 MOVXMOVMOVXA,@MOVP2,#30HMOVR0,#57HMOVXA,@R0MOVP2,#30HMOVR2、#57HMOVXA,@R2答(1)不行,MCS—51指令系统中没有该指令。(2))可以。)不行。间接寻址指令,只允许使用和间接寻址。RAM中2100H单元内容的奇MOVDPTR,#2100HMOVXA,@DPTRXRLA, MOVX@DPTR,ANLA,#FFH;A不变ANLA,#00H;A=0ORLAFFHA=0FFHORLA,#00H;A=不变XRLA,#FFH;A=AXRLA,#00H;A不变传送类指令MOV、MOVX、MOVC等,其区别?怎样正确使用MOV类指令 片内的数 区(即内部RAM和SFR区片内RAM区的各字节单元,也可 位单请注意这些单元地址都只有8位而非16MOVX类指令专门用 片外64KB的数 通常与16位DPTR搭配使用,MOVXA,@DPTR和MOVX@DPTR,还可以借用P2口锁存器和Ri寄存器拼凑的16位地址 A,@RiMOVX@Ri,A,隐含指定P2锁存器内容为高8位数据地MOVC类指令专门用 片外64K的程 空对于这个空间,用户虽然不能随意改写(根本不提供写指令 A,@A+DPTR和MOVCA,@A+PC怎样才能避免出 指令刚开始编程时,初学者常常会写出一 指令,汇编时语错误一大堆。其实归纳起来,这些语法错误无非是两①指令表达不合MOV这种错误容易检查出来,只要大家从逻辑思维的角度仔细想想,就能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论