#(I)Rn:R0-R7:寄存器
(II)direct:直接地址
(III)@RX:简洁取址
(IV)#data:立即数
(V)DPTR:数据指针(16位SFR,高位字节DPH,低位字节:DPL,:)H与L嘛)
all指(I)+(II)+(III)+(IV)
(一)数据传输类:
MOV: MOV A,B; 传递数据,A是接受者,B是传递的数,传递者被省略(A:累加器/寄存器等地址,B:累加器/all)(双周期指令)
MOVX:MOVX A B; 传递数据,A是接受者,B是传递的数,传递者被省略(AB:累加器与@RX或@DPTR打交道)
#外部存储器单元交流必须通过累加器中转,内部各存储器之间可以畅通交流
MOVC: MOVC A B; 将ROM中的数送入A中(查表指令)(A:累加器,B:@A+DPTR)
PUSH: PUSH direct; 推入,将direct中的内容送入堆栈,附加操作:先SP++,后推入(单周期指令)
POP: POP direct; 弹出,将direct中的内容送回direct,附加操作:先送出,后SP–(单周期指令)
(二)算数运算类:
ADD: ADD A B; 不带进位的加法(A:累加器,B:all)
ADDC:ADDC A B; 带进位的加法(A:累加器,B:all)
SUBB: SUBB A B; 带借位的减法(A:累加器,B:all)没有不带借位的减法,不带借位只需在第一次做相减时把CY置0
MUL: MUL A B; 两个八位无符号数相乘(A:结果的低八位,B:结果的高八位)OV=0,CY=0,乘积大于65535时OV置1
DIV: DIV A B; A中的无符号八位数除以B中的无符号八位数(A:商,B:余数)CY=0,OV=0,除数为0时OV=1
INC: INC A; 加1(A:累加器/DPTR/all except #data)
DEC: DEC A; 减1(A:累加器/all except #data)
(三)逻辑运算类:
CLR: CLR A; 将A中的值清零(A:累加器)(单周期指令)
CPL: CPL A; 将A中的值按位取反
RL: RL A; 将A中的值逻辑左移
RLC: RLC A; 将A中的值加上进位位进行逻辑左移
RR: RR A; 将A中的值逻辑右移
RRC: RRC A; 将A中的值加上进位位进行逻辑右移
SWAP:SWAP A; 将A中值高低四位互换
ANL: ANL A,B; 按位与(A:累加器/direct,B:all)
ORL: ORL A,B; 按位或(A:累加器/direct,B:all)
XRL: XRL A,B; 按位异或(A:累加器/direct,B:all)
(四)控制转移类:
(1)无条件转移
AJMP:AJMP A; 短转移2K距离(A:地址)(双字节指令)
LJMP:LJMP A; 长转移64K距离(A:地址)(三字节指令)
SJMP:SJMP A; 相对转移256距离(A:地址)
(2)间接转移
JMP: JMP @A+DPTR; 跳转
(3)条件转移
JZ: JZ A; (A)=0,转移,否则执行下一条
JC: JZ A; CY=1,转移,否则执行下一条(A:标号)
JNZ: JNZ A; (A)!=0 转移,否则执行下一条
(4)比较转移
CJNE:CJNE A,B; A=B,顺序执行,否则转移(A:累加器/RX/@RX,B:direct/#data)A>B,CY=0,否则,CY=1
(5)循环转移
DJNZ:DJNZ A,B; (A)-1!=0,转到B,否则执行下一步(A:RX/direct,B:标号)(双周期指令)
(6)调用返回
LCALL:LCALL A; 长调用(A:地址)
ACALL:ACALL A; 短调用(A:地址)
RET: RET; 返回
(五)空操作类:
NOP: NOP; 停一周期
(六)位操作类:
(1)位传送
MOV: MOV A,B; 位累加器(CY)与其他地址之间的数据传输(AB:分别为CY与BIT)
(2)位修正
CLR: CLR A; 位清0(A:CY/BIT)
SETB: SETB A; 位置1(A:CY/BIT)
CPL: CPL A; 位取反(A:CY/BIT)
(3)位逻辑
ANL: ANL A,B; A与B取与(A:CY,B:BIT//BIT)
#/BIT:BIT中的值取出取反后参与运算,其值不发生改变
ORL: ORL A,B; A与B取或(A:CY,B:BIT//BIT)
(4)位转移
JC: JC A; 判CY,1转0下(A:标号)
JNC: JNC A; 判CY,0转1下(A:标号)
JB: JB A,B; 判位变量,1转0下(A:标号)
JNB: JNB A,B; 判位变量,0转1下(A:标号)
(七)常用标号:
标号的实质意义是地址数值(首地址)
LOOP:循环
ORG:开始
END:结束
DELAY:暂停
MAIN:主程序
(八)思考和总结
1.2^n进制之间互化灰常方便
由SWAP这个指令在结果上的特殊性想到的,SWAP A:(A)=39H–>93H
如十六进制化为二进制只需将每位都转化为四位0/1即可(2^4=16)
由此深刻地理解到了计算机中拥有4/8/16进制、位啦等等的良苦用心!
2.SFR特殊功能寄存器总结:
符号 地址 功能介绍
B F0H B寄存器(在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用)
ACC E0H 累加器(了解CPU 的当前状态,并作出相应的处理,CY:进位标志,AC:半进位标志,F0:用户标志位,RS1、RS0:工作寄存器组选择位,0V:溢出标志位,P:奇偶校验位)
PSW D0H 程序状态字
IP B8H 中断优先级控制寄存器
P3 B0H P3口锁存器
IE A8H 中断允许控制寄存器
P2 A0H P2口锁存器
SBUF 99H 串行口锁存器
SCON 98H 串行口控制寄存器
P1 90H P1口锁存器
TH1 8DH 定时器/计数器1(高8位)
TH0 8CH 定时器/计数器1(低8位)
TL1 8BH 定时器/计数器0(高8位)
TL0 8AH 定时器/计数器0(低8位)
TMOD 89H 定时器/计数器方式控制寄存器
TCON 88H 定时器/计数器控制寄存器
DPH 83H 数据地址指针(高8位)\
DPL 82H 数据地址指针(低8位)/DPTR(数据指针)
SP 81H 堆栈指针
P0 80H P0口锁存器
PCON 87H 电源控制寄存器