《例说8051:单片机程序设计案例教程》——2-5 寻址方式

2-5 寻址方式

所谓“寻址”,简单地讲,就是找到操作数地址的方法。8051提供5种寻址方式,说明如下。

直接寻址

直接寻址(direct addressing)是直接在操作数字段里,指定操作数所在位置的地址,包括特殊功能寄存器(如P1、P2、PSW等),例如:

ADD A, 40H

将存储器40H地址的内容加到ACC里。又如:

MOV 30H, A

将ACC的内容复制到存储器30H地址里。

间接寻址

间接寻址(indirect addressing)是利用间接寄存器(Index Register,R1或R0,标示为R_i)、基址寄存器(SP或DPTR)间接指示操作数所在位置的地址,而在间接寄存器或基址寄存器之左要加上“@”符号,例如:

INC  @R0

以R0的内容为地址,将存储器该地址的内容加1。又如:

MOVX @DPTR, A

以DPTR的内容为地址,将ACC的内容复制到外部存储器该地址里。

寄存器寻址

寄存器寻址(Register addressing)是以寄存器(即R0到R7)的内容为操作数,例如:

ANL  A, R5

将R5的内容与ACC的内容进行AND运算,其结果放入ACC里。又如:

DJNZ  R7, LOOP

将R7的内容减1,若其结果不等于0,则跳到LOOP处;若其结果等于0,则执行下一条指令。

立即寻址

立即寻址(immediate addressing)是直接在操作数字段里放置操作数,而在操作数左边必须放置一个“#”符号,例如:

ORL A, #0FH

将0FH与ACC的内容进行OR运算,其结果放入ACC里。又如:

CJNE A, #10, LOOP

若ACC的内容不等于10,则跳到LOOP处;若ACC的内容等于10,则执行下一条指令。

变址寻址

变址寻址(index addressing)与间接寻址有点类似,不过,变址寻址同时使用变址寄存器与基址寄存器,使用ACC作为变址寄存器,以存储偏移(offset)、PC或DPTR为基址寄存器。将基址与偏移相加后,才是操作数所在位置的地址,例如:

MOVC A, @A+PC

先将PC的内容与ACC的内容相加,以其结果为地址,再将该地址的内容复制到ACC里。又如:

JMP @A+DPTR

先将DPTR的内容与ACC的内容相加,以结果为地址,再跳到该地址。

时间: 2024-10-26 17:22:01

《例说8051:单片机程序设计案例教程》——2-5 寻址方式的相关文章

《例说8051:单片机程序设计案例教程》——2-1 认识MCS-51的存储器结构

2-1 认识MCS-51的存储器结构 例说8051:单片机程序设计案例教程除了无ROM型的8031及8032外,MCS-51的存储器包括程序存储器(ROM)与数据存储器(RAM)两部分,一般这两部分是独立的个体.标准的8x51系列具有4KB程序存储器.128B数据存储器,而标准的8x52系列具有8KB.256B数据存储器,刚好是8x51系列的两倍.不管是8x51.8031.8032还是8x52,其外部扩展的程序存储器或数据存储器最多为64KB,如表2-1所示. 近年来许多半导体厂商所推出的MCS

《例说8051:单片机程序设计案例教程》——2-6 数据传送指令

2-6 数据传送指令 例说8051:单片机程序设计案例教程数据转移指令的功能是将源操作数的数据复制到目的操作数里:或将指定的操作数内容交换.数据转移指令属于8051指令里的最大的一类,包括28条指令,在此将它们分为5大类来介绍. 圓 数据传送指令数据传送指令的功能是将源(source)操作数的数据复制到目的(destination)操作数,如下所示: 其中的源操作数可为存储器(RAM)地址direct的数据.寄存器Rn的内容.以间接寄存器Ri内容为地址(@Ri)的数据.立即数#data.ACC的

《例说8051:单片机程序设计案例教程》——第 1 章 轻松看8051

第 1 章 轻松看8051 例说8051:单片机程序设计案例教程本章内容丰富,主要包括3部分: anniu 8051部分 8051的基本认识,包括结构.引脚.封装.MCS-51系列,以及8051的基本电路等. anniu 开发工具部分 8051软硬件的开发流程,包括源程序的编写.汇编.连接,以及软硬件模拟等. anniu 程序与实作部分 闪烁灯的程序设计及其汇编.连接与软件仿真.

《例说8051:单片机程序设计案例教程》——2-8 实时练习

2-8 实时练习 例说8051:单片机程序设计案例教程在本章里,介绍了8051的存储器结构.输入/输出端口.输出电路的设计等硬件部分:在软件方面,则介绍了指令格式.寻址方式,以及数据转移指令,这些都是学习8051不可或缺的相关知识.在此试着回答下列问题,以验证学习成效. 1.8051内部的程序存储器与数据存储器容量各为多少?而外部扩展的程序存储器与数据存储器最多容量各为多少? 2.在8051电路里,若要使用外部程序存储器,应如何连接?而访问外部数据存储器必须使用哪个指令? 3.8051内部有多少

《例说8051:单片机程序设计案例教程》——2-4 指令格式

2-4 指令格式 例说8051:单片机程序设计案例教程8051源程序的指令格式包括四个字段,最左边字段为标号字段(label),第二个字段是指令操作码字段(mnemonic),第三个字段是操作数字段(operand),第四个字段是注释字段(comment),如下所示: 标号字段的功能是放置标号,作为子程序的起始标志或跳转指令的参考位置.若不放置标号,则标号字段必须为空.而第二个字段就是放置指令操作码,如MOV.ADDC等. 在第三个字段里放置操作数,随着指令的不同,就有不同个数的操作数,某些指令

《例说8051:单片机程序设计案例教程》——导读

前言 例说8051:单片机程序设计案例教程单片机,单片机,还是单片机 从8048开始,"单片机"即成为广受欢迎的代名词,8051更成为电机.电子类专业必修的课程.当然,应用单片机制作电子系统项目,既简单又经济实惠,早已成为学生的最爱.在电路设计方面,需求量较大.电路较复杂的系统可采用为客户专用而设计的IC(即ASIC),如芯片组.控制芯片等,虽然ASIC的单位成本不高,但总体成本很高.开发时间也比较长.需求量不是很大,而电路变化较多的系统则多采用可编程逻辑器件(如CPLD.FPGA).

《例说8051:单片机程序设计案例教程》——1-1 微型计算机与单片机

1-1 微型计算机与单片机 例说8051:单片机程序设计案例教程一般来说,微型计算机包括中央处理单元(CPU).存储器(Memory)及输入/输出单元(I/O)三大部分如图1-1所示.CPU就像是人的大脑一样,主宰整个系统的运行:Memory则是存放系统运行所需的程序及数据,包括只读存储器(Read Only Memory,ROM)及随机存取存储器(Randon Access Memory,RAM),通常ROM用来存储程序或永久性的数据,称为程序存储器,RAM则是用来存储程序执行时的临时数据,称

《例说8051:单片机程序设计案例教程》——1-2 8051基本知识

1-2 8051基本知识 "8051"源自Intel公司的MCS-51系列,而目前所使用的8051并不是都采用Intel公司所生产的芯片,而多采用其他厂商所推出的兼容芯片,如Atmel公司的89C51/89S51系列,其价格低廉,质量稳定,开发工具齐全,广为学校或培训机构所欢迎. 在此,先介绍8051的基本结构,包括基本结构.引脚.基本电路及51系列等,其中很多知识最好要"记"在脑中,本书也会提供很多快速记忆的技巧,让读者能在极短的时间里记住40个引脚.基本电路等.

《例说8051:单片机程序设计案例教程》——1-3 8051的开发流程与工具

1-3 8051的开发流程与工具 8051系统的开发流程与一般单片机的开发流程类似,其基本开发流程可分为软件与硬件两部分,而这两部分是并行开发.在硬件开发方面,主要是设计原型电路板(prototype),也就是目标板(target board).在软件开发方面,则是编写源程序(可使用C语言或汇编语言).再经过编译.汇编成为可执行代码,然后进行排错/仿真.当完成软件设计后,即可应用在线仿真器(In-Circuit Emulator,ICE),下载该可执行代码,然后在目标板上进行在线仿真.若软.硬件

《例说8051:单片机程序设计案例教程》——2-3 输出电路设计

2-3 输出电路设计 8051的输出端口可直接连接数字电路,也可用来驱动LED.继电器或喇叭等负载,以下就来探讨如何与这些负载"过招". 2-3-1 驱动LED 发光二极管(Light-Emitting Diode,LED)体积小,功耗低,常被用作微机与数字电路的输出设备,用来指示信号状态.近年来LED的技术发展很快,在颜色方面,除了红色.绿色.黄色外,还出现了蓝色与白色,而高亮度的LED更是取代了传统灯泡成为交通灯(红绿灯)的发光器件:就连汽车的尾灯也开始流行使用LED车灯. 一般地