7种寻址方式已介绍完毕。问题:当一条指令给定后,如何来确定该指令的寻址方式?例如:MOVA,#4OH,属于立即数寻址还是寄存器寻址?要看以哪个操作数作为参照系。“#40H”操作数分为源操作数和目的操作数。对于源操作数“A”来来说,是“立即数寻址”方式,但对目的操作数说,是属于“寄存器寻址”方式。一般而言,寻址方式指的是源操作数,所以此例为立即数寻址方式。对指令系统7种寻址方式总结,概括见表3-1。16
16 7种寻址方式已介绍完毕。 问题:当一条指令给定后,如何来确定该指令的寻址方式? 例如: MOV A,#40H,属于立即数寻址还是寄存器寻址? 要看以哪个操作数作为参照系。 操作数分为源操作数和目的操作数。对于源操作数“#40H” 来说,是“立即数寻址”方式,但对目的操作数“A”来 说,是属于“寄存器寻址”方式。 一般而言,寻址方式指的是源操作数,所以此例为立即数寻 址方式。 对指令系统7种寻址方式总结,概括见表3-1。 16
表3-17种寻址方式及其寻址空间序号寻址方式寻址空间1ROR7、A、B、C(位)、DPTR等寄存器寻址2直接寻址内部128字节RAM、特殊功能寄存器3寄存器间接寻址片内数据存储器、片外数据存储器4立即数寻址程序存储器中的立即数5基址寄存器+变址寄存器间接寻址读程序存储器中的固定数据和程序散转6相对寻址程序相对跳转7位寻址内部RAM与SFR中的可寻址位17
17 表3-1 7种寻址方式及其寻址空间
3.48051指令系统分类介绍共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
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或Cy进位标志位或位处理机中的累加器。addr1111位目的地址。16位目的地址。addr16@间接寻址寄存器前缀,如@Ri,@A+DPTR。(x)表示×地址单元或寄存器中的内容。((x))表示以×单元或寄存器中的内容作为地址间接寻址单元的内容。↓箭头右边的内容被箭头左边的内容所取代192
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和OV,但不包括奇偶标志位P。20
20 3.4.1 数据传送类指令 使用最频繁。一般数据传送类指令的助记符为“MOV” ,通用 格式如下: MOV <目的操作数>,<源操作数> 数据传送类指令是把源操作数传送到目的操作数。指令执行之 后,源操作数不改变,目的操作数修改为源操作数。所以数 据传送类操作属“复制”性质,而不是“搬家” 。 本类指令不影响标志位:Cy、Ac和OV,但不包括奇偶标志位P。 20