七种寻址方式
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例
JC
03H ;若进位C=0,则程序顺序执行,即 不跳转,PC= PC+2 ;若进位C=1, 则以PC 中的当前内容为基地址, 加上偏移量03H 后所得到的结果为 该转移指令的目的地址 。
…
…
单片机的工作过程
例: MOV A,#09H 74H 09H ;把09H送到累加器A中 09H送到累加器A 送到累加器
MOV A,@R0执行示意图 , 执行示意图
4.立即寻址方式 操作数在指令中直接给出, 操作数在指令中直接给出,需在操作数前面 加前缀标志“ 。例如: 加前缀标志“#”。例如: MOV A, #3AH ;立即数3AH送累加器A
MOV
A,#3AH执行示意图
5.基址寄存器加变址寄存器间址寻址方式 本寻址方式是以DPTR PC作基址寄存器 DPTR或 作基址寄存器, 本寻址方式是以DPTR或PC作基址寄存器,以 累加器A作为变址寄存器。 累加器A作为变址寄存器。 说明: 说明: (1)本寻址方式是专门针对程序存储器的寻址 方式,寻址范围可达到64KB。 64KB 方式,寻址范围可达到64KB。 本寻址方式的指令只有3 (2)本寻址方式的指令只有3条: MOVC A,@A+DPTR MOVC A,@A+PC JMP @A+DPTR
标志位, b.位名称的表示方法。例如:PSW.5是F0标志位,可使用 位名称的表示方法。例如:PSW. 方法 表示该位。 F0表示该位。 单元地址加位数的表示方法 的表示方法。 H). c.单元地址加位数的表示方法。例如 :(0D0H).5。 特殊功能寄存器符号加位数的表示方法 例如:PSW. 的表示方法。 d.特殊功能寄存器符号加位数的表示方法。 例如:PSW.5 。 将片内RAM位地址3DH即27H RAM位地址 例 SETB 3DH ;将片内RAM位地址3DH即27H 单元的第5位置“ 单元的第5位置“1”。
程序存储区 1020 EA 12 R2
片内RAM区 4A
ACC
4A
MOV A,R2执行示意图
2.直接寻址方式 操作数直接以单元地址的形式给出: 操作数直接以单元地址的形式给出: A, MOV A,40H 寻址范围: 寻址范围: 内部RAM 128个单元 RAM的 (1) 内部RAM的128个单元 特殊功能寄存器。除了以单元地址的形式外, (2) 特殊功能寄存器。除了以单元地址的形式外, 可用寄存器符号的形式给出 例如: 的形式给出。 还可用寄存器符号的形式给出。例如: A, A,P0是等价的 是等价的。 MOV A,80H 与 MOV A,P0是等价的。 直接寻址方式是访问特殊功能寄存器的唯一寻址方式
D7 D6 D5 D4 D3 D2 D1 D0 27H 0 0 0 0 0 0 0 0 38
D7 D6 D5 D4 D3 D2 D1 D0 27H 0 0 1 0 0 0 0 0 38
3F 3E 3D 3C 3B 3A 39
3F 3E 3D 3C 3B 3A 39
7.相对寻址方式 在相对寻址的转移指令中, 在相对寻址的转移指令中 , 给出了地址偏 移量, 表示,即把PC PC的当前值加上偏 移量,以“rel”表示,即把PC的当前值加上偏 移量就构成了程序转移的目的地址: 移量就构成了程序转移的目的地址: 目的地址= 目的地址=转移指令所在的地址 + 转移指令的字 节数 + rel 偏移量rel是一带符号的8 rel是一带符号的 偏移量rel是ቤተ መጻሕፍቲ ባይዱ带符号的8位二进制数补码数 。 范围是: 128 范围是:–128 ~ +127 向地址增加方向最大可转移(127+转移指令字节) 向地址增加方向最大可转移(127+转移指令字节) 个单元地址,向地址减少方向最大可转移 (128-转移指令字节)个单元地址。 128-转移指令字节)个单元地址。 种寻址方式及寻址空间,见表3 43) 7种寻址方式及寻址空间,见表3-1(P43)。
例
MOV
A, 3AH
;把3AH单元的内容送A。
MOV
A, 3AH执行示意图
3. 寄存器间接寻址方式 寄存器中存放的是操作数的地址 在寄存器的名称前面加前缀标志 前缀标志“ 在寄存器的名称前面加前缀标志“@” 访问内部RAM或外部数据存储器的低256个字节时, RAM或外部数据存储器的低256个字节时 访问内部RAM或外部数据存储器的低256个字节时,只 能采用R0 R1作为间址寄存器 例如: R0或 作为间址寄存器。 能采用R0或R1作为间址寄存器。例如: A, i=0或 MOV A,@Ri ;i=0或1 其中Ri中的内容为40H 把内部RAM 40H单元的内容送 Ri中的内容为40H, RAM中 其中Ri中的内容为40H,把内部RAM中40H单元的内容送 到A 。 寻址范围: 寻址范围: 访问内部RAM 128个单元 其通用形式为@Ri RAM低 个单元, (1)访问内部RAM低128个单元,其通用形式为@Ri 对片外数据存储器的64K字节的间接寻址,例如: 64K字节的间接寻址 (2)对片外数据存储器的64K字节的间接寻址,例如: A, MOVX A,@DPTR
取指过程
程序计数器 地址寄存器 外部地址总线AB 外部地址总线AB
0002H PC= 0000H 0001H
0000H
内 部 数 据 总 线
(PC) (PC) (PC)
执行过程
运算器 ①② 累加器A 累加器A 存 储 器
0002H 0001H 0 0 0 0 1 0 0 1 0000H 0 1 1 1 0 1 0 0
3.3 指令系统的寻址方式 寻址方式就是在指令中说明操作数所在地址的方法。 寻址方式就是在指令中说明操作数所在地址的方法。 就是在指令中说明操作数所在地址的方法 寻址方式。 共7种寻址方式。 1.寄存器寻址方式 操作数在寄存器中 A, ;(Rn Rn) n=0~ MOV A,Rn ;(Rn)→A,n=0~7 表示把寄存器Rn的内容传送给累加器A Rn的内容传送给累加器 表示把寄存器Rn的内容传送给累加器A 寻址范围包括: 寻址范围包括: 组通用工作寄存区共32个工作寄存器。 32个工作寄存器 (1)4组通用工作寄存区共32个工作寄存器。 部分特殊功能寄存器,例如A (2)部分特殊功能寄存器,例如A、B 以及数据指针 寄存器DPTR DPTR等 寄存器DPTR等。
(3)片外数据存储器的低256字节 片外数据存储器的低256字节 256 例如: A, 例如:MOVX A,@Ri (4)堆栈区 堆栈操作指令PUSH 压栈) POP(出栈) PUSH( 堆栈操作指令PUSH(压栈)和POP(出栈)使用堆 栈指针(SP) 栈指针(SP)作间址寄存器 R0, 例 MOV R0,#50H MOV A,@R0
…
MOVC A,@A+DPTR执行示意图 ,@A+DPTR执行示意图
…
6.位寻址方式 MCS-51有位处理功能 可以对数据位进行操作,例如: 有位处理功能, MCS-51有位处理功能,可以对数据位进行操作,例如: MOV C,40H C, 是把位40H的值送到进位位C 40H的值送到进位位 是把位40H的值送到进位位C。 寻址范围包括: 寻址范围包括: 内部RAM中的位寻址区。位有两种表示方法,例如, RAM中的位寻址区 (1)内部RAM中的位寻址区。位有两种表示方法,例如, 40H;另一种是单元地址加上位,例如,(28H).0, 40H;另一种是单元地址加上位,例如,(28H).0,指 的是28H单元中的最低位。它们是等价的。 28H单元中的最低位 的是28H单元中的最低位。它们是等价的。 (2)特殊功能寄存器中的可寻址位 可寻址位在指令中有如下4种的表示方法: 可寻址位在指令中有如下4种的表示方法: 直接使用位地址。例如PSW.5的位地址为0D5H PSW.5的位地址为0D5H。 a. 直接使用位地址。例如PSW.5的位地址为0D5H。
地址 译码
你知道PC 你知道PC 的作用吗? 的作用吗?
寄存器区
数据缓冲器 外部数据总线DB 外部数据总线DB 内部控制信号
指令 时钟及清零 寄存器 译码
外部控制总线CB 外部控制总线CB
返回
例
指令存放在70 单元, 70H 现假设MOVC A,@A+DPTR指令存放在70H单元,ACC @A+ 中原存放值为E DPTR中值为2000H 中值为2000 DPTR形 中原存放值为E0H,DPTR 中值为2000H , 则A +DPTR 形 成的地址为20 20E 20E 单元中内容为47 47H 成的地址为20E0H 。20E0H 单元中内容为47H , 则执行 该指令后,ACC中原 中原E 47H代替。 该指令后 ,ACC中原E0H被47H 代替。该指令执行过程 示于图。 示于图。