单片机运算指令

上传人:206****923 文档编号:41645951 上传时间:2018-05-30 格式:DOC 页数:5 大小:59.50KB
返回 下载 相关 举报
单片机运算指令_第1页
第1页 / 共5页
单片机运算指令_第2页
第2页 / 共5页
单片机运算指令_第3页
第3页 / 共5页
单片机运算指令_第4页
第4页 / 共5页
单片机运算指令_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《单片机运算指令》由会员分享,可在线阅读,更多相关《单片机运算指令(5页珍藏版)》请在金锄头文库上搜索。

1、 单片机运算指令例例 1 1 R0 中有常数 30H,而 30H 地址中有常数 50H执行 MOV A, R0 后,A30H,R0 不变。执行 MOV A, R0 后 A50H,而不是 30H,这条指令的功能是把 R0 中内容为地址的单元的书送入 A,R0 中是 30H 也就是把30H 地址中内容 50H 送入 A。例例 2 2 若(40H)20H,(50H)30H执行 MOV 40H, 50H; (50H) (40H)结果:(40H)30H,50H 地址中内容仍为 30H。例例 3 3 若 A40H,R030H,执行 MOV R0, A ;A(R0)结果:(30H)40H,A 与 R0 皆不

2、变,即 A40H,R030H。该指令功能是把 A 中内容送入 R0 间址单元即 R0 中内容为地址的单元。例例 4 4 执行执行 MOVMOV DPTR,DPTR, #2040H#2040H ;2040HDPTR结果:DPH=20H, DPL=40HDPTR 是片外 RAM 地址指针,只有这一条指令是传送 16 位数据。2MOVC 类指令及功能(2 条)MOVC A, A+PC ;PC+1PC, (A+PC) AMOVC A, A+DPTR ;(A+DPTR) A功能:该类属于查表指令,利用这两条指令很方便地查找放在程序存储器中数据表格的内容。例例 5 5 程序1000HMOV A, #10H

3、 ;10HA1002HMOVC A, A+PC ;PC+1PC,PC=1003H,(A+PC)=(10H+1003H)A1010H02H1011H04H1012H06H1013H08H程序执行结果:A08H用 MOVC A, A+PC 指令需注意两点:1)指令中的 PC 是执行完本条指令后的 PC 值,即 PC 等于本条指令地址加 1。2)A 是修正值,它等于查表指令和欲查数据相间隔字节数。A 的范围是 0255,一次该指令只能查找本指令后的 256B 范围内的表格,故称为近程查表。例例 6 6 程序1000HMOV A, #01H ;01HA1002HMOV DPTR, #6000H ;60

4、00HDPTR1005HMOVC A,A+DPTR ;(A+DPTR)=(01H+6000H)=(6001H) A6001H0AH6002H0BH6003H0CH6004H0DH程序执行结果:A0AH,查到了地址为 6001H 单元中的数据。用 MOVC A, A+DPTR 指令查表特点:A, DPTR 都可以改变,因此可在 64KB 范围内查表,故称为远程查表。这条指令更方便。3MOVX 类指令(4 条)MOVX A, DPTR ;(DPTR) A,DPTR 间址单元内容送 AMOVX DPTR, A ;A(DPTR), A 中内容送入 DPTR 间址单元MOVX A, Ri ;(Ri) A

5、,Ri 间址单元内容送 AMOVX Ri, A ;A(Ri), A 中内容送 Ri 间址单元MOVX 类指令功能:这四条指令专门用来与外部数据存储区传送数据。CPU 与外部 RAM 传送数据时只能用间接寻址方式。例例 7 7 把外部数据存储单元把外部数据存储单元 2000H2000H 中的数据送到中的数据送到 4000H4000H 单元中,设单元中,设 2000H2000H 中有数据中有数据 30H30H。程序 各条指令执行结果MOV DPTR, #2000H ;2000HDPTR, DPTR=2000HMOVX A, DPTR ;(DPTR) A 即(2000)A,A=30HMOV DPTR

6、, #4000H ;4000HDPTR, DPTR=4000HMOVX DPTR, A ;A(DPTR)即 A(4000H), (4000H)=30H例例 8 8 把内部把内部 RAM50HRAM50H 单元数据送到片外单元数据送到片外 20H20H 单元,设单元,设 50H50H 中单元存有数据中单元存有数据 10H10H。程序 各条指令执行结果MOV A,50H ;(50H) 各条指令执行结果 A, A=10HMOV R0,#20H ;20HR0, R0=20HMOVX R0, A ;A(R0)即 A(20H)则 20H10H交换指令XCH A, Rn ;RnA, Rn 与 A 内容交换X

7、CH A,direct ;(direct) A, 直接地址内容与 A 内容交换XCH A, Ri ;(Ri) A,Ri 间址内容与 A 内容交换XCHD A, Ri ;(Ri.3Ri.0)A.3A.0, Ri 间址内容低 4 位与 A 中低 4 位内容交换SWAP A ;A.3A.0 A.7A.4, A 中高 4 位与低 4 位交换例例 9 9 若 R0=30H, A=F0H, (30H)=46H执行 XCH A, R0 ;结果:A=30H,R0=F0H, R0 与 A 内容交换执行 XCH A, R0 ;结果:A=46H, (30H)=F0H, R0 中不变,;实际上是(R0)若执行XCHD

8、 A, R0 ;结果:A=F6H,(30)H=40H;A 与(30H)中低 4 位交换,高 4 位不变执行 SWAP A ;结果:A=0FH, 高低 4 位互换5堆栈操作指令(2 条)PUSH、POP 属堆栈操作指令,其功能是把直接地址中的内容压入堆栈保存,或从堆栈中取出(弹出)数据到直接地址中。PUSHdirect ;SP+1SP, (direct) (SP);直接地址内容压入堆栈顶POPdirect ;(SP)(direct), SP-1SP;堆栈栈顶内容弹出到直接地址注意:堆栈是用户自己设定的内部 RAM 中的一块专用存储区,使用堆栈时一定先设堆栈指针。堆栈遵循后进先出的原则安排数据。压

9、入数据时 SP 先加 1,再压入;弹出时,先弹出数据,SP 再减 1。例例 1010 堆栈指针为 30H,为保护现场把 A 和 B 中的内容压入堆栈保护,然后根据需要再把两者弹出。设 A 中为 30H,B 中为01H。程序 执行结果MOV SP, #30H;30HSP, SP=30H 设堆栈指针为 30HPUSH ACC ;SP+1SP=31H, A(SP)即 A(31H),(31H)=30HPUSH B;SP+1SP=32H, B(SP)即 B(32H),(32H)=01HPOP B;SPB 即(32H)B, B=01H, SP-1SP=31HPOPACC;SPA 即(31H)A, A=30

10、H, SP-1SP=30H从此例可以看出压入、弹出过程 SP 的变化规律例例 11 :ROM 的的 2000H 单元内容送单元内容送 R0;送内部;送内部 RAM 的的 20H 单元;送外部单元;送外部 RAM 的的 20H 单元单元ORG 0000H 这个应该能看懂了吧MOV A, #00 这个是给 A 累加器辅初值MOV DPTR, #2000H 十六位的数要存放到 DPTR 中的,这个书上有介绍MOVC A, A+DPTR 查找存放在 ROM 中的数据 MOV R0, A 将刚才存到 A 累加器的内容传给 R0MOV 20H, A 将累加器的内容传给 20H 单元MOV DPTR, #2

11、0H 将 20H 单元的内容传给 DPTRMOVX DPTR, A 将累加器的内容传给外部存储器的 20H 单元END算术运算指令的主要功能是实现算术加、减、乘、除等运算。 1ADD 类指令是不带进位的加法运算指令(4 条) 。ADD A,Rn ;A+RnA, A 与 Rn 寄存器内容相加,结果送到 A 中ADD A,direct ;(direct)+AA, A 与直接地址内容相加,和送 AADD A, Ri ;(Ri)+AA, A 与 Ri 间址内容相加,和送 AADD A, #data ;data+AA, A 与立即数相加,和送 A注意:ADD 类指令相加结果均在 A 中,相加后源操作数不

12、变。若 A 中最高位有进位,Cy 置 1;若半加位有进位,AC 置 1。A的结果还影响奇偶标志位 P。例例 12 A=30H, R0=10H执行 ADD A,R0结果:A=40H, R0=10H,标志位 P=1, Cy=0, OV=0, AC=02ADDC 类指令(带进位加法 4 条)ADDC A, Rn ;A+Rn+CyA, A 与 R n 内容、进位状态相加,和送到 A 中ADDC A, direct ;(direct)+Cy+AA, A 与直接地址中内容、进位状态相加,和送 A ADDC A, Ri ;(Ri)+Cy+AA,A 与 Ri 间址单元中内容、进位状态相加,和送 AADDC A

13、, #data ;data+Cy+AA,A 与 立即数、进位状态相加,和送 A与 ADD 类指令的区别是,ADDC 指令相加时连同进位标志 Cy 内容一起相加,主要用于多字节加法中的高位字节的相加,而最低位字节相加用 ADD 指令。进位位 Cy 加到字节的最低位。例例 13 编写计算 1234H+0FE7H 的程序,将结果存入内部 RAM 的 41H 和 40H 单元,40H 存低 8 位,41H 存高 8 位。程序MOV A, #34H;被加数低 8 位数 34H 送 AADD A, #0E7H;加数低 8 位数 E7H 与之相加,A=1BH,Cy=1MOV 40H, A;A40H 即 34

14、H+E7H 结果存入 40H 中(40H=1BH)MOV A, #12H;被加数高 8 位数 12H 送 AADDC A, #0FH;加数高 8 位 0FH 和 Cy 与 A 相加,A=22HMOV 41H, A;高 8 位与进位位之和存入 41H 中(41H)=22H;总和为 221BH,总结果在 41H,40H 单元中3SUBB 类指令(4 条)SUBB 类指令是带借位减法指令,其功能是将 A 中被减数减去源操作数指出的内容,再减去借位标志 Cy(原进位标志)状态,差值在 A 中。SUBB A, Rn;A-Rn-CyA ,A 减寄存器 Rn 内容及进位标志SUBB A, direct;A-(direct)-CyA,A 减直接地址内容和进位标志SUBB A, Ri;A-(Ri)-CyA,A 减 Ri 间址单元内容和进位位标志SUBB A, #data;A-data-CyA,A 减立即数和进位标志说明:1) 多字节减法时,低位相减有借位则把 Cy 置 1,否则 Cy 为 0。2) MCS-51 系列指令中没有不带借位的减法指令,所以在单字节或低位字节减法时用 SUBB 类指令前要先将 Cy 清 0。3)减去一个数实际上是加上这个数的相反数

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号