3.3指令系统 3.3.1指令分类 MCS-51指令系统有42种助记符,代表了33种功能,指 令助记符与各种可能的寻址方式相结合,共构成111条指令 按指令的功能,MCS-51指令系统可分为下列5类: (1)数据传送类指令(29条) (2)算术运算类指令(24条) 3)逻辑运算及移位类指令(24条) (4)位操作类指令(17条) 5)控制转移类指令(17条)
3.3 指令系统 3.3.1 指令分类 MCS-51指令系统有42种助记符,代表了33种功能,指 令助记符与各种可能的寻址方式相结合,共构成111条指令。 按指令的功能,MCS-51指令系统可分为下列5类: (1)数据传送类指令(29条) (2)算术运算类指令(24条) (3)逻辑运算及移位类指令(24条) (4)位操作类指令(17条) (5)控制转移类指令(17条)
3.3.1指令分类 在分类介绍指令前,先把描述指令的一些符号的意义作 简单介绍。 R一当前选定的寄存器区中的8个工作寄存器RO~R7 即n=0~7。 Ri一当前选定的寄存器区中的2个寄存器RO,R1,i=0、1。 Direct8位内部RAM单元的地址,它可以是一个内部 数据区RAM单元(0OH~7FH)或特殊功能寄存器地址(I/O端 口、控制寄存器、状态寄存器8OH~OFH)。 #data—指令中的8位常数 #data16指令中的16位常数 adr1616位的目的地址,用于LJMP、LCAL,可指向 64KB程序存储器的地址空间 adr1111位的目的地址,用于AJMP、ACAL指令。目 的地址必须与下一条指令的第一个字节在同一个2KB程序存 储器地址空间之内
3.3.1 指令分类 在分类介绍指令前,先把描述指令的一些符号的意义作 一简单介绍。 Rn―当前选定的寄存器区中的8个工作寄存器R0~R7, 即n=0~7。 Ri―当前选定的寄存器区中的2个寄存器R0,R1,i=0、1。 Direct—8位内部RAM单元的地址,它可以是一个内部 数据区RAM单元(00H~7FH)或特殊功能寄存器地址(I/O端 口、控制寄存器、状态寄存器80H~0FFH)。 #data—指令中的8位常数。 #data16—指令中的16位常数。 addr16—16位的目的地址,用于LJMP、LCALL,可指向 64KB程序存储器的地址空间。 addr11—11位的目的地址,用于AJMP、ACALL指令。目 的地址必须与下一条指令的第一个字节在同一个2KB程序存 储器地址空间之内
rel—8位带符号的偏移量字节,用于SJMP和所有条 件转移指令中。偏移量相对于下一条指令的第一个字节 计算,在—128~+127范围内取值。 bit—内部数据RAM或特殊功能寄存器中的可直接寻 址位 DPTR数据指针,可用作16位的地址寄存器 A—累加器 B—寄存器,用于MU和DIV指令中 C一进位标志或进位位 @—间接寄存器或基址寄存器的前缀,如@Ri,@ DPTR。 /一位操作的前缀,表示对该位取反。 (X)—X中的内容。 ((X))一由X寻址的单元中的内容。 箭头左边的内容被箭头右边的内容所替代
rel—8位带符号的偏移量字节,用于SJMP和所有条 件转移指令中。偏移量相对于下一条指令的第一个字节 计算,在—128~+127范围内取值。 bit—内部数据RAM或特殊功能寄存器中的可直接寻 址位。 DPTR—数据指针,可用作16位的地址寄存器。 A—累加器 B—寄存器,用于MUL和DIV指令中。 C—进位标志或进位位。 @—间接寄存器或基址寄存器的前缀,如@Ri,@ DPTR。 /—位操作的前缀,表示对该位取反。 (X)—X中的内容。 ((X))—由X寻址的单元中的内容。 ←—箭头左边的内容被箭头右边的内容所替代
3.3.2数据传送类指令 数据传送类指令一般的操作是把源操作数传送到指 令所指定的目标地址。指令执行后,源操作数保持不变, 目的操作数为原操作数所替代 数据传送类指令用到的助记符有:MOV,MOVX, MOVC,ⅩCH,XCHD,PUSH,POP,SWAP。 数据一般传送指令的助记符“MOV表示 格式:MOV[目的操作数],[源操作数] 功能:目的操作数←(源操作数中的数据) 源操作数可以是:A、Rn、 direct、@Ri、#ata 日的操作数可以是:A、Rn、 direct、@Ri 数据传送指令一般不影响标志,只有一种堆栈操作 可以直接修改程序状态字PSW,这样,可能使某些标志 位发生变化
3.3.2 数据传送类指令 数据传送类指令一般的操作是把源操作数传送到指 令所指定的目标地址。指令执行后,源操作数保持不变, 目的操作数为原操作数所替代 数据传送类指令用到的助记符有:MOV,MOVX, MOVC,XCH,XCHD,PUSH,POP,SWAP。 数据一般传送指令的助记符“MOV”表示 格式: MOV [目的操作数],[源操作数] 功能:目的操作数(源操作数中的数据) 源操作数可以是:A、Rn、direct、@Ri、#data 目的操作数可以是:A、Rn、direct、@Ri 数据传送指令一般不影响标志,只有一种堆栈操作 可以直接修改程序状态字PSW,这样,可能使某些标志 位发生变化