片机学习04(传送指令).ppt_第1页
片机学习04(传送指令).ppt_第2页
片机学习04(传送指令).ppt_第3页
片机学习04(传送指令).ppt_第4页
片机学习04(传送指令).ppt_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

3.4 AT89C51指令系统分类介绍 111条指令,按功能分类,可分为下面5大类: (1)数据传送类(28条) (2)算术操作类(24条 (3)逻辑运算类(25条) (4)控制转移类(17条) (5)位操作类(17条),指令中符号的意义: Rn 当前寄存器区的8个工作寄存器R0R7(n=07)。 Ri 当前寄存器区中可作间接寻址寄存器的R0、R1(i=0,1)。 Direct 直接地址,内部RAM或SFR的8位字节地址。如 0E0H #data 包含在指令中的8位立即数。如 #0EH #data16 包含在指令中的16位立即数。如 #0A85EH rel 相对转移指令中的偏移量,为8位的带符号补码数。 DPTR 数据指针,可用作16位的数据地址寄存器。 bit 内部RAM或特殊功能寄存器中的直接寻址位。 C(或Cy) 进位标志位或位处理机中的累加器。 addr11 11位目的地址 addr16 16位目的地址 间接寻址寄存器前缀,如Ri,A+DPTR (X) X中的内容。如(40H) (X) 由X寻址的单元中的内容。如(R0)也可(R0) 箭头右边的内容被箭头左边的内容所取代。,P.3334,2.4.2 内部数据存储器空间 (RAM:随机存取存储器,可读可写,断电丢失) 128个单元,每单元8位即1字节(8b=1B),字节地址为00H7FH。,R7 . . R0,R7 . . R0,R7 . . R0,R7 . . R0,由PSW中的RS1、RS0位 选择四个区之一的8个单元 兼作工作寄存器R0R7使用,RS1 RS0,1 1,1 0,0 1,0 0,07H . . . 位地址 . . . 00H,7FH . . . 位地址 . . . 78H,(共128个位),寄存器寻址 Rn,位地址 bit(00H7FH),直接地址direct 寄存器间接寻址Ri,(00H7FH),128个 片内RAM字节单元,(R0、R1),(R0R7),寻址方式: 指令中指明 操作数的方式,P.16,表2-4 SFR的名称及其分布,2.4.3 特殊功能寄存器(SFR)(CPU寄存器及各接口电路控制寄存器),直接地址direct,(80H. . .F0H),21个 SFR字节单元,符号指令中 可用SFR名 暂代其地址,数据指针寄存器 DPTR (16位),累加寄存器 A,乘除寄存器 AB,位地址 bit (80HF7H),字节地址为 X0H或X8H的SFR 可位寻址!,符号指令中 可用位名等 暂代其位地址,P.17,累加器SFR名为ACC,(SFR名),寻址方式: 指令中指明 操作数的方式,3.4.1 数据传送类指令(1) 传送指令是使用最频繁的一类指令 通用格式: MOV , 属“复制” ,而不是“搬家”;,数据传送指令(1) 其他例: 【例B3-4】 R0内容送R7: MOV A,R0 MOV R7, A 【例B3-5】(36H)单元内容送(40H)(43H)单元。,MOV 40H, 36H MOV 41H, 36H MOV 42H, 36H MOV 43H, 36H 4条指令,12字节长,MOV A , 36H MOV 40H, A MOV 41H, A MOV 42H, A MOV 43H, A 5条指令,10字节长,MOV A , 36H MOV R0 , #40H MOV R0, A INC R0 MOV R0, A INC R0 MOV R0, A INC R0 MOV R0, A 9条指令,11字节长, 可通过循环程序实现,用R0间接寻址,通过A转送,均用直接地址传送,PC(程序计数器,程序指针): 始终存放着下一条CPU要取出执 行的指令在程序存储器中的地址。 始终指向要取出执行的下一条指令代码存放单元,,2 0 0 0 H,PC,PC,PC:16位可预置加1计数器 每取一个字节指令代码,自动加1 执行跳转指令时将目标地址置入PC,数据传送类指令(2),例:MOV SP,#6FH ;设定栈底指针 PUSH ACC ;将ACC、B内容保存到堆栈(保护现场) PUSH B POP B ;恢复原B 、ACC内容(恢复现场)(后进先出) POP ACC,源操作数,目的操作数,变址寻址,用交换指令方法: START: MOV A , 3AH ;取原3AH单元数据到A中 XCH A , 3BH ;A中原3AH单元数据与原3BH单元数据交换 XCH A , 3AH ;将A中原3BH单元数据交换到3AH单元中 用堆栈实现交换: START: PUSH 3AH ;将原3AH单元数据压栈 PUSH 3BH ;将原3BH单元数据压栈 POP 3AH ;从栈顶弹出原3BH单元数据给3AH单元 POP 3BH ;从栈顶弹出原3AH单元数据给3BH单元,P52-14 用栈交换ACC与B内容?,【例B3-6】编程将片外数据存储器2380H单元的内容传送到片内30H单元。 ORG 0800H MOV DPTR,#2380H ; DPTR指向片外2380H单元 MOVX A,DPTR ;读取2380H单元内容送入A MOV 30H,A ;存入片内30H单元 LP: SJMP LP ;自循环 【例B3-7】编程将片外数据存储器2040H单元的内容传送到A1F8H单元。 ORG 0600H MOV DPTR,#2040H ;DPTR指向片外2040H单元 MOVX A,DPTR ;2040H单元内容送入A MOV DPTR,#0A1F8H ;DPTR指向片外A1F8H单元 MOVX DPTR,A ;A的内容送入A1F8H单元 HP: SJMP HP,【例4-3】设计一子程序,功能为:根据30H单元中的数x(09之间)查平方表,求出x相应的平方y存50H单元。x和y均为单字节数。 用DPTR作基址的方法: 地址 机器码 汇编语言源程序 ORG 0300H 0300 E5 30 PFSUB:MOV A ,30H ;取自变量x 0302 90 03 09 MOV DPTR ,#0309H ;或 MOV DPTR,#TAB 0305 93 MOVC A , A + DPTR ;查表得相应函数值 0306 F5 50 MOV 50H ,A ;存结果y 0308 22 RET 0309 00 01 04 09 10 TAB:DB 00H,01H,04H,09H,10H;平方表0 1 4 9 16 030E 19 24 31 40 51 DB 19H,24H,31H,40H,51H;25 36 49 64 81,(x + 0309H),【思考】指出下列非法指令违背了什么样的概念或规则? 1. MOV R3, A 2. MOV DPTR, A 3. MOV #2AH, A 4. MOV A,DPTR 5. MOV DPTR,10H 6. MOV 40H, DPTR

温馨提示

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

评论

0/150

提交评论