1.24k likes | 1.47k Vues
MCS5-1 单片机. MCS5-1 的指令系统. 寻址方式. MCS - 51 共有 7 种 址方寻式 ,现介绍如下: ( 1 ) 立即寻址 : 操作数 就写在指令中,和 操作码 一起放在程序 存贮器 中。把“ #” 号放在 立即数 前面,以表示该寻址方式为立即寻址,如 mov A,#20H 。. ( 2 ) 寄存器 寻址:操作数放在寄存器中,在指令中直接以寄存器的名来表示操作数地址。如 MOV A , R0 就属于 寄存器寻址 ,即 R0 寄存器的内容送到 累加器 A 中。.
E N D
MCS5-1单片机 MCS5-1的指令系统
寻址方式 • MCS-51共有7种址方寻式,现介绍如下: • (1)立即寻址:操作数就写在指令中,和操作码一起放在程序存贮器中。把“#”号放在立即数前面,以表示该寻址方式为立即寻址,如mov A,#20H。
(2)寄存器寻址:操作数放在寄存器中,在指令中直接以寄存器的名来表示操作数地址。如MOV A,R0就属于寄存器寻址,即R0寄存器的内容送到累加器A中。
(3)直接寻址:操作数放在单片机的内部RAM某单元中,在指令中直接写出该单元的地址。如前例的ADD A,70H中的70H。
(4)寄存器间接寻址:操作数放在RAM某个单元中,该单元的地址又放在寄存器R0或R1中。 如果RAM的地址大于256,则该地址存放在16位寄存器DPTR(数据指针)中,此时在寄存器名前加@符号来表示这种间接寻址。如MOV A,@ R0。
(5)变址寻址:指定的变址寄存器的内容与指令中给出的偏移量相加,所得的结果作为操作数的地址。如MOVC A,@A+DPTR
(7)位寻址:操作数是二进制中的某一位,其位地址出现在指令中。如SETB bit • MCS51的指令系统按功能分有:数据传送类、转移指令、算术运算类、逻辑运算类、和十进制指令及一些伪指令共111个。
算术运算指令 • 1.ADD A,Rn 将累加器与寄存器的内容相加,结果存回累加器
2.ADD A,direct 将累加器与直接地址的内容相加,结果存回累加器
3.ADD A,@Ri 将累加器与间接地址的内容相加,结果存回累加器
4.ADD A,#data 将累加器与常数相加,结果存回累加器
5.ADDC A,Rn 将累加器与寄存器的内容及进位C相加,结果存回累加器
6.ADDC A,direct 将累加器与直接地址的内容及进位C相加,结果存回累加器
7.ADDC A,@Ri 将累加器与间接地址的内容及进位C相加,结果存回累加器
8.ADDC A,#data 将累加器与常数及进位C相加,结果存回累加器
9.SUBB A,Rn 将累加器的值减去寄存器的值减借位C,结果存回累加器
10.SUBB A,direct 将累加器的值减直接地址的值减借位C,结果存回累加器
11.SUBB A,@Ri 将累加器的值减间接地址的值减借位C,结果存回累加器
12.SUBB A,#data 将累加器的值减常数值减借位C,结果存回累加器
17.INC DPTR 数据指针寄存器值加1 • 说明:将16位的DPTR加1,当DPTR的低字节(DPL)从FFH溢出至00H时,会使高字节(DPH)加1,不影响任何标志位
22.MUL AB 将累加器的值与B寄存器的值相乘,乘积的低位字节存回累加器,高位字节存回B寄存器
说明:将累加器A和寄存器B内的无符号整数相乘,产生16位的积,低位字节存入A,高位字节存入B寄存器。如果积大于FFH,则溢出标志位(OV)被设定为1,而进位标志位为0说明:将累加器A和寄存器B内的无符号整数相乘,产生16位的积,低位字节存入A,高位字节存入B寄存器。如果积大于FFH,则溢出标志位(OV)被设定为1,而进位标志位为0
23.DIV AB 将累加器的值除以B寄存器的值,结果的商存回累加器,余数存回B寄存器
说明:无符号的除法运算,将累加器A除以B寄存器的值,商存入A,余数存入B。执行本指令后,进位位(C)及溢出位(OV)被清除为0说明:无符号的除法运算,将累加器A除以B寄存器的值,商存入A,余数存入B。执行本指令后,进位位(C)及溢出位(OV)被清除为0
24.DA A 将累加器A作十进制调整, • 若(A) 3-0>9或(AC)=1,则(A) 3-0←(A)3-0+6 • 若(A) 7-4>9或(C)=1,则(A) 7-4←(A)7-4+6
逻辑运算指令 • 25.ANL A,Rn 将累加器的值与寄存器的值做AND的逻辑判断,结果存回累加器
26.ANL A,direct 将累加器的值与直接地址的内容做AND的逻辑判断,结果存回累加器
27.ANL A,@Ri 将累加器的值与间接地址的内容做AND的逻辑判断,结果存回累加器
28.ANL A,#data 将累加器的值与常数做AND的逻辑判断,结果存回累加器
29.ANL direct,A 将直接地址的内容与累加器的值做AND的逻辑判断,结果存回该直接地址
30.ANL direct,#data 将直接地址的内容与常数值做AND的逻辑判断,结果存回该直接地址
31.ORL A,Rn 将累加器的值与寄存器的值做OR的逻辑判断,结果存回累加器
32.ORL A,direct 将累加器的值与直接地址的内容做OR的逻辑判断,结果存回累加器
33.ORL A,@Ri 将累加器的值与间接地址的内容做OR的逻辑判断,结果存回累加器
34.ORL A,#data 将累加器的值与常数做OR的逻辑判断,结果存回累加器
35.ORL direct,A 将直接地址的内容与累加器的值做OR的逻辑判断,结果存回该直接地址
36.ORL direct,#data 将直接地址的内容与常数值做OR的逻辑判断,结果存回该直接地址
37.XRL A,Rn 将累加器的值与寄存器的值做XOR的逻辑判断,结果存回累加器
38.XRL A,direct 将累加器的值与直接地址的内容做XOR的逻辑判断,结果存回累加器
39.XRL A,@Ri 将累加器的值与间接地扯的内容做XOR的逻辑判断,结果存回累加器
40.XRL A,#data 将累加器的值与常数作XOR的逻辑判断,结果存回累加器