第3章-MCS-51单片机指令系统-3[1].3.1数据传送类指令_第1页
第3章-MCS-51单片机指令系统-3[1].3.1数据传送类指令_第2页
第3章-MCS-51单片机指令系统-3[1].3.1数据传送类指令_第3页
第3章-MCS-51单片机指令系统-3[1].3.1数据传送类指令_第4页
第3章-MCS-51单片机指令系统-3[1].3.1数据传送类指令_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、3.3 MCS-51的指令集,3.3.1 数据传送类指令 MOV / PUSH / POP / XCH / XCHD / SWAP MOVX / MOVC,3.3 MCS-51的指令集,按功能,分 5 类 3.3.1 数据传送类指令 3.3.2 算术运算类指令 3.3.3 逻辑运算类指令 3.3.4 控制转移指令 3.3.5 位操作类指令,3.3.1 数据传送类指令,按传送区域,分3组 1. 内部RAM数据传送 MOV、PUSH/POP、XCH/XCHD、SWAP 2. 访问外部RAM或I/O的数据传送 MOVX 3. 程序存储器(ROM)到累加器(A)的传送 MOVC,所有的传送指令都不影响

2、标志位CY、AC和OV 涉及累加器A的指令将影响奇偶标志位P,数据传送类指令一览表,1. 内部RAM数据传送,(1)以累加器A为目的操作数的指令 (2)以Rn为目的操作数的指令 (3)以直接地址为目的操作数的指令 (4)以寄存器间接地址为目的操作数的指令 (5)16位数据传送指令 (6)堆栈操作指令 (7)字节交换指令,PUSH/POP,XCH/XCHD/SWAP,(1) 以累加器A为目的操作数的指令,功能 把源操作数的内容送入累加器A 格式 MOV A, Rn;(A) (Rn) MOV A, direct;(A) (direct) MOV A, Ri;(A) (Rn) MOV A, data

3、;(A) data 例 MOV A, 10H;(A) 10H,(2) 以Rn为目的操作数的指令,功能 把源操作数的内容送入当前工作寄存器区的R0R7中的某一个寄存器(由 RS1、RS0 确定) 格式 MOV Rn, A;(A) (Rn) MOV Rn, direct ;(A) (direct) MOV Rn, data;(A) data 注意 MOV Rn, Ri MOV Rn, Rn,例1 MOV R0, A 若RS1=0、RS0=0 ,则(A)R0(内部 RAM H) 若RS1=0、RS0=1 ,则(A)R0(内部 RAM H) 例2 已知:(A)=60H,(R1)=10H,(R3)=45

4、H,(45H)=37H 指令为: MOV R1, A;(R1) (A) MOV R2, 45H;(R2) (30H) MOV R3, #33H;(R3) #85H 执行后: (R1) = 50H、(R2) = 37H、(R3) = 35H,00,08,;(R1) (A),;(R2) (45H),;(R3) #33H,60H,37H,33H,(3) 以直接地址为目的操作数的指令,功能 把源操作数送入由直接地址指出的存储单元 格式 MOV direct, A;(direct) (A) MOV direct, Rn;(direct) (Rn) MOV direct, direct;(direct)

5、(direct) MOV direct, Ri;(direct) (Rn) MOV direct, data;(direct) data 例 若(R1)=51H,(51H)=68H 指令为: MOV 22H, R1;(40H) (72H) 执行结果:(22H)=68H,;(22H) (51H),(4) 以寄存器间接地址为目的操作数的指令,功能 把源操作数送入由R0或R1指出的存储单元 格式 MOV Ri, A;(Ri) (A) MOV Ri, direct;(Ri) (direct) MOV Ri, data;(Ri) data 例 若 (R1)=30H, (A)=20H, 指令为: MOV

6、R1, A 执行结果: (R1)=_H、(30H) = _H,20,30,(5) 16位数据传送指令,功能 把16位常数送入DPTR 高位DPH 低位DPL 格式 MOV DPTR,#data16;(DPTR) #data16 例 MOV DPTR,#1342H;执行后(DPTR)=1342H ;(DPH)=13H、(DPL)=24H,(6) 堆栈操作指令,功能、格式 PUSH进栈 PUSH direct ;(SP)(SP)+1,(SP)(direct) POP 出栈 POP direct ;(direct)(SP),(SP)(SP)-1 注意: 堆栈 是一个“先进后出”的区域 在内部RAM中

7、,操作数 只能使用直接寻址方式 不能使用其他方式,例1 正确指令错误指令 PUSHACCPUSHA PUSH00HPUSHR0 POPACCPOPA POP00HPOPR0, ?,例2 进入中断服务子程序时的处理 现场保护 若保护PSW、累加器A、数据指针DPTR 设保护前: (PSW)=78H、(A)=56H、(DPTR)=1234H 堆栈保护程序 PUSH PSW PUSH ACC PUSH DPL PUSH DPH,63H,62H,61H,60H,64H,SP,保护 前,SP,PUSH PSW 后,SP,PUSH ACC 后,SP,PUSH DPL 后,SP,PUSH DPH 后,78H

8、,56H,34H,12H,MCS -51 提供 一个向上升的堆栈; SP设置初值时 要充分考虑堆栈的深度。, 现场恢复 堆栈恢复程序 POP DPH POP DPL POP ACC POP PSW,63H,62H,61H,60H,64H,SP,POP PSW 后,SP,POP ACC 后,SP,POP DPL 后,SP,POP DPH 后,SP,恢复前,78H,56H,34H,12H,设恢复前: (PSW)=0AH (A)=0BH (DPTR)= 09ABCH,(PSW)=0AH,(A)=0BH,(DPTR)=09ABCH (PSW)=0AH,(A)=0BH,(DPTR)=012BCH (PS

9、W)=0AH,(A)=0BH,(DPTR)=01234H (PSW)=0AH,(A)=56H,(DPTR)=01234H (PSW)=78H,(A)=56H,(DPTR)=01234H,(7) 字节交换指令,功能、格式 XCH A, Rn;(A) Rn XCH A, direct;(A) (direct) XCH A, Ri;(A) (Ri) XCHD A, Ri;(A30) (Ri)30) SWAP A;(A30) (A74),例1 若(ACC)= 71H,(R0)= 23H,(23H)= 76H 指令: XCHD A ,R0 ;(A30) (Ri)30) 结果: (A)= _H (R0)=

10、 _H (23H)= _H 例2 若(A)= 092H 指令: SWAP A 结果: (A)=_H,76,23,71,29,小结:片内(核内)数据传送指令,课本P55,2. 访问外部RAM或I/O的数据传送,功能 CPU与外部RAM或I/O接口间传送数据 必须:寄存器间接寻址,并通过累加器A传送 格式 MOVX A, DPTR; (A)(DPTR) MOVX A, Ri; (A)(Ri) MOVX DPTR, A; (DPTR)(A) MOVX Ri, A; (Ri)(A),注意:,一个8位的字节传送,通过A DPTR间址(16位地址) 高8位地址 DPH P2 低8位地址 DPL P0 R0

11、、R1间址 高8位地址 P2 低8位地址 R0或R1 P0 读/写信号 片外RAM 或 I/O A: P3.7 读信号:/RD A 片外RAM 或 I/O: P3.6 写信号:/WR,读,写,例1 若(DPTR)= 3000H,(3000H)= 30H MOVX A, DPTR; A(DPTR) 结果: (A)= 30H 例2 若(P2)=20H,(R1)= 48H,(A)= 66H MOVX R1, A;(R1)(A) 结果: (2048H)= 66H,例3 试编程,将片外RAM的2000H单元内容送入片外RAM的0200H单元中。 解 MOVDPTR, #2000H;源地址送DPTR MO

12、VXA,DPTR;从外部RAM取数送A MOVDPTR,#0200H;目的地址送DPTR MOVXDPTR,A;A中内容送外部RAM,3. 程序存储器(ROM)到累加器(A)的传送,功能 查表指令 查找ROM中的常数表格,只能读,不能写 格式(单字节指令) MOVC A, A + PC ;(PC)(PC)1 ;(A)(A)(PC) MOVC A, A + DPTR ;(PC)(PC)1 ;(A)(A)(DPTR) 表格长度:, 256B,?,例1 若 (PC)=1001H,(A)=40H,(1042H)=56H MOVCA,A+PC 结果: (A)=_H,(PC)=_H 例2 若 (DPTR)

13、=3201H,(A)=47H,(3248H)=0FEH MOVCA,A+DPTR 结果: (A)=_H, (DPTR)=_H,56,1002,0FE,3201,例3已知:累加器A中有一个09范围内的数,使用查表指令编程查找出该数的平方值,设:查 8 的平方值。,用DPTR作为基址寄存器 MOV DPTR, #_H MOV A, #_H MOVC A, A+DPTR,ROM 中 09 的平方表,2000,08,用PC作为基址寄存器 地址机器码 源代码 注释 | 1FFBH | 24H DATA | ADD A, #data|;(A) (A)+ #data 1FFDH | 83H | MOVC A, A+PC|;(PC) (PC)+1 | | |;(A) (A)+(PC) 1FFEH | 80FEH | SJMP $|;等待 2000H | 00H

温馨提示

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

评论

0/150

提交评论