7种寻址方式已介绍完毕。 问题:当一条指令给定后,如何来确定该指令的寻址方式? 例如:MOVA,#4OH,属于立即数寻址还是寄存器寻址? 要看以哪个操作数作为参照系。 操作数分为源操作数和目的操作数。对于源操作数“#40” 来说,是“立即数寻址”方式,但对目的操作数“A”来 说,是属于“寄存器寻址”方式。 一般而言,寻址方式指的是源操作数,所以此例为立即数寻 址方式。 对指令系统7种寻址方式总结,概括见表3-1。 16
16 7种寻址方式已介绍完毕。 问题:当一条指令给定后,如何来确定该指令的寻址方式? 例如: MOV A,#40H,属于立即数寻址还是寄存器寻址? 要看以哪个操作数作为参照系。 操作数分为源操作数和目的操作数。对于源操作数“#40H” 来说,是“立即数寻址”方式,但对目的操作数“A”来 说,是属于“寄存器寻址”方式。 一般而言,寻址方式指的是源操作数,所以此例为立即数寻 址方式。 对指令系统7种寻址方式总结,概括见表3-1。 16
表3-17种寻址方式及其寻址空间 序号 寻址方式 寻址空间 1 寄存器寻址 RO~R7、A、B、C(位)、DPTR等 2 直接寻址 内部128字节RA、特殊功能寄存器 3 寄存器间接寻址 片内数据存储器、片外数据存储器 4 立即数寻址 程序存储器中的立即数 5 基址寄存器+变址寄存器间接寻址 读程序存储器中的固定数据和程序散转 6 相对寻址 程序相对跳转 7 位寻址 内部RA与SFR中的可寻址位 17
17 表3-1 7种寻址方式及其寻址空间
3.4 8051指令系统分类介绍 共111条指令,按功能分为五类: (1)数据传送类(28条) (2)算术运算类 (24条) (3)逻辑操作类 (25条) (4)控制转移类(17条) (5)位操作类(17条) 先简单介绍指令用到的符号。 Rn ,当前寄存器区的8个工作寄存器R0~R7(=0~7)。 Ri 当前寄存器区中作为间接寻址寄存器的2个寄存器R0、R1(0,1)。 18
18 3.4 8051指令系统分类介绍 共111条指令,按功能分为五类: (1)数据传送类(28条) (2)算术运算类(24条) (3)逻辑操作类(25条) (4)控制转移类(17条) (5)位操作类(17条) 先简单介绍指令用到的符号。 Rn 当前寄存器区的8个工作寄存器R0~R7(n=0~7)。 Ri 当前寄存器区中作为间接寻址寄存器的2个寄存器R0、R1(i=0,1)。 18
direct 直接地址,即8位内部数据存储器单元或特殊功能寄存器的地址。 #data 指令中的8位立即数。 #data16 指令中的16位立即数。 rel 偏移量,8位的带符号补码数。 DPTR 数据指针,可用作16位数据存储器单元地址的寄存器。 bit 内部RAM或特殊功能寄存器中的直接寻址位。 c或Gy 进位标志位或位处理机中的累加器。 addr11 11位目的地址。 addr16 16位目的地址。 @ 间接寻址寄存器前缀,如@Ri,@A+DPTR。 (×) 表示×地址单元或寄存器中的内容。 (x)) 表示以×单元或寄存器中的内容作为地址间接寻址单元的内容。 → 箭头右边的内容被箭头左边的内容所取代。 19
19 direct 直接地址,即8位内部数据存储器单元或特殊功能寄存器的地址。 #data 指令中的8位立即数。 #data16 指令中的16位立即数。 rel 偏移量,8位的带符号补码数。 DPTR 数据指针,可用作16位数据存储器单元地址的寄存器。 bit 内部RAM或特殊功能寄存器中的直接寻址位。 C或Cy 进位标志位或位处理机中的累加器。 addr11 11位目的地址。 addr16 16位目的地址。 @ 间接寻址寄存器前缀,如@Ri,@A+DPTR。 (х) 表示х地址单元或寄存器中的内容。 ((х)) 表示以х单元或寄存器中的内容作为地址间接寻址单元的内容。 → 箭头右边的内容被箭头左边的内容所取代
3.4.1 数据传送类指令 使用最频繁。一般数据传送类指令的助记符为“MOV”,通用 格式如下: MOV <目的操作数>,<源操作数> 数据传送类指令是把源操作数传送到目的操作数。指令执行之 后,源操作数不改变,目的操作数修改为源操作数。所以数 据传送类操作属“复制”性质,而不是“搬家”。 本类指令不影响标志位:Cy、Ac和0V,但不包括奇偶标志位P。 20
20 3.4.1 数据传送类指令 使用最频繁。一般数据传送类指令的助记符为“MOV” ,通用 格式如下: MOV <目的操作数>,<源操作数> 数据传送类指令是把源操作数传送到目的操作数。指令执行之 后,源操作数不改变,目的操作数修改为源操作数。所以数 据传送类操作属“复制”性质,而不是“搬家” 。 本类指令不影响标志位:Cy、Ac和OV,但不包括奇偶标志位P。 20