网站大量收购独家精品文档,联系QQ:2885784924

单片机第3章_指令系统.ppt

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

3.1 指令及其表示方法 MCS-51单片机指令系统共有111条指令。 不同指令翻译成机器码后字节数也不一定相同。按照机器码个数,指令可以分为以下三种: MCS-51单片机指令系统包括49条单字节指令、46条双字节指令和16条三字节指令。其中: 操作码 opecode 表示指令的操作种类,如MOV表示数据传送操作,ADD表示加法操作等。 操作数 operand 表示参加运算的数据或数据的有效地址。 (1)单字节指令 指令只有一个字节,操作码和操作数在一个字节中。 如MOV A,Rn,指令机器码为单字节11101rrr,其中rrr可表示为000~111,分别代表R0~R7。 (2)双字节指令 其中一个字节为操作码,另一个字节为操作数(数据或数据所在的地址)。 如MOV A,#data,8位立即数data需占一个字节,操作码也需一个字节。 (3)三字节指令 操作码占一个字节,操作数占两个字节,其中操作数既可以是数据,也可以是地址。 如ANL direct,#data,指令需3个字节,第1字节为操作码,第2字节为8位直接地址direct,第3字节为8位立即数data。 1、立即寻址 immediate addressing 指令一般都是双字节,其中第一个字节是操作码,第二个字节是操作数,它在指令中直接给出,又称为立即数。 在立即数前面必须加上前缀“#”。 如指令MOV DPTR,#1234H 1234H是立即数,指令功能是把16位立即数1234H送到数据指针DPTR中,如图。 2、直接寻址 direct addressing 在指令中直接给出操作数单元的地址。 例如,指令MOV A,3AH 功能:把片内RAM中3AH单元内的数据传送给累加器A。如下图: 直接寻址示意图(MOV A,3AH) 直接寻址方式只能给出8位地址,限于片内RAM: (1)低128单元,在指令中直接以单元地址形式给出。 (2)特殊功能寄存器,在指令中直接以单元地址形式给出,还可以寄存器符号形式给出。 如PUSH DPH PUSH 83H。 注意:直接寻址访问累加器A时,用ACC表示累加器,以便与寄存器寻址方式区别。 3、寄存器寻址 register addressing 在指令中将指定寄存器的内容作为操作数。 寄存器寻址方式中,用符号名表示寄存器。 如,指令INC R0 功能:把寄存器R0的内容加1,再送回R0中。由于操作数在R0中,指定了R0,也就得到了操作数。如图: 寄存器寻址示意图(INC R0) 寄存器寻址方式的寻址范围包括: (1)4个寄存器组,共32个通用寄存器。 指令中只能使用当前寄存器组。通过制定PSW中RS1、RS0,以选择使用的当前寄存器组。 (2)部分特殊功能寄存器。 例如,累加器A、B寄存器以及数据指针DPTR。 4、寄存器间接寻址 register indirect addressing 在指令中给出的寄存器内容是操作数的地址,从该地址中取出的才是操作数。 寄存器间接寻址以寄存器符号形式表示。 在该寻址中,寄存器的名称前需加前缀“@”。 如,指令MOV A,@R0 假定R0寄存器的内容是3AH,指令的功能是以3AH为地址,将3AH地址单元的内容送到累加器A中。如图: 寄存器间接寻址示意图(MOV A,@R0 ) 寄存器间接寻址的寻址范围: (1)片内RAM的低128单元,只能采用R0或R1为间接寻址寄存器。其形式为@Ri(i 0,1),如MOV A,@R0。 (2)片外RAM的64KB单元,使用DPTR作为间接寻址寄存器。例如,MOVX A,@DPTR。 (3)片外RAM低256单元,使用R0或R1作间接寻址寄存器。如:MOVX A,@R0。 (4)堆栈区:堆栈操作指令PUSH和POP,以SP作间接寻址寄存器。 5、相对寻址 relative addressing 仅用于相对转移指令,在指令中给出的操作数为程序转移的偏移量。 在相对转移指令中,给出地址偏移量(以rel表示),PC的当前值加上偏移量就构成程序转移的目的地址。 目的地址 (转移指令所在地址+转移指令字节数)+rel 8051指令系统中,有多条相对转移指令,这些指令均为两字节指令,个别为三字节指令。 偏移量rel是一个带符号的8位二进制补码数,表示的数的范围是-128~127。以相对转移指令的所在地址为基点,向前最大可转移(127+转移指令字节数)个单元地址,向后最大可转移(128-转移指令字节数)个单元地址。 如指令JC 80H 若进位位C为0,则PC中的内容加2,即顺序往下; 若进位位C为1,则以PC中当前值为基地址,加上偏移量80H所得结果为该转移指令的目的地址,如图。 6、变址寻址 ind

文档评论(0)

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

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

1亿VIP精品文档

相关文档