版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、指令系统,根据指令的功能,AT89C51指令系统可分为以下五类:-数据传输指令;两条算术运算指令;三个逻辑运算和移位指令;4.控制转移指令。五位数运算指令。1。数据传输指令,存储空间:片内随机存取存储器,片外随机存取存储器,片外只读存储器,目的:提供操作数据之间的传输。1。片内ram、rn、ri、direct、a、# data、dptr之间的传输指令中内部数据存储器中Rn的地址由当前工作寄存器区域选择位RS1和RS0决定,可以是00H07H、08H0FH、10H17H、18H1FH。例如: MOV R0,A,如果当前RS1和RS0被设置为00(即工作寄存器0区域),当指令被执行时,累加器A中的
2、数据被传送到工作寄存器R0(内部随机存取存储器00H)单元。表1内部内存数据传输指令列表,让内部内存20H单元的内容为30H,即(20H)=30H,并知道(30H)=40H,(40H)=20H,端口P1=0CCH。执行以下指令后,询问内存单元、寄存器和端口的内容:MOVPSW,#00H MOV R0,#00H。R0 MOV R1,A MOV B,R1 MOV 90H,#90H MOV R0,P1 MOV P2,P1 MOV 30H,#30H MOV 40H,00h,(R0)=(R1)=(A)=(P2)=(20H)=(30H)=(40H)=,2片外RAM传输指令:movx a,dptr movx
3、 a,rimovx dptr,amovx ri,A,dptr,ri,A,这组指令用于在累加器a和内存单元或外部数据存储器的输入输出端口之间传输数据。当执行前两个指令时,RD有效信号在引脚P3.7上输出,用作外部数据存储器的读选通信号。当最后两条指令被执行时,WR有效信号在引脚P3.6上输出,用作外部数据存储器的写选通信号。包含在DPTR中的16位地址信息由P0(低8位)和P2(高8位)输出,而数据信息由P0端口(分时总线)传输。当R1用作间接寻址寄存器时,由R1指定的8位地址信息被输出,并且8位数据以分时方式在端口P0传输。3。片外只读存储器传输,MOVC A,个人电脑MOVC A,DPTR
4、A,这是两个有用的表查找指令,可以用来查找存储在外部程序存储器中的常数表。第一条指令使用PC作为基址寄存器,A作为无符号数的内容与PC(下一条指令的起始地址)的内容相加,得到一个16位地址,由这个地址指示的程序存储单元的内容被送到累加器A.该指令的优点是不改变特殊功能寄存器和PC机的状态,表中的常量可以根据a的内容进行检索,缺点是表只能放在查表指令后面的256个单元中,表的大小有限,只能被一个程序使用。在第二条指令中,DPTR被用作基址寄存器,累加器A的内容作为无符号数加到DPTR,得到一个16位地址,由这个地址指示的程序存储单元的内容被送到累加器A.该指令的执行结果只与指针DPTR和累加器a
5、的内容有关,与存储该指令的地址无关。因此,表的大小和位置可以在64 KB程序存储器中任意排列,并且表可以由所有程序块共享。4.堆栈操作指令推送直接弹出直接在内存中,一个先进先出的区域可以设置,这就是所谓的堆栈。在特殊函数寄存器中有一个堆栈指针,它指示堆栈顶部的位置。推送指令的功能是:首先将堆栈指针SP的内容加1,然后将直接地址指示的内容发送到SP指示的内部内存单元;堆栈指令的功能是将存储处理器指示的内部内存单元的内容发送到直接地址指示的字节单元,然后从堆栈指针存储处理器的内容中减去1。例如,当:进入中断服务子程序时,程序状态寄存器PSW、累加器A和数据指针DPTR被堆叠以进行保护。将当前服务点
6、设置为60H。然后,在执行程序段PUSH PSW PUSH ACC PUSH DPL PUSH DPH之后,将SP的内容修改为64H,并将PSW、A、DPL和DPH的内容依次堆叠在单元61H、62H、63H和64H中。中断服务程序结束前,接下来的程序段(SP保持64H不变),执行POP DPH POP DPL POP ACC POP PSW后,SP的内容修改为60H,64H、63H、62H、61H单元的内容依次弹出到DPH、DPL、A、PSW。AT89C51提供了一个向上上升的堆栈,因此当SP设置初始值时应该充分考虑堆栈的深度,并且应该保留适当的单元空间以满足堆栈的使用。5。字节交换指令XCH
7、 A、RNXCH A、RIXCH A、直接XCHD A和RISWAP A的前三个指令是交换累加器A的内容和源操作数的内容;最后两条指令是半字节交换指令,最后一条指令是交换累加器A的高4位和低4位,另一条指令是交换累加器A的低4位和由(R1)表示的内部随机存取存储器单元的低4位。2。算术运算指令(加法、减法、乘法和除法),1。加法指令(1)普通加法指令add a、rn add a、direct add a、ri add a、data、a是操作数和结果寄存器。例如, 120和100的总和是220,这显然大于127。相加时,符号位(最高位)从0变为1,两个正数相加的结果变为负数。事实上,它是和数的最
8、高位,符号位移到进位标记。类似地,当把120和100相加时,结果应该是220,明显小于128。添加10001000-1201001100-100、10010100-220时,符号位从1变为0,两个负数的相加结果变为正数,因为符号移动到进位标志位6。(2)进位加法指令addc a、rnaddc a、direct addc a、riaddc a、data在功能上与普通加法指令相似,唯一的区别是加法时应将最后一个进位标志Cy的内容加在一起,对标志位的影响与普通加法指令相同。增量指令INC A INC Rn INC直接INC Ri INC DPTR这组指令的功能是将指令中指示的操作数的内容加1。如果原
9、始内容为0FFH,则加1后会溢出,使操作数的内容变为00H,但不影响任何标志。最后一条指令是向16位数据指针寄存器DPTR添加1。当指令被执行时,较低的8位指针DPL的内容首先被加1,并且当溢出发生时,较高的8位指针DPH被加1,但是没有标志被影响。(4)十进制调整指令阿达该指令对累加器A参与的BCD码相加运算得到的8位结果进行十进制调整,使累加器A中的内容调整为2位压缩BCD码的个数。必须注意,它只能跟随加法指令,而不能调整减法指令的结果,并且它的结果不影响溢出标志。当执行该指令时,判断A中的低4位是否大于9,辅助进位标志AC是否为“1”。如果满足两个条件中的一个,低4位加6;类似地,当A中
10、高4位的条件之一大于9或进位标志Cy为“1”时,高4位加6。例如,增加了两个BCD编号36和45,结果应该是BCD代码81。程序如下:MOV A,36H ADD A,45H阿达A。在该程序中,第一条指令将立即数36H(BCD码36)发送给累加器A;在第二条指令中,将:0011011036010010145,01111017B000001006,100000181相加如下,得到结果7BH第三条指令对累加器A进行十进制调整,低4位(0BH)大于9,所以需要加6得到调整后的BCD码81。2。减法指令(1)带有进位子块a、rn子块a、直接子块a、ri子块a、数据的减法指令这组指令的功能是用第二个操作数
11、和进位标志:减去累加器a的内容,并将结果发送回累加器a在减法过程中,如果位7(D7)有借用位,进位标志Cy设置为“1”,否则清零为“0”;如果位3(D3)已被借用,辅助进位标志AC被设置为“1”,否则,它被清除为“0”;如果位6有借用但位7没有,或者位7有借用但位6没有,溢出标志OV被设置为“1”,否则它被清除为“0”。要在不借用的情况下执行减法,必须首先将Cy清0。这组指令的功能是:从指定操作数的内容中减去1。如果原始操作数为00H,则在减去1后将产生下溢,这使得操作数变为0FFH,但不影响任何标志。加减小结:加ADDC SUBB,A,Rn日#数据直接,1。目标操作数都是a,源操作数都在内部
12、随机存取存储器中。这一结果影响了CY,OV,AC,p.INC DEC,A Rn Direct Ri,不同:INC DPTR阿达,1,INC和DEC指令不影响除p以外的其他标志位.2.数据存取指令影响控制位;3.乘法指令乘法指令完成单字节乘法。只有一个指令, MUL AB。该指令的功能是:将累加器A和寄存器b的内容相乘。乘积的低8位存储在累加器A中,高8位存储在寄存器b中。如果乘积超过0FFH,溢出标志OV被设置为“1”,否则被清0。进位标志Cy总是清0。4。除法指令除法指令完成单字节除法。只有一个指令: DIV AB。该指令的功能是:将累加器A中的内容除以寄存器b中的8位无符号整数。获得的商的
13、整数部分存储在累加器A中,其余部分存储在寄存器b中。清除“0”进位标志Cy和溢出标志OV。如果B中的原始内容是0,则在执行指令之后,A和B中的内容是不确定的,并且溢出标志OV被设置为“1”。在任何情况下,进位标志Cy总是清0。(1)外部内存30H单元的内容发送到R3,内部内存30H,外部内存1000H。(2)只读存储器1000H单元的内容被传送到外部随机存取存储器200H单元,并被发送到内部随机存取存储器20H。(3)内部随机存取存储器20H单元的内容被传送到R6并被发送到内部随机存取存储器30H。要完成下面的数据传输,如何使用MCS-51指令来完成。练习1:(1)mov r0,#30H MO
14、VXA,r0movr3,amov30h,amovdptr,# 1000h movx dptr,a (2) movdptr,# 1000h mova,# 0movca,a dptr movdptr,# 200h movx dptr,amov20h A (3) MOV R6,20h MOV 30H,20H,众所周知(R1)=75H,(75H)=45H和(A)请在独立执行以下每个指令后,将结果填入横线:XCH A、R1 (A)=(R1)=XCHD A、R1 (A)=(R1)=SWAP A (A)=ADD A、#30 (A)=(CY)=阿达(A)=(A)=(75h(R1)=5ch(A)=55h(R1)
15、=4ch(A)=0c 5h(A)=7ah(CY)=0(A)=80h,练习2:1)当PSW=18h, 当前工作寄存器是()和0。在子程序调用过程中断点地址栈被保护后,SP的值是()a,36H B,37HC,38H D,39H 3。 )以下指令将在执行后影响标志位:(A)MOV 30H、R2 B、阿达C、CJNE A、#10H、LOOP D、INC DPTR 4)以下指令使用不正确:(A)MOV 20H、A B、MOV 30H、C 40H、MOV A、DPTR D、MOV A、R1、练习3:3。逻辑运算指令,包括:and (ANL),or (ORL),exclusive or (XRL)的否定,其他逻辑指令,都是为了一个,源操作数。中华人民共和国;将“0”CPL a清零至累加器a;为累加器A一点一点地反相R1;累加器A的内容向左循环移位1位RLC;累加器A的内容通过进位标志位左移1位RR A;累加器内容向右移动一位;这组指令的功能是:对累加器a的内容进行简单的逻辑运算,除了带进位标志的移位指令外,cy、AC、ov等标志不受影响。4.控制转移指令AT89C51提供了丰富的控制转移指令,因此编程相当灵活方便。其中,有64 KB范围内的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 一级建造师考试(机电工程管理与实务)题库含答案(2025年吉林白城市)
- 中药注射剂临床应用指南(2026版)
- 粮情测控系统安装运维管理规程
- 安全生产合理化建议征集评审管理办法
- 灵活就业人员职业技能提升培训实施方案
- 小儿常见疾病护理图谱
- Ganodermatriol-生命科学试剂-MCE
- 手术患者术前准备与护理
- 2026jsp基本面试题及答案
- 心脏粘液瘤的跨学科护理合作
- DB14T 1938-2019 政务信息资源数据共享交换平台(外网)安全技术规范
- 2026贵州贵阳贵安卫生健康系统事业单位招聘231人考试备考试题及答案解析
- 2026年哈三中高三下学期三模数学试卷及答案
- 2026年人教版三年级下册道德与法治知识点总结
- 《降维沟通:成为社牛的说话之道》阅读记录
- 耕地核查工作方案
- 2026年十大时事热点话题命题作文素材(全新版)
- 成都经济技术开发区(龙泉驿区)2026上半年“蓉漂人才荟”公开考核招聘事业单位工作人员(10人)考试备考试题及答案解析
- 人工智能训练师三级理论知识试题及答案
- 2026抖音小游戏行业白皮书
- 【《离子速度成像技术研究文献综述》5500字】
评论
0/150
提交评论