单片机中80C51的寻址方式

 我来答
若以下回答无法解决问题,邀请你更新回答
dao_er
2009-04-02 · TA获得超过716个赞
知道小有建树答主
回答量:466
采纳率:0%
帮助的人:0
展开全部
1.立即寻址方式
采用立即寻址的指令一般是双字节的。第一个字节是指令的操作码,第二个字节是立即数。因此,操作数就是放在程序存储器中的常数。立即数前面应加前缀“#”号。
例如: MOV A, #2BH ;A←#2BH,即将立即数2BH传送至A中。
2.直接寻址方式
采用直接寻址的指令一般是双字节或三字节指令,第一字节为操作码,第二,三字节为操作数的地址码。单片机中,直接地址只能用来表示片内低128字节单元、专用寄存器和片内RAM的位地址空间。其中专用寄存器和位地址空间只能用直接寻址方式来访问。
例如:MOV A,30H ;(30H)→A
MOV C,00H ; (00H)→Cy
LJMP 1000H ; 将1000H送入PC
3.寄存器寻址方式
寄存器寻址方式用于访问选定的工作寄存器R0~R7、A、B、DPTR和进位CY中的数。其中R0~R7由操作码低三位的8种组合表示,A、B、DPTR、C则隐含在操作码之中。
这种寻址方式中被寻址的寄存器中的内容就是操作数。
例如: MOV A, R0 ;(R0)→A
MOV B ,A ;(A)→B
4.寄存器间接寻址方式
这种寻址方式中,指令指定寄存器中的内容为操作数的地址。寄存器间接寻址是用于访问片内数据存储器或片外数据存储器。当访问片内RAM 或片外的低256字节空间时,可用R0或R1做为间址寄存器;当访问片外整个64KB的地址RAM空间时,用16位寄存器DPTR做间址寄存器。这类指令都为单字节的指令,操作码的最低位表示是采用R0还是R1做间址器。
在执行PUSH和POP指令时,也采用寄存器间接寻址,此时用堆栈指针SP做间址寄存器。
例如:MOVX A, @R0 ; ((R0))→A
MOVX A , @DPTR ; ((DPTR))→A
POP ACC ; ((SP))→A , (SP)-1→SP
5.基址加变址寻址方式
这种寻址方式用于访问程序存储器中的某个字节。以DPTR或PC作为基址寄存器,累加器A做为变址寄存器,两者的内容之和为操作数的地址。这种寻址方式常用于查表操作。
例如:MOVC A,@A+DPTR ;指令代码为93H,单字节指令。设该指令放在1040H单元,A的原内容为A0H,DPTR中的值为 3000H,则操作数的地址等于:A0H+3000H=30A0H,即将30A0H单元中的内容传送至A中。
6.位寻址方式
位寻址是指对片内RAM的位寻址区(字节地址20H~2FH)和可以位寻址的专用寄存器进行位操作时的寻址方式。在进行位操作时,借助于进位C作为位操作累加器。操作数直接给出该位的地址,然后根据操作码的功能对其进行位操作。位寻址的位地址与直接寻址的字节地址形式完全一样,主要由对应的操作数的位数来区分,使用时应加以注意。
例如:MOV 10H,C ;10H是位寻址的位地址(C是位累加器)
MOV A,10H ;10H是直接寻址的字节地址(A是字节累加器)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4326a6254
2009-04-10 · TA获得超过108个赞
知道答主
回答量:79
采纳率:0%
帮助的人:0
展开全部
正解
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式