虫虫首页|资源下载|资源专辑|精品软件
登录|注册

间接寻址

间接寻址是相对于直接寻址而言的,指令地址字段的形式地址D不是操作数的真正地址,而是操作数地址的指示器,或者说是D单元的内容才是操作数的有效地址。
  • C51使用手册

    C51使用手册 .pdf 第二节内存区域(Memory Areas)1. Pragram Area由Code 说明可有多达64kBytes 的程序存储器2. Internal Data Memory:内部数据存储器可用以下关键字说明data 直接寻址区为内部RAM 的低128 字节00H 7FHidata 间接寻址区 包括整个内部RAM 区00H FFHbdata 可位寻址区 20H 2FH3. External Data Memory外部RAM 视使用情况可由以下关键字标识xdata 可指定多达64KB 的外部直接寻址区地址范围0000H 0FFFFHpdata 能访问1 页(25bBytes)的外部RAM 主要用于紧凑模式(Compact Model)4. Speciac Function Register Memory

    标签: C51 使用手册

    上传时间: 2013-11-19

    上传用户:busterman

  • 单片机指令系统

    单片机指令系统 3.1 MCS-51指令简介 3.2 指令系统 3.1  MCS-51指令简介 二、MCS-51系列单片机指令系统分类 按寻址方式分为以下七种:按功能分为以下四种: 1、立即立即寻址         1、数据传送指令位操 2、直接寻址             2、算术运算指令 3、寄存器寻址           3、逻辑运算指令 4、寄存器间接寻址指令   4、控制转移类指令 5、相对寻址             5、位操作指令 6、变址寻址 7、位寻址 三、寻址方式 3、寄存器间接寻址    MOV A, @R1        操作数是通过寄存器间接得到的。 4、立即寻址               MOV  A, #40H        操作数在指令中直接给出。 5、基址寄存器加变址寄存器寻址        以DPTR或PC为基址寄存器,以A为变址寄存器,        以两者相加形成的16位地址为操作数的地址。                   MOVC A, @A+DPTR                   MOVC A, @A+PC 四、指令中常用符号说明 Rn——当前寄存器区的8个工作寄存器R0~R7(n=0~7); Ri——当前寄存器区可作地址寄存器的2个工作寄存器R0和R1(i=0,1); direct——8位内部数据存储器单元的地址及特殊功能寄存器的地址; #data——表示8位常数(立即数); #datal6——表示16位常数; add 16——表示16位地址; addrll——表示11位地址; rel——8位带符号的地址偏移量; bit——表示位地址; @——间接寻址寄存器或基址寄存器的前缀; ( )——表示括号中单元的内容 (( ))——表示间接寻址的内容; 五、MCS-51指令简介 1. 以累加器A为目的操作数的指令 2.  以Rn为目的操作数的指令 3.  以直接地址为目的操作数的指令 4.  以寄存器间接地址为目的操作数指令 应用举例1 8段数码管显示 应用举例2 3.2  指令系统 2、堆栈操作指令  3.  累加器A与外部数据传输指令 4.  查表指令    MOVC  A,   @A+PC  例子: 5.  字节交换指令 6.  半字节交换指令 二、算术操作类指令 PSW寄存器 2.  带进位加法指令 3.  加1指令 4.  十进制调整指令 5.  带借位减法指令(Subtraction) 6.  减1指令(Decrease) 7.   乘法指令(Multiplication) 8.  除法指令(Division)        三、逻辑运算指令 1.  简单逻辑操作指令 2.  循环指令 带进位左循环指令(Rotate  Accumulator Left   through  Carry  flag)      右循环指令(Rotate  Accumulator  Right) 带进位右循环指令(Rotate  A  Right  with  C) 3.   逻辑与指令 4.  逻辑或指令 5.  逻辑异或指令 四、控制转移类指令 1.  跳转指令 相对转移指令   SJMP   rel           PC←(PC)+2                                                                                                                            PC←(PC)+rel 程序中标号与地址之间的关系 2.  条件转移指令 3.  比较不相等转移指令 4.  减 1 不为 0 转移指令 5.  调用子程序指令 7.  中断返回指令 五、位操作指令 1.  数据位传送指令 2.  位变量逻辑指令 3.  条件转移类指令

    标签: 单片机 指令系统

    上传时间: 2013-10-27

    上传用户:xuanjie

  • 首先利用实验系统COP2000具有完全开放的特性

    首先利用实验系统COP2000具有完全开放的特性,由学生自行设计控制器微指令格式及定义,重新设计指令系统,要求该指令系统能够实现数据传送,进行加、减运算和无条件转移,具有累加器寻址、寄存器寻址、寄存器间接寻址、存储器直接寻址、立即数寻址等五种寻址方式。 其次了解EDA扩展板功能,自学并掌握相关EDA技术,以实现EDA控制。

    标签: 2000 COP 实验系统

    上传时间: 2013-12-07

    上传用户:woshiayin

  • === === =时钟20:6=== === === == 应先初始化状态寄存器 tx1714 EQU 7FFH PA EQU 05H PB EQU 06H PC EQU 07H

    === === =时钟20:6=== === === == 应先初始化状态寄存器 tx1714 EQU 7FFH PA EQU 05H PB EQU 06H PC EQU 07H PD EQU 20H IAR EQU 00H 间接寻址寄存器 TMR0 EQU 01H 定时器 STATUS EQU 03H 状态寄存器 BSR EQU 04H bank选择寄存器 PORTA EQU 05H I/0端口寄存器 PORTB EQU 06H I/0端口寄存器 PORTC EQU 07H I/0端口寄存器 PORTD EQU 20H I/0端口寄存器 PULL EQU 21H PULL-High上拉寄存器 WAKEUP EQU 22H 唤醒控制寄存器--被用来设定watchdog允许和禁止 IRQM EQU 23H 中断屏蔽寄存器 IRQF EQU 24H 中断标志寄存器 WDTSEL EQU 25H

    标签: EQU 1714 7FFH 05H

    上传时间: 2013-12-13

    上传用户:chfanjiang

  • 按照要求设计指令系统

    按照要求设计指令系统,该指令系统能够实现数据传送,进行加、减运算和无条件转移,具有累加器寻址、寄存器寻址、寄存器间接寻址、存储器直接寻址、立即数寻址等五种寻址方式

    标签: 指令系统

    上传时间: 2013-12-13

    上传用户:fanboynet

  • 计算机组成课程设计实验报告按照要求设计指令系统

    计算机组成课程设计实验报告按照要求设计指令系统,该指令系统能够实现数据传送,进行加、减运算和无条件转移,具有累加器寻址、寄存器寻址、寄存器间接寻址、存储器直接寻址、立即数寻址等五种寻址方式。从而可以想到如下指令:

    标签: 计算机组成 报告 指令系统 设计实验

    上传时间: 2016-08-06

    上传用户:xinyuzhiqiwuwu

  • 红外解码程序主要工作为等待红外线信号出现

    红外解码程序主要工作为等待红外线信号出现,并跳过引导信号,开始收集连续32位的表面数据,存入内存的连续空间。位信号解码的原则是:以判断各个位的波宽信号来决定高低信号。位解码原理如下:  解码为0:低电平的宽度0.56ms+高电平的宽度0.56ms。  解码为1:低电平的宽度1.68ms+高电平的宽度0.56ms。 程序中必须设计一精确的0.1ms延时时间作为基础时间,以计数实际的波形宽度,若读值为5表示波形宽度为0.5ms,若读值为16表示波形宽度为1.6ms,以此类推。高电平的宽度1.12ms为固定,因此可以直接判断低电平的宽度的计数值5或时16,来确定编码为0或是1。程序中可以减法指令SUBB来完成判断,指令“SUBB A,R2”中若R2为计数值,A寄存器设为8,就可如下:  当“8-R2”有产生借位,借位标志C=1,表示编码为1。  当“8-R2”无产生借位,借位标志C=0,表示编码为0。 将借位标志C经过右移指令“RRC A”转入A寄存器中,再经由R0寄存器间接寻址存入内存中。

    标签: 红外解码 程序 信号 等待

    上传时间: 2016-11-09

    上传用户:miaochun888

  • 此汇编程序实现A/D转换功能

    此汇编程序实现A/D转换功能,应用于pic单片机上,A/D采用中断方式。该程序通过单片机的RA2模拟通道送入一直流电压,当送入的直流电压大于2.5V时,8个LED闪动,当直流电压恢复到2.5V以下时,LED停止闪动。为了防止干扰,本程序对直流电压采样10次后再作判断,中间的采样结 果用间接寻址的方式存取。

    标签: 汇编程序 转换

    上传时间: 2013-12-19

    上传用户:xauthu

  • VIP专区-单片机源代码精选合集系列(50)

    eeworm.com VIP专区 单片机源码系列 49资源包含以下内容:1. STM32中断与嵌套NVIC快速入门.rar2. 教你如何看懂时序图.rar3. AVR32801: UC3A3 Schematic Chec.pdf4. AT指令简编汇集.pdf5. HT MCU间接寻址的应用.rar6. 基于C8051F020和Zigbee的汽车测试系统设计.rar7. AVR事无巨细系列.pdf8. 基于S3C2440A的银行评价器的设计.rar9. 基于PIC16LF874单片机的电容测量模块.rar10. S52开发板功能说明.pdf11. 基于ARM单片机的自动测高测距小车.rar12. LPC1300片上USB驱动应用与实例.zip13. 基于MSP430单片机F149的GSM电子门匙设计.pdf14. 基于C8051F040的以太网-CAN转换电路设计.rar15. 基于凌阳单片机的步进电机加减速的控制方法.rar16. 硬件电路设计之主芯片选型.rar17. 嵌入式处理器和数字信号处理器(DSP)选型手册.rar18. 单片机P0口的片外数据存储器扩展.rar19. LTC4310绝缘双向I2C总线通信方案.rar20. 基于PCI9054的数据转换模块设计.rar21. 单片机Flash存储器坏块自动检测.rar22. 下载烧录快速入门手册.rar23. 基于单片机的住宅电子服务系统.rar24. 基于ATmega8的双轴太阳跟踪器设计.rar25. 单片机通讯电路的抗干扰设计.rar26. 基于ATmega16L单片机的温度控制系统设计.rar27. 基于单总线式无线温度采集系统设计.rar28. 基于P89V51RD2的功率因数测量仪设计.rar29. 基于MC9S12HZ256的总线式汽车数字仪表设计.rar30. 工控软件组态王与单片机多机串口通讯的设计.rar31. 基于AVR的新型防汽车追尾安全装置设计.rar32. 串行时钟PCF8583在微机保护装置中的应用.rar33. 基于C8051F320的心电监护系统设计.rar34. 基于Attiny13的投影仪防盗器设计.rar35. 基于AT89C52单片机的语音录放系统.rar36. H.264高清编解码器的片上系统MG3500.rar37. 基于C8051F310的山路转弯预防警示系统.rar38. 基于CAN总线的综自通讯规约设计.rar39. 基于AT89S52的机载电气盒测试仪的设计.rar40. 基于PCI9052的PCI局部总线应用.rar41. 基于ISA总线与KH-9300的数据采集系统.rar42. 基于单片机89S52的多功能计数器设计.rar43. 微处理器dsPIC33F在微机保护装置中的应用.rar44. 基于ATmega16的简易示波器设计.rar45. 基于单片机和FPGA的多功能计数器的设计.rar46. 基于ATmega16的标记机控制系统.rar47. 基于C8051F040的方位角测试系统.rar48. 基于VHDL的微型打印机控制器设计.rar49. 基于AT89S52单片机的多功能音乐播放器.rar50. 基于PIC单片机的IC卡读写器的设计.pdf51. 基于C8051F060的数据采集存储系统的设计.rar52. MCS51单片机实验指导.pdf53. 单片机的C语言程序设计--周兴华.pdf54. 基于CDC3207G的汽车仪表板设计.rar55. 单片机原理及应用实验指导书--吕运朋.pdf56. S3F84B8 8-位CMOS MCU用户手册.pdf57. 基于MSP430F247和TMP275的测温仪.rar58. 单片机现场应用中的几个技术问题.pdf59. 单片机与PLC之间远距离通信的实现.pdf60. iis总线:基于IIS总线的嵌入式音频系统设计.pdf61. 《单片机与接口技术》实验讲义--杜晓.pdf62. 2.4GHz PTR4000无线嵌入式模块高速率1Mbps、.pdf63. 自动打铃器.pdf64. “Infineon单片机实验”教学大纲.pdf65. PIC单片机在可编程数码式楼宇对讲系统中的应用.pdf66. Intel 8251的UART功能.pdf67. XL400编程试验51单片机开发板.pdf68. P89V51RD2新型单片机SoftICE模式调试指南.pdf69. 海丰热电公司800立方米水箱单片机控制系统.pdf70. 单片机与CPLD综合应用技术.pdf71. 8-bit 80C51 Flash系列单片机--P89C66.pdf72. 单片机的串行口.pdf73. TM57PE12 8位单片机使用手册.pdf74. PHILIPS P89C5x单片机数据手册.pdf75. HT46R32/HT46R34 A/D+OPA型八位单片机.pdf76. 单片机应用小技巧.pdf77. MSP430F21X1混合信号控制器.pdf78. 4位单片机微控制器MC20P11XX.pdf79. MSP430系列超低功耗单片机基础与教学实验.pdf80. 基于89C51单片机的实验电路板的制作.pdf81. 8位OTP单片机芯片MC10P23XXY管脚与三星9454完.pdf82. MCS-51单片机系统扩展.pdf83. 8位OTP单片机芯片MC10P22XXY.pdf84. 单片机技术概述.pdf85. 基于ATmega48的3相无刷电机的控制方法.rar86. C8051F单片机在远端测控装置中的应用.pdf87. 基于C8051F020单片机的多路压力测量仪.rar88. 8位OTP单片机芯片BM22P02.pdf89. MSC1211 SINGLE-CHIP MICROPROCE.pdf90. 8位OTP单片机芯片BL35P02R.pdf91. 8位OTP单片机芯片BL22P02.pdf92. 8位OTP单片机芯片BL35P02.pdf93. HT46R23/HT46C23 8位A/D型OTP/Mask.pdf94. 8位OTP单片机芯片BL22P64.pdf95. 单片机和嵌入式LINUX开发的那点事儿.pdf96. 凌阳8位通用单片机--SPMC65系列单片机原理及开发.pdf97. AVR单片机技术培训--李正中.pdf98. AVRISP MKII编程器使用说明.pdf99. CANopen主节点的设计方案.pdf100. SONIX 8BIT单片机26系列I/O型原理及基础课件.pdf

    标签: 电控 发动机 教程

    上传时间: 2013-04-15

    上传用户:eeworm

  • 单片机入门基础知识大全免费下载

    单片机入门基础知识大全免费下载 单片机第八课(寻址方式与指令系统) 通过前面的学习,我们已经了解了单片机内部的结构,并且也已经知道,要控制单片机,让它为我们干学,要用指令,我们已学了几条指令,但很零散,从现在开始,我们将要系统地学习8051的指令部份。 一、概述 1、指令的格式 我们已知,要让计算机做事,就得给计算机以指令,并且我们已知,计算机很“笨”,只能懂得数字,如前面我们写进机器的75H,90H,00H等等,所以指令的第一种格式就是机器码格式,也说是数字的形式。但这种形式实在是为难我们人了,太难记了,于是有另一种格式,助记符格式,如MOV P1,#0FFH,这样就好记了。 这两种格式之间的关系呢,我们不难理解,本质上它们完全等价,只是形式不一样而已。 2、汇编 我们写指令使用汇编格式,而计算机只懂机器码格式,所以要将我们写的汇编格式的指令转换为机器码格式,这种转换有两种方法:手工汇编和机器汇编。手工汇编实际上就是查表,因为这两种格式纯粹是格式不同,所以是一一对应的,查一张表格就行了。不过手工查表总是嫌麻烦,所以就有了计算机软件,用计算机软件来替代手工查表,这就是机器汇编。 二、寻址 让我们先来复习一下我们学过的一些指令:MOV P1,#0FFH,MOV R7,#0FFH这些指令都是将一些数据送到相应的位置中去,为什么要送数据呢?第一个因为送入的数可以让灯全灭掉,第二个是为了要实现延时,从这里我们可以看出来,在用单片机的编程语言编程时,经常要用到数据的传递,事实上数据传递是单片机编程时的一项重要工作,一共有28条指令(单片机共111条指令)。下面我们就从数据传递类指令开始吧。 分析一下MOV P1,#0FFH这条指令,我们不难得出结论,第一个词MOV是命令动词,也就是决定做什么事情的,MOV是MOVE少写了一个E,所以就是“传递”,这就是指令,规定做什么事情,后面还有一些参数,分析一下,数据传递必须要有一个“源”也就是你要送什么数,必须要有一个“目的”,也就是你这个数要送到什么地方去,显然在上面那条指令中,要送的数(源)就是0FFH,而要送达的地方(目的地)就是P1这个寄存器。在数据传递类指令中,均将目的地写在指令的后面,而将源写在最后。 这条指令中,送给P1是这个数本身,换言之,做完这条指令后,我们可以明确地知道,P1中的值是0FFH,但是并不是任何时候都可以直接给出数本身的。例如,在我们前面给出的延时程序例是这样写的: MAIN: SETB P1.0     ;(1)    LCALL DELAY ;(2)     CLR P1.0      ;(3)    LCALL DELAY   ;(4)     AJMP MAIN    ;(5) ;以下子程序 DELAY: MOV R7,#250   ;(6) D1: MOV R6,#250   ;(7) D2: DJNZ R6,D2    ;(8)    DJNZ R7,D1   ;(9)    RET        ;(10)    END        ;(11)     表1  MAIN: SETB P1.0     ;(1)    MOV 30H,#255     LCALL DELAY ;     CLR P1.0      ;(3)     MOV 30H,#200     LCALL DELAY   ;(4)     AJMP MAIN    ;(5) ;以下子程序 DELAY: MOV R7,30H   ;(6) D1: MOV R6,#250   ;(7) D2: DJNZ R6,D2    ;(8)    DJNZ R7,D1   ;(9)    RET        ;(10)    END        ;(11) 表2    这样一来,我每次调用延时程序延时的时间都是相同的(大致都是0.13S),如果我提出这样的要求:灯亮后延时时间为0.13S灯灭,灯灭后延时0.1秒灯亮,如此循环,这样的程序还能满足要求吗?不能,怎么办?我们可以把延时程序改成这样(见表2):调用则见表2中的主程,也就是先把一个数送入30H,在子程序中R7中的值并不固定,而是根据30H单元中传过来的数确定。这样就可以满足要求。 从这里我们可以得出结论,在数据传递中要找到被传递的数,很多时候,这个数并不能直接给出,需要变化,这就引出了一个概念:如何寻找操作数,我们把寻找操作数所在单元的地址称之为寻址。在这里我们直接使用数所在单元的地址找到了操作数,所以称这种方法为直接寻址。除了这种方法之外,还有一种,如果我们把数放在工作寄存器中,从工作寄存器中寻找数据,则称之为寄存器寻址。例:MOV A,R0就是将R0工作寄存器中的数据送到累加器A中去。提一个问题:我们知道,工作寄存器就是内存单元的一部份,如果我们选择工作寄存器组0,则R0就是RAM的00H单元,那么这样一来,MOV A,00H,和MOV A,R0不就没什么区别了吗?为什么要加以区分呢?的确,这两条指令执行的结果是完全相同的,都是将00H单元中的内容送到A中去,但是执行的过程不同,执行第一条指令需要2个周期,而第二条则只需要1个周期,第一条指令变成最终的目标码要两个字节(E5H 00H),而第二条则只要一个字节(E8h)就可以了。 这么斤斤计较!不就差了一个周期吗,如果是12M的晶振的话,也就1个微秒时间了,一个字节又能有多少? 不对,如果这条指令只执行一次,也许无所谓,但一条指令如果执行上1000次,就是1毫秒,如果要执行1000000万次,就是1S的误差,这就很可观了,单片机做的是实时控制的事,所以必须如此“斤斤计较”。字节数同样如此。 再来提一个问题,现在我们已知,寻找操作数可以通过直接给的方式(立即寻址)和直接给出数所在单元地址的方式(直接寻址),这就够了吗? 看这个问题,要求从30H单元开始,取20个数,分别送入A累加器。 就我们目前掌握的办法而言,要从30H单元取数,就用MOV A,30H,那么下一个数呢?是31H单元的,怎么取呢?还是只能用MOV A,31H,那么20个数,不是得20条指令才能写完吗?这里只有20个数,如果要送200个或2000个数,那岂不要写上200条或2000条命令?这未免太笨了吧。为什么会出现这样的状况?是因为我们只会把地址写在指令中,所以就没办法了,如果我们不是把地址直接写在指令中,而是把地址放在另外一个寄存器单元中,根据这个寄存器单元中的数值决定该到哪个单元中取数据,比如,当前这个寄存器中的值是30H,那么就到30H单元中去取,如果是31H就到31H单元中去取,就可以解决这个问题了。怎么个解决法呢?既然是看的寄存器中的值,那么我们就可以通过一定的方法让这里面的值发生变化,比如取完一个数后,将这个寄存器单元中的值加1,还是执行同一条指令,可是取数的对象却不一样了,不是吗。通过例子来说明吧。    MOV R7,#20    MOV R0,#30H LOOP:MOV A,@R0    INC R0    DJNZ R7,LOOP 这个例子中大部份指令我们是能看懂的,第一句,是将立即数20送到R7中,执行完后R7中的值应当是20。第二句是将立即数30H送入R0工作寄存器中,所以执行完后,R0单元中的值是30H,第三句,这是看一下R0单元中是什么值,把这个值作为地址,取这个地址单元的内容送入A中,此时,执行这条指令的结果就相当于MOV A,30H。第四句,没学过,就是把R0中的值加1,因此执行完后,R0中的值就是31H,第五句,学过,将R7中的值减1,看是否等于0,不等于0,则转到标号LOOP处继续执行,因此,执行完这句后,将转去执行MOV A,@R0这句话,此时相当于执行了MOV A,31H(因为此时的R0中的值已是31H了),如此,直到R7中的值逐次相减等于0,也就是循环20次为止,就实现了我们的要求:从30H单元开始将20个数据送入A中。 这也是一种寻找数据的方法,由于数据是间接地被找到的,所以就称之为间址寻址。注意,在间址寻址中,只能用R0或R1存放等寻找的数据。 二、指令 数据传递类指令 1) 以累加器为目的操作数的指令 MOV A,Rn MOV A,direct MOV A,@Ri MOV A,#data 第一条指令中,Rn代表的是R0-R7。第二条指令中,direct就是指的直接地址,而第三条指令中,就是我们刚才讲过的。第四条指令是将立即数data送到A中。 下面我们通过一些例子加以说明: MOV A,R1 ;将工作寄存器R1中的值送入A,R1中的值保持不变。 MOV A,30H ;将内存30H单元中的值送入A,30H单元中的值保持不变。 MOV A,@R1 ;先看R1中是什么值,把这个值作为地址,并将这个地址单元中的值送入A中。如执行命令前R1中的值为20H,则是将20H单元中的值送入A中。 MOV A,#34H ;将立即数34H送入A中,执行完本条指令后,A中的值是34H。 2)以寄存器Rn为目的操作的指令 MOV Rn,A   MOV Rn,direct   MOV Rn,#data 这组指令功能是把源地址单元中的内容送入工作寄存器,源操作数不变。

    标签: 单片机 免费下载 基础知识

    上传时间: 2013-10-12

    上传用户:3294322651