交换指令
1、字节交换指令
XCH A,Rn ;A的值给Rn,Rn的值给A,具体数学符号不好敲出来,就是交换的意思,有别于赋值
XCH A,@Ri;A的内容和Ri的内容所表示的地址的内容进行交换,和(一)中寄存器间接寻址内容相似
XCH A,direct;参考前两个,这个就不必过多赘述了,direct表示地址单元
2、半字节交换指令
XCHD A,@Ri ;两者第四位发生交换
SWAP A ; 其高四位与第四位发生交换
堆栈操作指令
堆栈操作指令有俩指令助记符,一个用于进栈,一个用于出栈。
PUSH direct ;SP指针加一,SP指针始终指向堆栈的栈顶,将我们需要的数据一条一条地压进我们定义的栈里去,是为进栈。
POP direct ;出栈,SP指针减一
值得注意的是,在堆栈操作指令中,累加器A得用ACC表示。
算术运算类指令
不带进位位加法:ADD 就将两值进行二进制相加就行
带进位位加法:ADDC 将需要相加的内容及PSW程序状态控制位的CY进位标志位的状态也一并送至累加器。
减法:SUBB 与ADDC大差不差,将内容与CY值送给累加器A
乘法:MUL AB;两数相乘,积的高8位存B,低八位存A
除法:DIV AB;两数相除,商存A,余数存B
十进制调整 DA A;对A的内容进行进制调整,数制对不上+6,对应的8421BCD码
加1操作: INC
减1操作:DEC
逻辑运算类与循环移位类指令
逻辑与 ANL
逻辑或 ORL
逻辑异或 XRL
清零 CLR
取反 CPL
循环左移 RL循环左移一位,RLC,内容与CY循环左移一位
循环右移 RR循环右移一位,RRC,内容与CY循环右移一位
控制转移类指令
无条件转移类指令
短转移: AJMP addr11 目标地址为下一指令首址的高5位与addr11合并,字节数2
长转移:LJMP addr16 目标地址为addr16,字节数3
相对转移:SJMP rel 目标地址为下一指令首址与rel相加,rel为有符号数,字节数2
散转移:JMP @A+DPTR 目标地址为A内容与DPTR内容相加,字节数1
空操作:NOP 目标地址为下一指令地址,字节数1
条件转移指令
判零转移指令:JZ,为0转移,2个字节;JNZ,非0转移,两个字节。
比较不等转移指令:GJNE 3个字节
减1非零转移指令:DJNZ;Rn的内容减一不为0,2个字节,direct(地址)单元减一不为0转移,3个字节。
子程序调用及返回指令
子程序调用:LCALL addr16 调用addr16地址处理程序,字节数3;ACALL addr11,调用下一指令首地址的高五位与addr11合并所指的子程序,字节数2
子程序返回:RET,返回到子程序调用下一指令处,1字节
中断返回:RETI ,返回到中断断点处,字节数1
位操作指令
传送:MOV C,bit;将bit的值送给CY
位清零:CLR C .CLR bit
位置1: SETB C .SETB bit
位逻辑与:ANL 位逻辑或:ORL 位取反:CPL
判断CY转移:JC:CY为1转移。JNC:CY为0转移。
判断bit转移:JB 为1转移 JNB 为0转移 JBC为1转移,同时对bit位清0
伪指令
设置起始地址指令ORG,后面放上地址就行
结束指令END ,【标号:】 END 【起始地址】,标号和起始地址不是必须的
赋值伪指令EQU,先定义再使用,需要。字符名称 EQU 数值或汇编符号
数据地址赋值指令DATA,可以先试用后定义。 字符名称 DATA 表达式
定义字节伪指令DB 【标号】DB 字节常数表 功能:从指定地址单元开始,定义若干个8位内存单元内容。
定义字伪指令DW:【标号:】 DW 字常数表
定义存储区指令DS
位定义伪指令BIT
文件包含命令INCLUDE