单片机指令系统.ppt

上传人:王** 文档编号:178283 上传时间:2023-03-22 格式:PPT 页数:76 大小:858KB
下载 相关 举报
单片机指令系统.ppt_第1页
第1页 / 共76页
单片机指令系统.ppt_第2页
第2页 / 共76页
单片机指令系统.ppt_第3页
第3页 / 共76页
单片机指令系统.ppt_第4页
第4页 / 共76页
单片机指令系统.ppt_第5页
第5页 / 共76页
单片机指令系统.ppt_第6页
第6页 / 共76页
单片机指令系统.ppt_第7页
第7页 / 共76页
单片机指令系统.ppt_第8页
第8页 / 共76页
单片机指令系统.ppt_第9页
第9页 / 共76页
单片机指令系统.ppt_第10页
第10页 / 共76页
亲,该文档总共76页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《单片机指令系统.ppt》由会员分享,可在线阅读,更多相关《单片机指令系统.ppt(76页珍藏版)》请在优知文库上搜索。

1、MOV A,#0AH 74H 0AHADD A,#14H 24H 14HINC A 04HMOV 50H,60H 85H 50H 60H注意:注意:不同寻址方式不同寻址方式所涉及的寻址空间所涉及的寻址空间即要找的数据在什么即要找的数据在什么位置位置MOV A,3AH 和MOV 0E0H,3AH 功能相同1 0 0 1 0 0 0 0;操作码;立即数高8位;立即数低8位0 0 01 0 1 1 00 0 0 0 0 0 0 0例如:MOV C, 37H; (Cy) (37H) 寻 址 方 式存 储 器 空 间寄存器寻址R0R7、A,B,Cy(位),DPTR(双字节)直接寻址内部数据存储器00H7

2、FH特殊功能寄存器寄存器间接寻址内部数据存储器R0,R1,SP(仅PUSH和POP)外部数据存储器(R0,R1,DPTR)立即数寻址程序存储器(操作码常数)变址间接寻址程序存储器(A+DPTR,A+PC)相对寻址程序存储器(修改了PC值)位寻址内部数据存储器的可寻址位例例3-1 将D5H位的内容送入Cy,可用几种方式表达? (1) MOV C, D5H (2) MOV C, D0H.5 (3) MOV C, F0 (4) MOV C, PSW.5例例3.2 判断下列指令各操作数的寻址方式 (1) MOV A, #65H 寄存器寻址 立即数寻址 (2) MOV R1, 65H 寄存器间接寻址 直

3、接寻址 (3) MOV 30H, R2 直接寻址 寄存器寻址 (4) MOV C, 20H 寄存器寻址 位寻址 (5) DJNZ R2, LOOP 寄存器寻址 相对寻址 (6) MOVC A, A+DPTR 寄存器寻址 变址间接寻址 Rn(n=07): 当前寄存器区的8个工作寄存器R0R7Ri(i=0,1): 当前寄存器区可作为地址寄存器的2个工作寄存器direct: 8位内部数据存储器单元的地址及特殊功能寄存器的地址#data: 表示8位常数#data16: 表示16位常数addr16: 表示16位地址addr11: 表示11位地址rel: 8位带符号的地址偏移量,取值范围为-128+127

4、bit: 内部RAM和特殊功能寄存器中的可直接寻址位: 表示间接寻址( ): 表示括号中单元的内容( ): 表示间接寻址单元内容: 表示数据的传送方向: 表示数据交换符号注释;立即数;立即数30H送送60H单元,即(单元,即(60H)=30H ;立即数;立即数60H送入送入R0,即(,即(R0)=60H;60H单元内容送入单元内容送入A,(,(A)=(R0)=(60H)=30H ;将;将A中的内容送入中的内容送入R1,即(,即(R1)=30H ;30H内容送内容送40H,(,(40H)=(R1)=(30H) =50H ;30H单元内容送入单元内容送入60H,即(,即(60H)=(30H)=50

5、H 例例3-2:已知(30H)=88H,(40H)=11H,指出下列程序段执行的结果和功能。MOV A , 30H ;(A)(30H),(A)=88HXCH A , 40H; (A) (40H), (A)=11H, (40H)=88HMOV 30H , A ;(30H) (A),(30H)=11H结果为(30H)=11H,(40H)=88H,而功能是将30H和40H单元内容互换。如果采取寄存器间接寻址方式: (R0)=30H,(R1)=40H MOV A, R0; XCH A, R1; MOV R0, A 例如,设(A)=ABH,(R0)=30H,(30H)=12H XCHD A,R0执行结果

6、为:(A)=A2H,(30H)=1BH。例例3-3:设内部数据存储器的60H、61H单元中连续存放着4位BCD码。试编写一段程序将这4位BCD码倒序排列。程序如下: MOV R0,#60H ; (R0)=60H MOV R1,#61H ; (R1)=61H MOV A,R0 ; (A)=(R0)=(60H)=a3a2 SWAP A ; A中的内容高、低4位互换(A)=a2a3 XCH A,R1 ; SWAP A ; (A)=a0a1 MOV R0,A ; (R0)=(A),(60H)=a0a1例例3-4:将累加器A中的内容送入外部数据存储器的0060H单元。解:解:根据题意编程如下: MOV

7、P2, #00;输出地址高8位输出00H MOV R0,#60H ;地址送间址寄存器 MOVX R0,A ;A中的内容送外部数据存储器的0060H单元 例例3-5:将外部存储器的2000H单元的内容送入2100H单元解解:MOV DPTR,#2000H;(DPTR)=2000H MOVX A,DPTR ;(A)=(DPTR) MOV DPTR,#2100H ;(DPTR)=2100H MOVX DPTR,A ;(DPTR)=(A) PUSH 40H; PUSH 50H; POP 40H; POP 50H;(SP)(SP)+1=31H,(SP) (40H),(31H)=88H(SP)(SP)+1

8、=32H,(SP) (50H),(32H)=11H(40H) (SP),(SP) (SP)-1=31H,(40H)=11H(50H) (SP),(SP) (SP)-1=30H,(50H)=88H例例3-7:已知(SP)=30H,(40H)=88H,(50H)=11H,指出下列程序段的执行结果和功能。执行结果:(40H)=11H,(50H)=88H,(SP)=30H程序段功能:将40H和50H单元的内容互换。例例: :设(A)=0C3H,(R0)=0AAH,执行指令ADD A,R0 (A): 1100 0011 +(R0):1010 1010 1 0110 1101 结果:(A)=6DH。标志位

9、Cy=1,OV=1,Ac=0。 带进位加法指令主要用于多字节加法的高字节求和,以考虑低字节求和向高字节的进位。 例例:设(A)=0C3H,(R0)=0AAH,(Cy)=1, 执行指令:ADDC A,R0; 结果:(A)=6EH,且Cy=1,OV=1,Ac=0。 (A): 1100 0011 (R0): 1010 1010 + (Cy): 1 和: 1 0110 1110 解解:低8位数相加,若有进位保存在Cy中;高8位采用带进位加法。 MOV A,#55H ADD A,#0FFH MOV 50H,A MOV A,#66H ADDC A,#11H MOV 51H,A例例:试编写计算6655H+1

10、1FFH的程序。结果放入50H、51H中例例:设累加器A内容为压缩BCD码56(即01010110B),寄存器 R3的内容为压缩BCD码67(即01100111B),Cy内容为1。执行下列的指令: ADDC A,R3 DA A过程: (A):0101 0110 BCD:56 (R3):0110 0111 BCD:67 +(Cy):0000 0001 BCD:01 和 1011 1110 调整 0110 0110最终结果: 1 0010 0100 BCD:124 Cy=1 例例:设有4个压缩BCD码,分别放在内部数据存储器50H51H单元 和60H61H单元中,试编写求出两个数的和的程序,结果存

11、 放到40H41H单元中。解:解:求两BCD码之和的程序如下: MOV A,50H ;(A)(50H) ADD A,60H ;(A)(A)+(60H) DA A ;BCD码修正 MOV 40H,A MOV A,51H ADDC A,61H DA A MOV 41H,A结果仍存放于原单元中。运算结果不影响标志位。 例例:设累加器A的内容为0C9H,寄存器R2内容为54H,进位标志Cy=1, 执行指令:SUBB A,R2 (A): 1100 1001 -(Cy): 0000 0001 1100 1000 -(R2): 0101 0100 0111 0100结果:(A)=74H,(Cy)=0,(Ac

12、)=0,(OV)=1例例:试编写计算EE33H-A0E0H的程序,结果存入50H、51H中。解:解:进行低8位运算前应清进位位,低8位运算后由Cy保存借位;在进行高8位运算时,借位位也一起参与运算。程序如下: CLR C ;(Cy)0 MOV A,#33H ;(A)33H SUBB A,#0E0H ;(A)(A)-E0H MOV 50H,A ;(50H)(A) MOV A,#EEH SUBB A,#0A0H MOV 51H,A结果仍存放于原单元中去。运算结果不影响标志位。例例:设(A)=50H(80),(B)=0AH(160) 执行指令:MUL AB; 结果为:3200H(12800)。 (A

13、)=00H,(B)=32H,OV=1,Cy=0例例:若(A)=10111101B=BDH,Cy=0 执行: RLC A 结果:(A)=01111010B=7AH,Cy=1。A的内容扩大2倍。后两条,若直接地址是I/O端口,则为“读-修改-写”操作。解解:程序为: MOV 40H,A ;保存A中的内容 ANL A,#00001111B;清高4位,保留低4位 MOV 30H,A MOV A,40H ;取原数据 ANL A,#11110000B;保留高4位,清低4位 SWAP A MOV 31H,A例例:将累加器A中压缩BCD码分为二个字节,形成非压缩BCD码, 放入30H和31H单元中。对于目标操

14、作数为累加器A的指令,影响PSW奇偶校验位P位。例例:将累加器A中的低4位由P1口的低4位输出,P1口的高4位不变。解解:程序如下: ANL A,#00001111B MOV 30H,A ;保留A中的低4位 MOV A,P1 ANL A,#11110000B;P1的高4位不变 ORL A,30H MOV P1,A 2 、利用本指令可判断两个数是否相等,若相等,则结果为全“0”; 否则不相等。指令的二、三字节提供16位目标转移地址,目标地址为64K 空间任意单元,不影响标志位。执行内容:(执行内容:(PC)addr16 执行内容:(执行内容:(PC)(PC)+2 (PC100)add100 (P

15、C1115)不变)不变 注:转移范围范围为-128+127,以补码形式给出 一条带有FEH偏移量的SJMP指令,将实现无限循环,这是因为FEH是-2的补码。例:0123H单元存放着指令SJMP 45H, 则目标地址为0123H+2+45H=012AH。 若指令为SJMP F2H, 则目标地址为0123H+2-0EH=0116H执行内容:(执行内容:(PC)(PC)+2 ;(PC)(PC)+rel 注:A中内容是8位无符号数。执行内容:(执行内容:(PC)(A)+(DPTR) 解解: 预先在ROM中建立一张起始地址为KYEG的转移表:利用间接转移指令 即可实现多路分支转移处理。程序如下: MOV

16、 A,R7 RL A; 键值2倍,AJMP指令为双字节指令 MOV DPTR,#KYEG;转移入口基地址送DPTR JMP A+DPTR KYEG:AJMP KYE0 AJMP KYE1 AJMP KYE15 例:例: 某单片机应用系统有16个键,对应的键码值(00H0FH)存放在R7中, 16个键处理程序的入口地址分别为KYE0,KYE1, KYE15。 要求按下某键,程序即转移到该键的相应处理程序执行。 当(当(A)0,程序顺序执行,程序顺序执行 当(当(A)=0,(,(PC)=(PC)+rel; 执行内容:(执行内容:(PC)(PC)+2 当(当(A)=0,程序顺序执行,程序顺序执行 当(当(A) 0,(,(PC)=(PC)+rel; 执行内容:(执行内容:(PC)(PC)+2 执行内容:(执行内容:(PC)(PC)+3 若(若(direct)(A),(),(PC)(PC)+rel且且 Cy1 若(若(direct)=(A),顺序执行且),顺序执行且Cy0 指令完成两项操作:把PC当前值压入堆栈;把子程序入口地址送PC。 这两条指令和无条件转移指令类似,只是增加了断点压栈过程,不

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 嵌入式开发

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!