ImageVerifierCode 换一换
格式:DOC , 页数:31 ,大小:428.04KB ,
资源ID:2578534      下载积分:12 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2578534.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(新第7章单片机指令系统.doc)为本站上传会员【精****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

新第7章单片机指令系统.doc

1、第7章MCS-51系列单片机指令系统 指令是规定计算机执行特定操作的命令。具体而言,指令由CPU执行,CPU就是根据指令来指挥和控制微机各部分协调地动作,以完成规定的操作。计算机全部指令的集合叫作计算机指令系统,指令系统准确定义了计算机的处理能力。 以二进制代码形式存在指令叫做机器码指令。 机器码指令的优点是能被CPU直接理解和执行.缺点是编程烦琐、不直观、难记忆、易出错。 为克服机器码指令的缺点,人们通常用助记符(几个字母构成的符号)来代替机器码指令。助记符与机器码指令之间有一一对应的关系,助记符即所谓汇编指令。 汇编指令与机器指令并无本质区别。由于CPU只能执行机器指令, 汇编

2、指令必须先“汇编”成机器指令才能被CPU执行。 本章将详细介绍MCS—51的指令系统. 7。1 概述 7。1。1 指令格式 单片机汇编语言指令语句由标号、操作码、操作数和注释四项组成。其格式如下: LOOP: MOV A,#26H ;A←26H ① ② ③ ④ [标号:] 〈操作码> [操作数] [;注释] 说明: 1、凡用标有“[ ]”的项为可选项,标有“< >”的项为必选项; 2、各项之间之间必须用空格或制表符隔开; 3、各项功能。 ①标号是指令的符号地址,代表指出该指令机器码所在程序存储器单元的首地

3、址; ②操作码项规定了指令的操作功能,常用助记符表示。 ③操作数是指令的操作对象。操作数分为目标操作数(上例中的累加器A)和源操作数(上例中的#26H)。目标操作数在左,源操作数在右,中间用逗号“,”隔开,书写顺序不能颠倒。操作数可以是数字(地址、数据),也可以是标号或寄存器名等。 ④注释项是对指令功能作的说明,便于阅读和维护。 7.1。2 指令的描述约定 为便于单片机指令系统的学习,先对描述指令的一些符号进行说明。 Rn-—当前选中的寄存器区的8个工作寄存器(n=0,1,2,…,7)。 Ri-—当前选中的寄存器区中可作为间址寄存器的两个寄存器(i=0,1) direct

4、——内部数据存储单元的8位地址。既可以是一个内部RAM的低128B地址(8位二进制数),也可以是一个特殊功能寄存器的单元地址或名称符号。 #data-—指令中的8位常数(立即数)。 #data16-指令中的16位常数(立即数)。 addr16——用于LCALL和LJMP指令中的16位目的地址,目的地址的空间为64kB程序存储器地址。 #addr11——用于ACALL和AJMP指令中的11位目的地址,目的地址必须放在与下条指令第一个字节同一个2kB程序存储器空间之中. rel-—8位带符号的偏移量,用于所有的条件转移和SJMP等指令中,偏移量字节数是以下条指令的第一个字节为基值,偏移范

5、围为-128~+127。 @-—间接寻址方式中,表示后续寄存器为间接寻址寄存器. bit—-片内RAM或特殊寄存器的直接寻址位地址 /——位操作指令中,表示对该位取反后再参与操作,但不影响该位的原值。 (x) ——表示地址x单元中的内容. ((x)) ——表示x地址单元中的内容为地址的单元中的内容。 $——当前指令第一个字节的地址 ←——数据传输方向。可理解为箭头左边的内容被箭头右边的内容所取代。 ←→——数据交换.箭头两侧的内容互换。 7。1.3 寻址方式 寻址即寻找源操作数的方式。源操作数在哪里,可以在指令中,可以在寄存器中,也可以在存储器单元中。MCS—51单片机指令

6、系统有7种寻址方式:立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。其功能强大,使用灵活。下面分别介绍各种寻址方式. 1.立即寻址 源操作数在指令中。指令中直接给出一个8位或16位的二进制常数(立即数)参与操作,立即数前必须加“#”号表示。一般用#data表示。 例7-1 将立即数74H送入累加器A中 助记符: MOV A ,#85H ;A←#85H 机器码: 74 85 ;双字节指令 该指令的功能是将立即数85H送入累加器A中。 例7-2 将数据指针寄存器DPTR指向2008H 助记符:MOV DPTR, #200

7、8H ;DPTR← #2008H 机器码:90 20 08 ;三字节指令 该指令的功能是将立即数2008H送入数据指针寄存器DPTR中。 2.直接寻址 源操作数在内RAM中,指令中直接给出的操作数是片内RAM单元的地址,该地址单元中的数据才是真正被操作的对象.直接地址有direct表示. 直接寻址方式只适于内部RAM的数据传送。 例7-3 MOV A,44H ;A ←(44H) 该指令的功能是把内部RAM44H单元的内容送入累加器A 。 注意:指令中数据或地址不允许以字母打头,若出现的以字母A~F打头的十六进制数(立即数、单元地址或其它),均需加前导0.

8、3.寄存器寻址 源操作数在寄存器中,指令中给出的操作数是一个寄存器,在此寄存器中存放着真正被操作对象. 例7—4 INC R2 ;R2←(R2)+1 该指令的功能是将R2工作寄存器的内容加1后送回R2.如果指令执行前片内(R4)=24H,指令执行后后(R4)=25H。 4.寄存器间接寻址 源操作数所在地址由寄存器给出,寄存器只能是R1,R0或DPTR。指令中所给出的操作数是@Ri或@DPTR的形式。 例7—5 MOV A,@R0 ;A←((R0)) 该指令的功能是以R0中所提供的内容为地址,将该地址单元的内容(源操作数)送入累加 器A中。如果(

9、R0)=2BH , (2BH)=25H ,该指令的执行后(A)=25H 例7—6 MOVX A,@DPTR ;A←((DPTR)) 该指令的功能是以数据指令寄存器DPTR中的内容为地址,将片外数据存储器该地址单元的内容(源操作数)送入累加器A中。如果(DPTR)=2000H,片外RAM(2000H)=7EH ,该指令执行后(A)=7EH。 5.变址寻址(基址寄存器+变址寄存器间接寻址) 源操作数在某ROM单元,该单元地址由“(基址寄存器)+(变址寄存器)”决定。这种寻址方式是以16位程序计数器PC或数据指针寄存器DPTR作为基地址寄存器,以累加器A作为变址寄存器,将基地址寄存器

10、和变址寄存器中的内容求和,形成一个新的16位的地址,该地址中的内容便是要参与操作的源操作数。 变址寻址只能对ROM进行寻址。 MCS—51单片机指令系统中有三条变址寻址指令,皆为单字节指令,它们是: MOVC A,@A+PC ;A←((A)+(PC)) MOVC A,@A+DPTR ;A←((A)+(DPTR)) JMP @A+DPTR ;PC←(A)+(DPTR) 例7-7 设(A)=05AH,(DPTR)=2050H,程序存储器ROM的单元(2055H)=74H MOVC A,@A+DPTR 指令的执行后(A

11、)=74H。 6.相对寻址 指令中所给出的操作数是相对当前指令地址的偏移量(rel),真正的转移目标地址(即所谓源操作数)是PC当前值与rel的和。PC当前值是指当前指令的下一条指令地址。 相对寻址只适用于转移指令。 例7—8 3022H: SJMP 2FH ;PC← (PC)+rel 该指令占两个字节,所以下一条指令地址为3024H,即PC的当前值。相对偏移量rel=2FH。该指令执行完后,(PC)=3053H。 7.位寻址 源操作数在位地址中,指令中给出的操作数是位地址。真正参与操作的数据是位地址中的内容。位地址用bit表示以分区别字节地址direct.

12、 例7—9 MOV C,37H ;C←(37H) 指令功能:将位地址37H的内容送入位位累加器C中。 7。2指令系统 MCS-51单片机的所有指令按功能可分为五大类:数据传送指令、算术运算指令、逻辑运算指令、控制转移指令和位操作(又称布尔操作)指令. 7。2.1 数据传送类指令 MCS-51 单片机指令系统中,数据传送指令类共28条,可分为内部数据传送指令、外部数据传送指令、堆栈指令和数据交换指令。 数据传送指令是MCS-51单片机指令系统中数目最多、使用最频繁的。 1.内部数据传送指令 内部数据传送是指数据在内部RAM中进行的传送,见表7-1 指令格式:MOV

13、 〈目标操作数>,<源操作数> 指令功能:将源操作数指定的内容传送到目标操作数中,源操作数不变。 说明1:只有以累加器A为目标操作数的传送指令影响PSW的P标志位,其他传送指令均不影响PSW的任何标志位。后续的各类数据传送指令也是如此,将不再赘述。 说明2:注意指令MOV derict1,direct2机器码的顺序. 例7-10 分析指令MOV 0BH,70H的作用,查表确定其机器码。 解:该指令是属于内部RAM传送指令,由表7—1知属于MOV direct1,direct2类型;功能是将70H内的内容传送倒0BH;机器码是85 70 0B。 表7-1 内部RAM的数据传送指

14、令 指令类型 指令格式 操作说明 机器码 A作为 目标操作数 MOV A,#data A ← data 01110100 data MOV A,direct A ← (direct) 11100101 direct MOV A,Rn A ← (Rn) 11101rrr* MOV A,@Ri A ← ((Ri)) 1110011i direct作为 目标操作数 MOV direct, #data direct ← data 01110101 direct data MOV direct,A direct1 ← (A) 11110101 dir

15、ect MOV direct1,direct2 direct1 ← (direct2) 10000101 direct2 direct1 MOV direct,Rn direct ← (Rn) 10001rrr direct MOV direct,@Ri Direct ← ((Ri)) 1000011i direct Rn、DPTR作目标操作数 MOV Rn,#data Rn ← data 01111rrr data MOV Rn, A Rn ← (A) 11111rrr MOV Rn, direct Rn ← (direct) 10101rrr

16、direct MOV DPTR,#data16 DPTR ← data16 10010000 data16 @Ri作为 目标操作数 MOV @Ri,#data (Ri) ← data 0111011i data MOV @Ri, direct (Ri) ← (direct) 1010011i direct MOV @Ri ,A (Ri) ← (A) 1111011i *表中rrr表示寄存器Rn中n的二进制组合,n=0时,rrr=000;n=7时,rrr=111.以下相同 例7-11 已知(R0)=30H。指出下列程序段的执行结果和程序段的功能。并说明这段程序在

17、程序存储器中将占据多少地址? 指令 注释 每条指令的执行结果 机器码长度 MOV 30H , #88H ;30H ← 88H, (30H)=88H 2 MOV 40H, #11H ;40H ← 11H, (40H)=11H 2 MOV A, @R0 ;A ←((R0)), (A)=88H 1 MOV @R0, 40H ;(R0)← (40H), (30H)=11H 2 MOV 40H, A

18、 ;40H ← (A), (40H)=88H 2 执行结果:(A)=88H,(30H)=11H, (40H)=88H 程序段功能:前两条指令称赋值指令,它分别给片内RAM的30H、40H单元赋值;后三条指令实现了将两个单元内容相互交换. 存放在程序存储器中的是程序的机器码,由各指令机器码长度之和知上述程序的总长度为9,在程序存储器中占9个地址。 2.堆栈操作指令 堆栈是内部存储器中一个按先进后出的原则存取数据的缓冲区域,通常用来保护CPU工作的断点和现场,也可用于暂时存放数据和地址.堆栈操作有入栈(压入)和出栈(弹出)两类,见表7-2 表7—2

19、 栈操作指令 指令类型 指令格式 操作说明 机器码 进栈(压入) PUSH direct ① SP ← (SP)+1 ② (SP) ← (direct) 11000000 direct 出栈(弹出) POP direct ① direct ← ((SP)) ② SP ← (SP)—1 11010000 direct (1)进栈(压入)指令 指令格式:PUSH direct 指令功能:首先将堆栈指针SP的内容加1,然后把直接地址direct单元的内容送到SP指向的片内RAM单元中。 (2)出栈(弹出)指令 指令格式:POP direct 指令功能

20、首先将堆栈指针SP指向的片内RAM单元的内容送入直接地址direct单元,然后将SP的内容减1。 注意,MCS51中堆栈操作的操作数是以字节为单位,即8位二进制数. 说明1:单片机系统复位后SP=07H,使得堆栈区事实上由08H开始,因为08H~1FH为工作寄存器组1~寄存器组3的区域,20H~2FH为位寻址区域,堆栈区将与它们冲突。因此,一般要重设堆栈区,即在初始化程序中对SP重新赋值。通常将堆栈区设在内部RAM的30H~7FH。使用堆栈时要注意,堆栈区的单元不再是内部RAM的可利用单元。 说明2:进栈和出栈都是直接寻址,direct为直接地址。这里需要进一步说明的是:对于CPU内

21、部的专用寄存器(ACC、 B、 PSW、 SP、DPH和DPL),其直接地址可用寄存器名代替,其他寄存器必须以直接地址表示.正确的书写方式是: PUSH ACC (不能写成PUSH A),PUSH 06H (不以写成PUSH R6) 例7-12 已知(SP)=30H,(40H)=88H,(50H)=11H,指出下列程序段的执行结果和功能. 指 令 注释 每条指令的执行结果 PUSH 40H ;SP←(SP)+1=31H,(SP)← (40H); (31H)=88H PUSH 50H ;SP←(S

22、P)+1=32H,(SP)← (50H); (32H)=11H POP 40H ;40H←((SP)),SP←(SP)-1=31H ; (40H)=11H POP 50H ;50H←((SP)),SP← ( SP)-1=30H ; (50H)=88H 执行结果:(40H)=11H,(50H)=88H, (SP)=30H 程序段功能 :将40H和50H单元的内容互换. 3.数据交换指令 数据交换主要是在内部RAM的某一单元和累加器A之间进行,并且累加器A总是作目标操作数。数据交换指令分为两种:整字节交换和半字节交换,见表7—3。 表7-3 数据交换指令

23、 指令类型 指令格式 操作说明 机器码 整字节 交换指令 XCH A,direct (A) ←→ (direct) 11000101 direct XCH A,Rn (A) ←→ (Rn) 11001rrr XCH A,@Ri (A) ←→ ((Ri)) 1100011i 半字节 交换指令 XCHD A,@Ri (A)3~0 ←→ ((Ri))3~0 1101011i SWAP A (A)3~0 ←→ (A)7~4 11000100 (1) 整字节交换指令 指令格式:XCH A,〈源操作数〉 指令功能:将累加器的内容与源操作数所指明的内容

24、相互交换。 例7-13 已知(30H)=88H,(40H)=11H,(R0)=30H,(R1)=40H,编写实现30H与40H单元内容相互交换的程序段。 方法一: MOV A,30H ;(A)←(30H) (A)=88H XCH A,40H ;(A)←→(40H) (A)=11H,(40H)=88H MOV 30H,A ;(30H)←(A) (30H)=11H 方法二: MOV A, @R0;(A)=(30H)=88H XCH A, @R1;(A)=11H,(40H)=88H MOV @R0,A;

25、 (30H)=11H 比较两种方法,表面上看采用直接寻址和寄存器间接寻址都要用三条汇编指令。但相应机器码指令却有差别:前者要占ROM空间6个地址,而后者只占3个。 在程序设计过程中,程序占ROM空间的大小和程序的执行时间是衡量程序设计优劣的重要指标之一。上述方法二就明显优于方法一。 (2) 半字节交换指令 指令格式:XCHD A,@Ri 指令功能:将累加器A的低4位与Ri内容所指地址单元中数据的低4位相互交换,同时各自的高4位保持不变。 例7—14 已知(R0)=20H,(A)=3AH,(20H)=85H,指出执行下列指令的结果。 XCHD A, @R0 ;(A)=35H,

26、20H)=8AH, SWAP A ;(A)=53H 执行结果:(A)=53H,(20H)=8AH,(R0)=20H 4.外部数据传送指令MOVX 外部数据传送是指数据在外部RAM与累加器A之间进行传送.见表7-4。 表7—4访问外部RAM的数据传送指令 指令类型 指令格式 操作说明 机器码 A为 目标操作数 MOVX A,@Ri A ← ((Ri)) 1110001i MOVX A,@DPTR A ← ((DPTR)) 11100000 A为 源操作数 MOVX @Ri,A (Ri) ← (A) 1111001i MOVX @DPTR,A (D

27、PTR) ← (A) 11110000 指令格式:MOVX 〈目标操作数〉,<源操作数> 指令功能:将源操作数指定的数据送入目标操作数指定的单元中. 说明1:助记符为MOV加X,X是区分RAM和外部RAM传送的标志。 说明2:访问外部RAM时,只能采用寄存器间接寻址。寄存器间接寻址可用8位的寄存器Ri(可寻址片外RAM空间:256B)和16位数据指针寄存器DPTR(可寻址片外RAM空间:64KB). 说明3:外部RAM只能与累加器A进行直接数据传送,所以外部RAM与任何其他存储单元(包括外部RAM本身)的数据传送必须经累加器A中转。 例7—15 编写程序实现下列要求的数据传送.

28、 (1) 片内RAM20H单元的内容送片内RAM40H单元. (2) 片外RAM20H单元的内容送片内RAM40H单元。 (3) 片内RAM20H单元的内容送片外RAM4000H单元。 解: (1) MOV 40H,20H ;片内RAM单元间的数据传送可直接完成 (2) MOV R0, #20H ;片外RAM20H的地址(8位)送入R0 MOVX A, @R0 ;片外RAM 20H单元的内容送入累加器A MOV 40H,A ;累加器A的内容送入片内RAM 40H单元 (3)MOV DPTR,#4000H ;片外RAM4000H的地址(16位

29、送入DPTR MOV A, 20H ;内部RAM20H单元的内容送入A MOVX @DPTR,A ;A的内容送入外部RAM4000H单元 5.查表指令MOVC 程序存储器ROM的数据读入累加器A的数据传送指令又称为查表指令,见表7-5 表7-5 查表指令 指令类型 指令格式 操作说明 机器码 DPTR作 基址寄存器 MOVC A,@A+DPTR A ← ((A)+(DPTR)) 10010011 PC作 基址寄存器 MOVC A,@A+PC ①PC ← (PC)+1 ②A ← ((A))+(PC)) 10000011 指令格式:MOVC

30、 A,<源操作数> 指令功能:把程序存储器ROM中某个单元(源地址)的内容送入累加器A. 说明1:助记符为MOV加C,C是区分外部ROM和外部RAM传送的标志。 说明2:外部ROM的内容只有通过累加器A才能存入内部RAM或外部RAM中。 说明3:访问程序存储器ROM时,源操作数是变址寻址:A+DPTR或A+PC.DPTR和PC中存放的是基地址值,A中存放的是变址值,真正的外部ROM地址是由基地址与变址求和形成的。 说明4:这种指令查表方便,常用于在程序存储器中的查表操作,故称为查表指令。但只能查找指令所在地址以后256B范围内的代码或常数。 例7-16外部ROM 2000H单元的

31、内容送外部RAM40H单元。 解: MOV R0,#40H ;外部RAM 40H的地址送入R0 MOV DPTR,#2000H ;外部ROM2000H的地址送入DPTR MOV A, #00H ;A清零 MOVC A,@A+DPTR ;外部ROM2000H单元的内容送入A暂存 MOVX @R0 ,A ;A的内容送入外部RAM40H单元 例7-17 在程序存储器中,有如下数据表格为: 1020H:30H,31H,32H,33H,34H,35H,36H,37H 1028H:38H,39H,41H,42H,43H,44H,45H,46H

32、 执行程序一: 1000H:MOV A,#15H ;A←15H 1002H:MOVC A,@A+PC ;@A+PC=@(15H+1003H)=@(1022H), A←(1022H) 说明1:冒号之前的数码是程序存储器单元地址,冒号之后是该地址存放的数据或指令机器码(虽然指令以汇编指令形式出现). 说明2:执行指令“MOVC A,@A+PC”时,PC是多少呢?等于1003H。这是从CPU工作原理,即图1-4得到的:当CPU执行某条指令时,PC指向下一条指令。 程序一执行结果:(A)=32H,(PC)=1003H。 执行程序二: 1004H:MOV A,#02H ;A←02

33、H 1006H:MOV DPTR,#1020H ;DPTR←1020H 1005H:MOVC A,@A+DPTR ;@A+DPTR=@(02H+1020H)=@(1022H), A←(1022H) 执行结果:(A)=32H,(PC)=100AH 7.2。2 算术运算指令 MCS-51单片机指令系统中,算术运算指令共有24条,包括:加法指令、减法指令、十进制调整指令、乘法指令和除法指令等.参加运算的数据都是8位二进制数,在进行加、减运算时用户可将其当做无符号数(0~255),也可当做带符号数(—128~+127)。 1.加法指令 加法指令包括不带进位和带进位加法指令,见表7-6

34、 (1)不带进位加法指令 指令格式:ADD A ,<源操作数〉 指令功能:将源操作数与累加器A的内容相加,并将结果存入累加器A中. 说明:该类指令按二进制运算法则影响PSW的CY、AC、OV、P标志。在加法运算中,如果位7有进位,则进位标志CY置1,否则清0;如果位3有进位,则辅助进位位AC置1,否则清0。如果两个带符号数相加,同号符号数相加,和变为异号数,则益出标志位OV置1,否则清0。 表7—6 加法运算指令 指令类型 指令格式 操作说明 机器码 不带进位加法指令 ADD A,#data A ←(A)+ #data 00100100 data ADD A,dir

35、ect A ←(A)+ (direct) 00100101 direct ADD A,Rn A ←(A)+ (Rn) 00101rrr ADD A,@Ri A ←(A)+ ((Ri)) 0010011i 带进位的加法指令 ADDC A,#data A ←(A)+ #data + (cy) 00110100 data ADDC A,direct A ←(A)+ (direct) + (cy) 00110101 direct ADDC A,Rn A ←(A)+ (Rn) + (cy) 00111rrr ADDC A,@Ri A ←(A)+ ((Ri)) +

36、cy) 0011011i 01000110 +)01101000 10101110 例7—18设(A)=46H,(R2)=68H。执行指令:ADD A ,R2,分析执行结果及对各标志位的影响. 解 结果:(A)=0AEH 分析:(CY)=0; (OV)=1; (AC)=0; (P)=1, 若将参与运算的两数视为无符号数,(A)=174,说明和数正确,没有超出0~255,CY=0;若将参与运算的两数视为带符号数,(A)= -82,两个正数的和为负数,说明和数错误,发生溢出,OV=1。 (2)带进位加法指令 指令格式:ADDC A,〈源操作数> 指

37、令功能:将源操作数、累加器A的内容与CY的相加,并将结果存入累加器A中。 说明1:该类指令的助记符是ADD加上C,可理解为进位标志CY参与运算。 说明2:该类指令对PSW中CY、AC、OV及P标志产生影响与ADD相同。 例7-19设(A)=6DH, (R1)=25H, (25H)=98H, (CY)=1.执行指令ADDC A,@R1,分析执行结果及对各标志位的影响? 01101101 10011000 +) 1 100000110 解: 结果:(A)=06H,(CY)=1 分析:,CY求和后重新被置1 (AC)=1;(OV)=0;(P)=0

38、 (3)加1指令,见表7-7 指令格式:INC <操作数〉 说明:该类指令只有INC A对PSW的P标志位有影响,其他指令对PSW各标志位均无影响。 表7-7 加1运算指令 类型 指令格式 操作说明 机器码 加1指令 INC A A ←(A)+1 00000100 INC direct direct ← (direct)+1 00000101 direct INC Rn Rn ← (Rn)+1 00001rrr INC @Ri (Ri) ← ((Ri))+1 0000011i INC DPTR DPTR ← (DPTR)+1 101

39、00011 例7—20设(A)=7FH,(R0)=35H,(35H)=0FFH,(36H)=9AH,(DPTR)=68FFH。分析如下指令的执行过程和结果。 (1) INC A ;A ←(A)+1 (A)=80H (2) INC R0 ;R0←(R0)+1 (R0)=36H (3) INC 36H ;36H←(36H)+1 (36H)=9BH (4) INC @R0 ;R0←((R0))+1 (35H)=00H (5) INC DPTR ;DPTR←(DPTR)+1,(

40、DPTR)=6900H (4)十进制调整指令,见表7—8 指令格式: DA A 这条指令是在进行BCD码加法运算时,跟有ADD或ADDC指令之后,用于对BCD码的加法运算结果自动进行修正,使其仍为BCD码表达形式。 表7-8 十进制调整指令 指令类型 指令格式 操作说明 机器码 十进制 调整指令 DA A If (A)3~0〉9 or (AC)=1 then A3~0 ← (A)3~0 + 6 ; If (A)7~4>9 or (CY)=1 then (A)7~4← (A)7~4 + 6 11010100 BCD码是一种用4位二进制数表示一位十

41、进制数的编码,即用0000B~1001B十个二进制编码表示0~9十个十进制数码。然而计算机在进行运算时是按照二进制规则进行的,对4位二进制数是按逢16进位的,不符合十进制的运算规则,当运算出现进位或4位二进制数大于1001B(9)时,就会导致错误结果。 例如,如下BCD码运算 38(BCD) +) 79(BCD) 0001 0011 1000 +)0111 1001 1 1011 大于9 有进位 38 +79 结果为B1H,对应的十进制数是178,显示结果出错。正确的结果应是117。因此BCD码加法运算

42、后必须进行调整。调整原则为: 当(A7~4)>9或(CY)=1,则(A7~4)←(A7~4)+6 当(A3~0)〉9或(AC)=1,则(A3~0)←(A3~0)+6 上例中(A7~4)>9,同时(AC)=1,所以应进行如下调整: +) 1011 0011 0110 0110 1 0001 0111 (117 的BCD码) 注意:上述的BCD 码调整过程是由硬件电路完成的,用户无需关注.用户只要在加法指令ADD或ADDC后,加上这条DA A指令即可完成上述调整。 例7-21 有两个双字节(16位)无符号数X和Y,被加数X存放在内部RAM

43、的30H和31H单元,高8位在31H,低8位在30H,加数Y存放在内部RAM的40H和41H单元,高8位在41H,低8位40H。编程实现X+Y,并将结果存入X所在的地址单元. 解: 分析:MCS51中只能直接进行8位加法运算,对16位加法运算要将分解成低8位加法和高8位加法,并要考虑低8位向高8位的进位,参考程序如下: MOV A ,30H ;取X低8位 ADD A ,40H ;X低8位与Y低8位相加,结果存在A中,产生CY MOV 30H ,A ;和数低8位存入X低字节单元(30H单元) MOV A , 31H ;取X高8

44、位 ADDC A,41H ;对X高8位与Y高8位及X与Y低8位相加产生的进位 ;CY求和,并产生新的进位CY。 MOV 31H,A ;和数高8位存入X高字节单元(31H单元) MOV A , #00H ;累加器A清0 ADDC A , #00H ;加X、Y高8位相加产生的进位CY存入A MOV 32H , A ;将进位存入32H单元 例7-22 如果X,Y在外部RAM的30H、31H和40H、41H,重做例7-21 MOV R0 ,#30H MOV R1 ,#40H MOVX A , @R0 MOV

45、 R2 , A MOVX A ,@R1 ADD A , R2 MOVX @R0, A INC R0 INC R1 MOVX A, @R0 MOV R3 ,A MOVX A , @R1 ADDC A , R3 MOVX @R0 ,A MOV A , #00H ADDC A,#00H INC R0 MOVX @R0 ,A 2.减法指令 MCS—51单片机的减法指令包括带借位减法指令和减1指令,见表7-9. (1)带借位减法指令 指令格式:SUBB A ,〈源操作数〉 指令功能:累加器A减去源操作数及借位位CY的值。并将结果

46、存入累加器A。 说明:该类指令按减法规律影响PSW的CY,AC,OV,P标志。 表7—9 减法运算指令 指令类型 指令格式 操作说明 机器码 带借位的减法指令 SUBB A ,#data A ← (A) - #data — (CY) 10010100 data SUBB A, direct A ← (A) - (direct) — (CY) 10010101 direct SUBB A,Rn A ← (A) - (Rn) — (CY) 10011rrr SUBB A,@Ri A ← (A) — ((Ri)) — (CY) 1001011i 减1

47、指令 DEC A A ← (A) — 1 00010100 DEC direct direct ← (direct) — 1 00010101 direct DEC Rn Rn ← (Rn) - 1 00011rrr DEC @Ri (Ri) ← ((Ri)) — 1 0001011i 例7—23 设(A)=98H, (R3)=6AH, (CY)=1。执行指令SUBB A,R3,分析执行结果及对各标志位的影响? (A) =1 0 0 1 1 0 0 0 (R3) =0 1 1 0 1 0 1 0 -)(C

48、Y) = 1 (A) =0 0 1 0 1 1 0 1 98H 6AH -) 1 2DH 解: 结果:(A)=2DH 标志位:(CY)=0, (AC)=1,(P)=0。看作无符号数,结果正确;如果看作带符号数,一个负数98H减去一个正数6AH,结果为正数2DH,产生益出(OV)=1,结果错误。 (2)减1指令 指令格式:DEC 〈操作数> 指令功能:将操作数所指明的内容减1。 说明:除DEC A 指令对PSW的P标志位有影响外,其他指令均不影

49、响PSW的各标志位。 例7-24 设(A)=0AFH,(R0)=30H, (30H)=8AH,(R5)=00H,(20H)=01H,分析执行下列各指令的过程和结果? DEC A ;A ←(A)—1 (A)=0AEH DEC R5 ;R5 ← (R5)—1 (R5)=0FFH DEC 20H ;20H ←(20H)-1 (20H)=00H DEC @R0 ;(R0) ←((R0))-1 (30H)=89H 表7-10 乘法、除法运算指令 指令类型 指令格式 操作说明 机器码 乘法指令 MUL AB A←[(A)×(B

50、]7~0 B←[(A)×(B)]15~8 10100100 除法指令 DIV AB A←[(A)÷(B)]之商 B←[(A)÷(B)]之余数 10000100 3乘法、除法指令 MCS-51单片机指令系统中有乘法、除法指令各一条,见表7-10。它们是两条执行时间最长的指令,执行时间为4个机器周期。 (1)乘法指令 指令格式:MUL AB 指令功能:将累加器A和B寄存器中的两个无符号数相乘,积的高8位存入B寄存器中,低8位存入累加器A中。 说明:乘法指令影响PSW的CY、OV和P三个标志位,且CY总是被清0。 例7—25设(A)=50H,(B)=0A0H。执行

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服