历史上的今天
返回首页

历史上的今天

今天是:2025年06月28日(星期六)

2019年06月28日 | 80C51单片机的指令系统(二)寻址方式

2019-06-28 来源:eefocus

4.2.1  指令系统中使用的常用符号:

Rn:    当前寄存器工作区中的寄存器, 其中, n=0 -- 7;


direct:    内部数据存储器地址, 可指定一个内部RAM单元(0-- 127)或一个专用寄存器(128-- 255);


@Ri:    通过R1或R0间接寻址, 指定数据存储器RAM中的一个单元(0-- 255);


#data:    在指令中指明8位常数;


#data16:    在指令中指明16位常数;


addr11:    11位目的地址, 用在ACALL或AJMP指令中,表示调用或转移地址, 寻址范围为2KB;


addr16:    16位目的地址, 用在LCALL或LJ MP指令中, 表示调用或转换地址, 寻址范围为64KB;


rel:   8位偏移量, 用补码表示, 用在SJMP等转移指令中, 寻址范围为 - 128-- + 127;


bit:   表示位寻址空间中的位地址, 8 位, 寻址范围为0-- FFH。


4.2.2   80C51单片机指令系统的寻址方式:


1、立即寻址---是指操作数在指令操作数域直接给出:


操作数域直接给出:

2、直接寻址---是指操作数的地址直接在指令操作数域给出:

可访问3 种地址空间


(1)内部RAM低128单元: 00H-7F


  MOV   A,    3CH    ; (A)<---(3CH)

(2)特殊功能寄存器SFR, 唯 一方式80H-0FFH


MOV    A,     P1       ;  (A) <---(P1口)

MOV    A,     90H

(3)211个位地址空间


MOV   C,   30H      ; (Cy)<---(30H)

MOV   A,   30H      ;  A <---(30H)


例: MOV   A  ,   30H;   机器码为E530H


         指令功能是把直接地址30H单元的内容送累加器A,  即(30H)--->(A)如图所示。


例:   MOV   DPTR , #1234h 


            (DPH)=12H


            (DPL)=34H


注意: 立即数前加 " # "号,以区别直接地址


例如:  MOV    A,         #30H         ; (A)<--- 30H


             MOV    A,           30H         ; (A)<---(30H)


3、寄存器寻址---操作数存放在寄存器中:

MOV  A   , RO


MOV  R0 , #01001111B          



【例4-9】 MOV A,R1   ;(A)<---(R1)



例如: MOV   A,   R3   ;机器码为 0EBH     指令功能是把当前R3中的操作数送累加器A。指令执行示意图如图3-6所示。设 ( R3) =12H

4、寄存器间接寻址:

是指寄存器中存放的是操作数的地址,而操作数在存储器中,通过寄存器可间接得到。

寄存器间接寻址用符号''@"表示

       寄存器间接寻址可寻址范围如下:


(1)内部RAM低128单元, 地址范围00H~7FH,用Ri(i=0,1)和SP作为间址寄存器;


(2)与P2口配合使用, 用Ri指示低8位地址, 可寻址片外数据存储器或I/O口的64kB7区域;


(3)DPTR间接寻址寄存器, 可寻址片外程序存储器或数据存储器包括1/0 口的各自的64kB 区域。


例如:  MOV  A,      @R1   ;机器码 E7H


设 (R1)  =60H  ,    (60H) =50H ,  执行结果


(A)=50H,  该指令执行过程如图4-5所示。


5、变址寻址:

基址寄存器+变址寄存器的tB]接寻址方式

DPTR/PC      ,        A


MOVC   A,   @ A+DPTR


            (A)<---((DPTR) + (A))


 


MOVC   A,   @ A+PC


             (A)<---( (PC )+ (A))


JMP @ A + DPTR


              (PC)=(A)+(DPTR)


 


MOVC  A,@A+DPTR ;(A)←((A)+(DPTR))


6、相对寻址

       是以程序计数器PC的当前值为基地址, 加上指令中给出的偏移量rel作为转移目的地址。转移目的地址=下一条指令地址+rel

【例4-12】 JC 80H


7、位寻址 bit

       位寻址是指对一些内部RAM和特殊功能寄存器进行位操作时的寻址方式。


位寻址范围:


(1) 内部RAM的位寻址区, 共16个单元的128位, 单元地址为20H  2FH ,  位地址为00H~7FH。可用直接位地址或字节地址加位的表示方法。


例如:    MOV    C,    7AH    

或           MOV    C,    2FH.    2


(2)特殊功能寄存器SFR可供位寻址的专用寄存器共11个,实有位地址位83 位。位地址有4 种表达方式 。



     1)   直接使用位地址       3 )   单元地址加位的表示法


MOV   C,    0D6H                 MOV   C,    0D0H.6


     2)   位名称表示法           4 )   专用寄存器符号加位的表示法


MOV    C ,     AC                  MOV   C,     PSW.6



特点1: 内部数据存储器与内部I/O口统一编址

1、内部数据存储器的寻址方式


1)00H~1FH               寄存器寻址 4 组R0~R7     : Rn


                                     直接寻址    direct


                                     寄存器间接寻址 @R0,@R 1


例: (01H)--->(02H)


MOV     02H,01H    ;源寻址和目的寻址均为直接寻址


MOV C  R2 ,01H    ;源寻址为直接寻址,目的寻址为寄存器寻址


MOV    R0,#01 H


MOV  02H,@R0     ; 源寻址为寄存器间接寻址,


                                 目的寻址为直接寻址


2)20H~2FH             可位寻址区的寻址方式


字节寻址方式: 直接寻址 direct


                           寄存器间接寻址@R0,@R1


位寻址: bit        直接寻址


例: MOV     26H,C;            位寻址       (26H)       1位


        MOV      26H,A;           字节寻址    (26 H)     8 位


3)30H~7FH             数据缓冲区的寻址方式


字节寻址方式: 直接寻址 direct


                           寄存器间接寻址@R0,@R1


例: MOV     56H,A;            字节寻址 ( 56H ) 8位


        MOV      R0,#66H


        MOV      @R0,#56H


可以将用户堆栈设在该区内, 堆栈指针SP


2、SFR及I/O口的操作---只能直接寻址


3、关于A累加器有两种寻址方式:

4、可做片内RAM的指针有:


特点2: 片外数据存储区和外部扩展的I/O口的寻址方式

推荐阅读

史海拾趣

GREATECS公司的发展小趣事

在电子行业中,有许多伟大的企业(GREATECS公司,这里假设为泛指多个杰出电子企业)通过不同的路径和策略实现了显著的发展。以下是五个相关故事,每个故事均基于事实,旨在展示这些企业如何成长和壮大。

1. 通用电气(General Electric, GE)的多元化扩张

通用电气(GE)的故事始于1888年,由托马斯·爱迪生创立,最初专注于电力和照明领域。随着时间的推移,GE通过一系列的战略并购和内部创新,逐渐扩展到电机、电动机制造、航空、医疗设备、核能等多个领域。在20世纪,GE成为全球最大的多元化企业之一,其业务遍布全球。特别是在杰克·韦尔奇担任CEO期间(1981-2001),通过大规模的并购和扩张,GE的营业收入和市值显著增长。然而,2008年金融危机后,GE面临经济困境,随后进行了战略调整,出售金融资产并重点发展核心业务,如今仍是全球领先的科技和工业公司之一。

2. 索尼(Sony)的创新之路

索尼公司成立于1946年,最初由井深大和盛田昭夫创立,起初是一家小型电子产品制造商。索尼的崛起得益于其持续的创新精神和对消费者需求的敏锐洞察。1958年,索尼推出了世界上第一台便携式晶体管收音机,开启了便携式电子产品的新时代。随后,索尼又推出了Walkman便携式音乐播放器、PlayStation游戏机等一系列革命性产品,这些产品不仅改变了人们的娱乐方式,也奠定了索尼在全球电子行业的领先地位。索尼的成功在于其不断追求技术创新和产品质量,以及对市场趋势的准确把握。

3. 三星电子的崛起

三星电子是韩国最大的电子企业,其发展历程充满了挑战与机遇。起初,三星主要从事贸易和低端电子产品制造。然而,在20世纪80年代末至90年代初,三星决定实施“新经营”战略,通过大规模投资研发、提升产品质量和品牌形象,实现了从低端制造商向高端科技企业的转型。在半导体、智能手机、显示面板等领域,三星取得了重大突破,成为全球市场的领导者。三星的成功在于其强大的研发能力、高效的供应链管理以及对市场变化的快速响应。

4. 英特尔(Intel)的芯片霸主地位

英特尔公司成立于1968年,最初是一家专注于半导体存储器的初创企业。然而,随着日本存储器制造商的崛起,英特尔面临了巨大的竞争压力。在关键时刻,英特尔决定放弃存储器业务,转而专注于微处理器(CPU)的研发和生产。这一战略转型使英特尔迅速崛起为全球最大的CPU制造商,其“Intel Inside”计划更是深入人心,成为个人电脑行业的标准配置。英特尔的成功在于其强大的技术创新能力、对市场需求的精准把握以及与全球合作伙伴的紧密合作。

5. 华为的技术突破与全球化战略

华为作为中国电子行业的代表企业,其发展历程充满了传奇色彩。起初,华为主要从事电信设备的研发和销售。然而,随着技术的不断进步和市场需求的不断变化,华为逐渐将业务扩展到智能手机、云计算、人工智能等多个领域。华为的成功在于其持续的技术研发投入、对全球市场的深入洞察以及灵活的市场策略。特别是在5G技术方面,华为取得了重大突破,成为全球领先的5G解决方案提供商。同时,华为还积极推动全球化战略,与全球多个国家和地区的运营商建立了紧密的合作关系。

FTDI公司的发展小趣事

FTDI公司(Future Technology Devices International)在电子行业中的发展充满了多个关键节点和故事,以下是五个相关故事,每个故事均基于事实描述:

1. 创立与早期发展

FTDI公司成立于1992年3月13日,由弗雷德·达特(Fred Dart)创立。起初,公司专注于为个人电脑市场提供服务,其首发产品是针对主板芯片组的解决方案。这些产品被成功应用于IBM的AMBRA和PS/2系列个人电脑上,为当时的计算机技术发展做出了贡献。这一时期的成功为FTDI奠定了坚实的基础,并展示了其在芯片设计领域的初步实力。

2. USB桥接芯片领域的崛起

随着计算机技术的快速发展,FTDI敏锐地捕捉到了USB接口技术的潜力。公司开始专注于USB桥接芯片的研发与生产,并逐渐在这一领域崭露头角。其MM232R和USB-COM232-PLUS1等接口产品因其出色的连接性和兼容性而广受好评。FTDI的USB桥接芯片广泛应用于汽车电子、IOT互联网、工业产品、医疗设备、新能源以及高端消费电子等多个领域,逐步确立了其在全球USB桥接芯片市场的领先地位。

3. 全球化布局与业务拓展

为了进一步扩大市场份额,FTDI积极实施全球化战略。公司在新加坡设立了业务运营总部,并在全球范围内建立了完善的销售和服务网络。这一布局不仅提升了FTDI在全球市场的竞争力,还为其带来了更多的商业机会。同时,FTDI不断拓展产品线,满足不同领域客户的需求,进一步巩固了其在USB桥接芯片领域的市场地位。

4. 并购与合作

在发展过程中,FTDI也通过并购与合作的方式不断壮大自身实力。例如,在2022年,FTDI被电连技术通过发行股份及支付现金的方式收购,成为电连技术的控股子公司。这次并购不仅为FTDI带来了更多的资金和资源支持,还为其未来的发展注入了新的动力。同时,FTDI也与其他行业巨头建立了广泛的合作关系,共同推动电子行业的发展。

5. 技术创新与市场引领

FTDI始终将技术创新作为公司发展的核心驱动力。公司不断投入研发资源,推出具有自主知识产权的新产品和技术解决方案。这些创新成果不仅提升了FTDI的产品竞争力,还为其在全球市场树立了良好的品牌形象。同时,FTDI还积极参与行业标准的制定和推广工作,致力于推动整个电子行业的技术进步和发展。

以上五个故事展示了FTDI公司在电子行业中的发展历程和关键节点。从创立初期的默默无闻到如今的全球领先企业,FTDI凭借其敏锐的市场洞察力、强大的技术实力和不懈的创新精神,在电子行业中书写了属于自己的辉煌篇章。

HM International公司的发展小趣事

机顶盒,全称为数字视频变换盒,是现代家庭娱乐中不可或缺的重要设备。从广义上讲,任何与电视机连接的网络终端设备均可视为机顶盒,其发展历程涵盖了从模拟频道增补器到数字卫星、地面及有线电视机顶盒的广泛范畴。而从狭义角度看,机顶盒特指那些具备数字处理能力的设备,如IPTV机顶盒、DVB-S卫星机顶盒、DVB-T地面机顶盒及DVB-C有线电视机顶盒等。

机顶盒的核心功能在于接收并转换数字电视信号,使之能在传统或智能电视上播放。它不仅能接收来自有线电缆、卫星天线及宽带网络的信号,还能提供电子节目指南、网页浏览等增值服务。通过机顶盒,用户能够享受到高清乃至4K超高清的电视节目,体验更为细腻的画面和震撼的音效。此外,机顶盒还具备网络交互能力,支持在线购物、观看网络视频、玩游戏等多元化活动,使电视机从单向接收信息的设备转变为智能互动终端。

随着技术的不断进步,机顶盒正朝着高清化、智能化方向发展。未来,机顶盒将不仅限于基本的信号接收与解码功能,还将融入更多智能推荐、语音识别等先进技术,为用户提供更加个性化、便捷的娱乐体验。总之,机顶盒作为连接电视与互联网的桥梁,正以其丰富的功能和广泛的应用场景,不断满足用户日益增长的娱乐需求。

乐鑫(espressif)公司的发展小趣事

乐鑫科技深知,物联网的发展离不开一个完善的生态系统。因此,公司积极构建了一个集硬件、软件、开源社区于一体的物联网生态系统。通过提供丰富的软件资源和技术支持,乐鑫科技为购买其硬件的客户实现了更优的使用体验,推动了物联网应用的普及和落地。

APLUS Products公司的发展小趣事

在发展过程中,APLUS Products公司注重与上下游企业的合作与共赢。公司积极与供应商建立良好的合作关系,确保原材料的质量和供应的稳定性;同时,也与多家知名企业建立了战略合作关系,共同开拓市场、分享资源。这些合作不仅提高了公司的运营效率,也增强了其市场竞争力。

Allen Avionics Inc公司的发展小趣事

在发展过程中,APLUS Products公司注重与上下游企业的合作与共赢。公司积极与供应商建立良好的合作关系,确保原材料的质量和供应的稳定性;同时,也与多家知名企业建立了战略合作关系,共同开拓市场、分享资源。这些合作不仅提高了公司的运营效率,也增强了其市场竞争力。

问答坊 | AI 解惑

嵌入式系统PDA智能手机设计方案(一)

   随着手持通信设备市场的快速发展,手机的功能逐渐增多。现在手机已经不只是用于语音通信的手持设备,而成为集成了短信、彩信、上网以及移动办公等附加功能的嵌入式通信平台。   集成了这些功能的手机被称为智能手机。近年,嵌入式 ...…

查看全部问答>

有没有让色盲者也看的清的红绿灯

能不能设计一个让色盲的人看的清的红绿灯,有什么方法呢…

查看全部问答>

wince 6.0 生成sdk的问题

请问大家一个sdk定制问题 在定制系统时,我选择了开发板给的bsp,编译通过后生成新的sdk时却出现问题。 一般在生成新的sdk时,emulation项中可以设置长、宽的。而我这却是灰色,无法设置。当我编译sdk后安装成功后,在tools-》device emulator ma ...…

查看全部问答>

WINCE5.0问题(关于VS2005与应用程序的烧写)

我采购了一块2440的ARM开发板,已经做了下面的工作: 1、通过USB与MS的SYNC可以与我的WINDOWS XP互联及同步,并可以在电脑与开发板之间随意复制与粘贴文件。 2、用VS2005(C#)开发了基于WINCE5.0的程序,而且VS2005与WINCE5.0的开发板也可以互联 ...…

查看全部问答>

U盘的问题

我的优盘有好多的坏块怎么办啊   ,,????想量产呢  可是用Chipgenius 也测不出芯片组的信息  该怎么办???…

查看全部问答>

求救:EVC编译问题

各位高手: 我安装EVC,安装了SP4,然后无论我用哪个SDK建立工程,编译都会报错: --------------------Configuration: WCETest - Win32 (WCE ARMV4) Release-------------------- Compiling resources... Error executing rc.exe. WCETest.ex ...…

查看全部问答>

获取电池电量函数问题GetSystemPowerStatusEx2

我查了我的sdk里已经包含了Coredll.lib和Winbase.h,为什么我在EVC里调用GetSystemPowerStatusEx2函数,编译时说没有定义呢,头文件我已经加了的…

查看全部问答>

求资料和讲解,这些题你们有资料吗,或给点建议

本帖最后由 paulhyde 于 2014-9-15 09:29 编辑 [ 本帖最后由 孤独剑 于 2011-5-6 19:27 编辑 ]  …

查看全部问答>

北京有没有好的pcb制版厂?

北京有没有好的pcb制版厂?…

查看全部问答>

初学者有关AD采集的

AD采集正弦波输出同频同相的方波。可是有错误,谁能把我看看。在下万分感谢。 #include   double pingjun=0; long caiyangzhi; double caiyang (); void main (void) {         WDTCTL = WDTPW + WDTHOLD; & ...…

查看全部问答>