MCS-51单片机的指令系统与汇编语言程序设计.ppt

MCS-51单片机的指令系统与汇编语言程序设计.ppt

  1. 1、本文档共53页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MCS-51单片机的指令系统与汇编语言程序设计

第2章 指令系统与汇编语言程序设计 单片机指令系统概述 一、MCS-51指令分类 MCS-51单片机共有111条指令。 1.按指令所占的字节数分类 ①单字节指令49条 ②双字节指令46条 ③三字节指令16条 每条指令的平均字节数: 2.按指令执行时间长短分 ①单周期指令65条 ②双周期指令44条 ③四周期指令2条 每条平均执行时间 : 2-1 指令格式 一. 汇编语言指令格式 [标号:]操作码 操作数1,操作数2[;注释] 换行表示一条指令结束。 例: LOOP: MOV A,#40H ;取参数 1.标号:指令的符号地址 2.操作码:指明指令功能。 3.操作数:指令操作对象 数据、地址、寄存器名及约定符号。 4.注释行:说明指令在程序中的作用。 操作码和操作数是指令主体。 MOV __move传送 XCH __exchange交换 ANL __and logic与逻辑运算 XRL __exclusive or异或运算 MUL __Multiply乘法 RR __rotate right右循环 SJMP __short jump短跳转 RET __return 子程序返回 二. 机器语言指令格式 操作码 [操作数1] [操作数2] 有单字节、双字节和三字节指令。 汇编语言指令中操作码和操作数是指令主体,称为指令可执行部分,指令表中可查出对应指令代码。 举例: 汇编语言: 机器语言: MOV A,R0 E8H MOV R6,#32H 7E 32H MOV 40H,#100 75 40 64H 2-2 指令寻址方式 2-2-1 操作数类型 位(b)─ 位寻址区中的一位二进制数据 字节(B)─ 8位二进制数据 字(W)─ 16位双字节数据 2-2-2 寻址方式 一.立即寻址方式 指令中给出实际操作数据(立即数),一般用于为寄存器或存储器赋常数初值。 举例: 8位立即数: MOV A,#40H ;A?40H 16位立即数: MOV DPTR,#2100H ;DPTR?2100H 3. 增量、减量指令 INC 单操作数 如: INC R2 ;R2←R2+1 DEC 单操作数 如: DEC R2 ;R2←R2-1 INC DPTR ;DPTR←DPTR+1 不影响标志位状态。 注意:没有指令 DEC DPTR 可用指令 DEC DPL 代替 企图十进制加1:INC A         DA A  ;非法 十进制加1: ADD A,#01 ; 合法 DA A   4.乘除指令 MUL AB ;BA←A×B,Cy←0, ;当积高字节B=0,OV←0;B≠0,则OV←1 例:A= 96(60H), B= 192(C0H),执行指令 MUL AB 后, 求:A= ,B= ,Cy= ,OV= ,P= ? 解: 96 ×192 = 18432(4800H) 00H 48H 0 1 0 思考题:如何实现多字节数据的乘除运算。 DIV AB ;A÷B,A←商,B←余数,Cy←0, ;当除数B=0,OV←1;B≠0,则OV←0 例:A= 156(F6H),B= 13(0DH),执行指令 DIV AB 后 求:A= ,B= ,Cy= ,OV= ,P= ? 解: 156 ÷ 13 = 18(12H),余数= 12(0CH)。 12H 0CH 0 0 0 2-4-2 逻辑运算指令 一.单操作数指令(A累加器为操作数) 1. A清0指令: CLR A ;A←0 2. A取反指令:CPL A ;A←/A 3. 循环移位指令: 1)8位循环指令: RL A ;A循环左移一位 RR A ;A循环右移一位 2)9位循环指令: RLC A;带Cy循环左移一位 RRC A;带Cy循环右移一位 例2-4-7:设 A=,Cy= 0,分别执行下列单条指令: CPL A 求:A= ,Cy= RL A RLC A 0 0 1 用9位循环指令实现多字节移位 例:编程将寄存器 R6R5 中的双字节数X左移一位。 CLR

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档