版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3讲:MCS-51的指令系统,电气工程系 赵志衡 TEL:86413623 E-mail:,MCS-51 单 片 机 原 理 及 设 计,本讲课程主要内容,1 概述 2 51指令系统的寻址方式 3 51的指令系统及一般说明 3.1 数据传送类 3.2 算数操作类 3.3 逻辑运算类 3.4 控制转移类 3.5 位操作类,MCS-51 单 片 机 的 指 令 系 统,51指令的概述,51共有指令111条 字节: 单字节指令49条 双字节指令45条 三字节指令17条 执行周期: 单机器周期指令64条 双机器周期指令45条 4 机器周期指令 2 条,51指令的概述,汇编指令的基本结构: 标号:操作
2、码助记符 第1操作数,第2操作数;注释 Loop1: mov a, #0ffh; 累加器A赋值为ff 标号:表示该指令所在的符号地址,一般由字母和数字组成,第一位为字母,其余位为字母、数字任选。 操作码助记符、第1操作数和 第2操作数:指令的核心部分。对于某些指令可能不存在完整的两个操作数。 注释:是由用户加入的文本,对汇编程序不起任何作用,只是方便阅读。 * 第1操作数又称目的操作数,第2操作数又称源操作数 * 51不区分大小写,51指令的概述,汇编语言与机器语言(机器码) CPU只能执行机器语言(由8位二进制代码组成,分为1字节、2字节、3字节)。 例如:RET 22H MOV A,#0f
3、h 74H 0FH MOV 74H,#0BH 75H 74H 0BH 汇编程序 汇编语言 机器语言 反汇编程序,MCS-51的寻址方式,寻址方式是指寻找、确定参与操作的数据的地址的方式,包括: 1寄存器寻址 2直接寻址 3寄存器间接寻址 4立即寻址 5基址寄存器加变址寄存器间接寻址,MCS-51的寻址方式,1.寄存器寻址 可用于访问选定寄存器区的8个工作寄存器R0R7、A、B、DPTR、Cy等。 MOV A,R1 2.直接寻址 用于访问内部RAM、SFR,是访问SFR的唯一方法。 MOV A,40H,MCS-51的寻址方式,3.寄存器间接寻址 用于访问内部RAM和外部数据区,包括52系列单片机
4、的高128字节RAM,只有R0,R1可以作为间址寄存器。 MOV R0,#40H MOV A,R0 4.立即寻址 指令中的第二操作数为立即数。51指令中的立即数应冠以前缀#,且若立即数的首位为AF,前面还要加零。 MOV A,#40H mov A,#0B2h 5.基址寄存器加变址寄存器间接寻址 用于访问程序存储器的一个单元,该单元的地址是基址寄存器(DPTR或PC)的内容与变址寄存器A的内容之和。 MOV DPTR,#0400H MOV A,#05H MOVC A,A+DPTR,51指令系统及一般说明, 分类 数据传送类 算数操作类 逻辑运算类 控制转移类 位操作类,51指令系统及一般说明,指
5、令介绍中符号的说明: Rn:当前工作寄存器区中R0R7 Ri:当前工作寄存器区中的R0,R1 Direct:直接地址 #data:指令中的常数(8位或16位) Dptr:数据指针 :间接寻址前缀 (X):x中的内容(20h) (x):在间接寻址中,由间址寄存器寻址的单元中的内容 (R0),若R0=20H,则(R0)表示(20H),3.1 数据传送类,以累加器为目的操作数的指令 以Rn为目的操作数的指令 以直接地址为目的操作数的指令 以寄存器间接地址为目的操作数的指令 16位数据传送 堆栈操作指令 累加器与外部数据存储器传送指令 查表指令 字节交换指令 半字节交换指令,3.1 数据传送类,Mov
6、 a,Rn;以累加器为目的 Mov Rn,#0A0h;以Rn为目的操作数 Mov 40H,Ri;以直接地址为目的操作数 Mov Ri,#0B0h;以寄存器间接地址为目的操作数 Mov dptr,#2000h Push pop direct (sp)=60h,(a)=30h,(b)=70h Push a ;(sp)+1=61h=sp (a)=61h Push b ; (sp)+1=62h=sp (b)=62h Pop b ; (sp)=b (sp)-1=sp =61h Pop a ; (sp)=a (sp)-1=sp =60h,3.1 数据传送类,A与外部数据存储器传送 Movx a,dptr
7、Movx a,Ri Movx dptr,a Movx Ri,a,3.1 数据传送类,查表指令 Movc a,a+pc(单字节) 若程序中这指令所在的地址为1000h,这是一条单字节指令。CPU执行此条指令时,pc=1001, 假定此时a=30h。那么,程序的执行结果,是将程序存储器1031H中内容,读入a中。 只能查该指令后面256单元,且表格只能为一段程序所用 Movc a,a+dptr 若dptr=8100h,a=40h 执行结果,将程序存储器地址为8140h中内容读入a。,3.1 数据传送类,字节交换指令:将累加器内容与源操作数内容相互交换 Xch a,Rn Xch a,40h(直接地址
8、) Xch a,Ri Xch a,R7 若a=55h;R7=66h,指令执行结果a=66h,R7=55h 半字节交换:累加器与内部RAM低4位交换 Xchd a,Ri Xchd a,R0 若a=59h,R0=60h,(60h)=3eh,执行结果a=5eh,(60h)=39h,3.2 算数操作类,加法指令 带进位的加法指令 增量指令 十进制调整指令 带进位的减法指令 减一指令 乘法指令 除法指令 *增量指令与减一指令不影响PSW中标志位,3.2 算数操作类,3.2 算数操作类,加法指令 Add a,Rn add a,direct add a,Ri add a,#data 将源操作数内容与A内容相
9、加,结果存入A。如果位7有进位输出,则置1 Cy位,否则清零;如果位3有进位输出,则置1 Ac位,否则清零;如果位6有进位而位7没有进位,或者位7有进位而位6没有,则置位溢出标志位OV;否则对溢出标志位清零。,3.2 算数操作类,例: (A)=53H,(R0)=FCH 执行指令:ADD A,R0,3.2 算数操作类,3.2 算数操作类,带进位加法指令 Addc a,Rn addc a,direct addc a,Ri addc a,#data 同时把加数、A、进位标志位Cy的内容相加,结果存入累加器A中。对标志位的影响同ADD。,3.2 算数操作类,例: (A)=85H, (20H)=FFH,
10、 Cy=1 执行指令: ADDC A,20H,3.2 算数操作类,增量指令 Inc a inc Rn Inc direct inc Ri Inc dptr 对变量进行加1操作,不影响标志位,若原变量中内容为FFH则程序执行后变量变为00H。,3.2 算数操作类,十进制调整 DA a 应用背景: (1)该指令执行前,一般有一条加法指令。 (2)加法指令中的两个加数,应该是用压缩BCD码表示的十进制数,和存放在A中。 (3)执行完DA指令后,A中存放的数是两个加数的十进制和,也使用压缩BCD码表示。 若(A)=56h (R5)=67h ADD A,R5 DA A 结果(A)=23;Cy=1,3.2
11、 算数操作类,带进位的减法指令 SUBB A,Rn SUBB A,direct SUBB A,Ri SUBB A,#data 从累加器A中减去源操作数内容和进位标志,结果存入A。如果位7有借位,则置1 Cy位,否则清零;如果位3有借位,则置1 Ac位,否则清零;如果位6有借位而位7没有借位,或者位7有借位而位6没有,则置位溢出标志位OV;否则对溢出标志位清零。,3.2 算数操作类,3.2 算数操作类,减1指令 DEC A DEC Rn DEC direct DEC Ri 功能:指令中的变量减1,不影响标志位,若变量初始值为00H,则指令执行后变为FFH。 MOV 40H,#0FFH DEC 4
12、0H 执行结果 (40H)=FEH 没有DEC DPTR其他与inc相同,3.2 算数操作类,乘法指令 MUL AB 将A与B中的8位整数相乘,其16位积的低8位放在A中,高8位放在B中,如果积大于255,则置位OV,否则清零;Cy总是0。 除法指令 DIV AB A除以B,商放在A中,余数放在B中。清Cy、OV。 如果除数为0,则结果A、B中内容不定,置位OV。,3.3 逻辑运算指令,清零与取反 CLR CPL 左移 RL RLC 右移 RR RRC 累加器半字节交换 SWAP 逻辑与、或、异或 ANL ORL XRL,3.3 逻辑运算指令,清零与取反 CLR A ;A清零 CPL A ;按
13、位取反 左移 RL A; A中内容左移一位,位7移入位0 RLC A;A中内容和进位标志位Cy一起左移, 位7移入Cy,Cy位移入位0。,3.3 逻辑运算指令,右移 RR A; A中内容右移一位,位0移入位7。 RRC A;A中内容和进位标志位Cy一起右移, 位0移入Cy,Cy位移入位7。 累加器半字节交换 SWAP A 例如:MOV A,#0C5H SWAP A 结果A=5CH,3.3 逻辑运算指令,与、或、异或 ANL ORL XRL ANL A,R0 ORL A,R0 XRL 40H,#40H *运算结果存入第一操作数中,支持寄存器寻址、直接寻址、寄存器间接寻址和立即寻址方式。,3.4
14、控制转移类指令,长跳转指令 Ljmp addr16 相对跳转指令 Sjmp rel(双字节指令) 间接跳转指令 Jmp a+dptr,3.4 控制转移类指令,条件转移指令:依据某种条件决定是否跳转,条件不满足,程序将顺序执行。 jz rel ;A为零则转移 Jnz rel;A不为零则转移 rel 表示跳转范围(+127-128)字节 比较不相等转移:比较前面两个操作数的大小,如果不相等,发生跳转。 Cjne a,#data,rel cjne a,direct,rel cjne Rn,#data,rel cjne Ri,#data,rel 如果第1操作数小于第2操作数,则置位进位标志,否则清零,不影响任何一个操作数的内容。,3.4 控制转移类指令,减一不为零转移指令 djnz Rn,rel djnz direct,rel 将源操作数减一不为零则转移。 空操作指令 nop 只执行pc+1操作,cpu 等待一个机器周期。,3.4 控制转移类指令,调用子程序指令 Lcall addr16 无条件调用位于指定地址的子程序。 子程序返回指令 ret 中断子程序返回指令 reti,3.5 位操作指令,数据位传送 Mov c,bit mov bit,c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026昆明工会面试题及答案
- 2026历史文明面试题及答案
- 2026磷肥厂面试题目及答案
- 2026旅游商贸面试题库及答案
- 2026美术馆应聘面试题及答案
- 2026民航中专生面试题及答案
- 2026模拟基金面试题目及答案
- 2026年广东省连州市高二化学下册期末考试模拟考试卷1套附答案
- 2026年江苏省东台市高二化学下册期末考试模拟试卷及参考答案【研优卷】
- 2026年江苏省句容市高二化学下册期末考试模拟测试卷附参考答案(综合题)
- 2026年广东省佛山市中考历史一模试卷(含答案)
- 译林版小学英语三年级下册 Unit 8 Colours 单元整体教学设计(导学案)
- 眼科感染控制与预防
- 机械加工安全生产管理制度
- 帕金森病患者的中医护理方法
- 空姐职业素养培训
- 二年级下册数学时间的简单计算专项练习
- 安全生产大排查自查问题隐患整改及长效措施
- 2026年高中物理会考冲刺押题卷
- 食品周转框清洗制度规范
- 泄泻病中医诊疗规范
评论
0/150
提交评论