[理学]MCS-51_指令系统与程序设计.doc

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

2.2.1 立即数寻址 采用这种方式时,指令中直接给出了参与操作的8 位或16位二进制常数,并在此常数前面加“#”作为标志。 例如: MOV A,#30H 第2 章 MCS-51 指令系统与程序设计 执行完这条指令后,A 中的值是确定的,就是十六进制数30H。在形式上,立即数前面总有一个“#”符号作为标志。 2.2.2 直接寻址 在直接寻址方式中,指令直接给出操作数所在的存储单元地址。例如: MOV A,20H 其功能是把内部RAM 中地址为20H 的单元中的数送到A 中。执行完这条指令后,A中的值并不确定,但可以肯定它一定与地址为20H 的单元中的值相同。在形式上,20H 前面没有“#”符号。 2.2.3 寄存器寻址 寄存器寻址就是操作数存放在寄存器中,因此,指定了寄存器就能得到操作数。例如: MOV A,R0 其功能就是把寄存器R0 的内容传送到累加器A 中。指令执行后,累加器A 中的内容与R0中的内容相同。 2.2.4 寄存器间接寻址 首先考虑这样一个问题:如何从片内RAM 的20H 单元开始,连续取10 个数,依次送入累加器A 中。 显然,要从20H 单元取数,可以用指令MOV A, 20H;然后取21H 单元中的数,可以用MOV A, 21H。依次类推,取10个数就要用10条类似的指令,这样的做法显然不聪明。出现这种情况的原因是把地址的具体数值写在指令中了,或者说,每条指令中的地址值是一个常数,它不能改变。如果能把单元地址用一个变量来表示,其值可增可减,那么问题即可简便地解决。 寄存器间接寻址的方式就是用于解决这种问题的。它是以指令中给出的某一寄存器的内容作为操作数的存放单元地址,从而获得操作数。在这种寻址方式下,寄存器前面要用符号“@”作为标志。例如: MOV A, @R0 因为R0 前面有一个“@”,所以R0 中的内容就被看做是地址。要改变R0 的内容,就可以用这条指令操作到不同地址单元中的数据。于是上面的问题就可以得到解决。首先将R0 的内容设定为20H,然后用指令MOV A, @R0 读取R0 指向的单元中的数据,再将R0 的内容加1,重复操作10 次即可完成任务。重复可以利用循环来进行。 示例代码 如下。 MOV R2, #0AH ;用R2存放循环次数 MOV R0, #20H ;R0指向起始单元 LOOP:MOV A, @R0 ;将R0所指向的单元中的内容送到A中 INC R0 ;将R0中的值加1 DJNZ R2, LOOP ;将R2中的值减1,如果不等于0,则跳到LOOP处继续执行,否则结束循环 2.2.5 变址寻址 变址寻址方式是将基址寄存器(DPTR或PC)的内容加上变址寄存器(只能是A)的内容作为操作数的地址。这类指令经常用于查表、换码程序的编写,DPTR或PC指向一个表的首地址,A中的内容是相对于基址DPTR或PC的一个偏移量。例如: MOV A, @A + DPTR MOV A, @A + PC 该指令的功能是先用DPTR 或PC 的内容加上A 的内容形成一个新的地址,然后再把相应的存储单元的内容送入A 中。 2.2.6 相对寻址 相对寻址方式是为实现程序的相对转移而设计的,所寻找的地址用相对于本条指令所在地址的偏移量来表示,用于指定程序转移的目的地址。如: JC rel rel 是一个带符号的8 位二进制数,所能表示的范围是-128~+127,它决定了相对转移距离的范围。转移的目的地址可用以下公式计算: 目的地址=转移指令所在地址+转移指令字节数 + rel 但在一般的编程过程中,通常会用一个标号来代替偏移量,程序可自动根据该标号得到偏移量,不需要人工计算相对地址的值。如: JC NEXT 2.2.7 位寻址 位寻址方式中的操作数不再是整个字节,而是某一个位,指令中给出的是位地址。 例如: MOV C, 20H 该指令的功能是将位地址20H 单元的内容送入C 中。 注意:字节地址和位地址并不相同。如指令MOV A, 20H 中的20H 是字节地址,因为目的操作数A 是8 位的;而在指令MOV C, 20H 中的20H 是位地址,它其实是字节地址24H 单元中的D0 位,因为目的操作数在CY 中,是1 位二进制数。 2.3 指 令 系 统 对于MCS-51系列单片机的指令系统,按指令功能的不同可以将全部的111 条指令分为5大类即数据传送类、算术运算类、逻辑运算类、控制转移类、位操作类指令。 Rn:当前选中的工作寄存器组R0~R7 共8 个。工作寄存器共有4 组,默认使用的是第0组,也可以用标志寄存器(PSW)中两个位(RS1 和RS0)的组合来选定其中的任意一组。 Ri:当前选中的工作寄存器中可以作为地址指针(间址寄存器)的两个工作寄存器(R0 和R1)。 direct:片内RA

文档评论(0)

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

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

1亿VIP精品文档

相关文档