11 寻址方式和指令系统

11 寻址方式和指令系统

ID:19309782

大小:339.00 KB

页数:14页

时间:2018-09-22

11 寻址方式和指令系统_第1页
11 寻址方式和指令系统_第2页
11 寻址方式和指令系统_第3页
11 寻址方式和指令系统_第4页
11 寻址方式和指令系统_第5页
资源描述:

《11 寻址方式和指令系统》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、11寻址方式和指令系统一、寄存器1.1工作寄存器有R0、R1、R2、R3、R4、R5、R6、R7共8个,都是8位的寄存器。其中R0、R1可以做数据指针,可以做间接地址空间的数据指针,也可以做外部数据区的指针,以间接寻址的方式对RAM中的数据据进行读取。当然,R0、R1也可以像R2、R3、R4、R5、R6、R7一样,做普通的寄存器来用。在物理上,工作寄存器共有四组,分别占用内部RAM的00H~07H、08H~0FH、10H~17H、18H~1FH四组地址。当前使用的通用寄存器组,是由程序状态字PSW的第四位和第三位(

2、RS1、RS0)来决定的。四组寄存器,在中断程序中,可以通过切换寄存器的方式,来快速实现现场保护。在C51中,可以用using0、using1、using2、using3来指明某函数所用的寄存器组。如:Voidint0pro(void)interrupt0using2//这个函数用第二组工{……….//作寄存器}对通用寄存器的访问,是最快速的访问。比下面的两条指令:MOVA,R7MOVA,07H都是将内部RAM空间的07H单元存储的数据,赋给寄存器A,但是前者是寄存器寻址,比后者直接寻址,更快一些。1.2累加器A寄

3、存器A是一个特殊的寄存器,所有算术运算类指令中的一个操作数,必须在寄存器A中,其运算结果,也一定存入该寄存器。由于加法是最基本的运算,所以称寄存器A为累加器,它是8051家族单片机所有的寄存器中最重要的一个。如:ADDA,@R1SUBBA,#23MULABDIVAB累加器A不占用存储单元,有一个专门的硬件电路。但是它可以映射到SFR空间,占用地址:0E0H,此时,写做ACC,在栈操作可以使用。比较下面代码:MOVA,#0MOVACC,#0虽然执行后的结果,没有区别,但是后者执行时间要长一倍。1.3辅助寄存器B寄存器

4、B,用于乘除法的第二个操作数,运算的部分结果,也存在该寄存器中。B是一个SFR,占用地址:0F0H。1.4程序状态字PSW程序状态字PSW,是一个SFR,来指明当前指令的执行情况、累加器A的数据状态、工作寄存器组的选择等。F0、F1可做为普通的位变量来使用。这个寄存器在运算类操作、条件转移、中断时寄存器组切换时,是非常有用的。CY,也称C,在位传送指令中使用,如:MOVC,P2.0MOVP1.0,C1.5数据指针DPTRDPTR是一个16位寄存器,也可当成两个8位寄存器DPH、DPL。外部数据不能直接访问,必须通过

5、数据指针DPTR或R0、R1来间接访问。但是R0、R1的访问范围,只能限定在一页(256字节)内,限定在哪一页,由页寄存器EMI0CN来确定。如:MOVEMI0CN,#12h;将地址的高字节装入EMI0CNMOVR0,#34h;将地址的低字节装入R0MOVXA,@R0;将地址0x1234的内容装入累加器以上三句,和下面两句是等价的:MOVDPTR,#1234MOVXA,@DPTR上面三句,好像并没有下面的两句简洁,但是如果我们在一页内频繁操作的话,页寄存器,并不需要重新赋值,这样,通过R0(R1)来对外部RAM进行

6、访问,在速度上,就占优势了。另一方面,我们也拥有三个指针指向外部数据区,在程序设计上,也会更加便利。1.6堆栈指针SPSP总是指向当前栈顶。在每次执行PUSH操作前,堆栈指针加1。执行POP操作后,堆栈指针减1,SP寄存器复位后,其值是07H,堆栈区占用第一组工作寄存器的位置,一般说来,这样是不能容忍的,须将SP重新赋给一个大于30H的值,使堆栈区不占用寄存器空间、也不占用位寻址空间。我们常将SP赋于一个大于一个80H的值,使堆栈区位于间接寻址区,以释放更多的可直接寻址的RAM空间。1.7程序指针PC程序当前的位置

7、,PC的值不能由软件赋值,它根据程序指令情况自动变化。我们可以用PC间址寻址,来读取存在程序空间的数据。二、寻址方式所谓寻址方式,就是把操作数取出来的方式。应该叫寻数方式。2.1寄存器寻址操作数在寄存器中。如下列指令:INCR0INCDPTR2.2立即寻址操作数,是一个常数,如下列指令:MOVR0,#23HADDA,#34H2.3直接寻址操作数,在直接寻址空间,如下列指令:MOVA,30H;将直接寻址空间地址为30H的数据,传送到累加器A。ADDA,38H;将直接寻址空间地址为38H的数据,和累加器A的数据相加,结

8、果存入累加器A。2.4间接寻址操作数,是用R0或R1指向的地址单元的数据。如下列:MOVR0,#80HMOVA,@R0;将间接寻址空间地址为80H的数据,传送到累加器A。MOVR1,#40HMOVA,@R1;将内部RAM空间地址为40H的数据,;传送到累加器A。这部分区间,即可以直接寻址,也可以间接寻址。ADDA,@R1;内部RAM间接寻址的指针,只能是R0

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。