1 MOV A,Rn 寄存器内容送入累加器2 MOV A,direct 直接地址单元中的数据送入累加器3 MOV A,@Ri 间接RAM 中的数据送入累加器4 MOV A,#tata 立即数送入累加器5 MOV Rn,A 累加器内容送入寄存器6 MOV Rn,direct 直接地址单元中的数据送入寄存器7 MOV Rn,#data 立即数送入寄存器8 MOV direct,A 累加器内容送入直接地址单元9 MOV direct,Rn 寄存器内容送入直接地址单元10 MOV direct,direct 直接地址单元中的数据送入另一个直接地址单元11 MOV direct,@Ri 间接RAM 中的数据送入直接地址单元12 MOV direct,#data 立即数送入直接地址单元13 MOV @Ri,A 累加器内容送间接RAM 单元14 MOV @Ri,direct 直接地址单元数据送入间接RAM 单元15 MOV @RI,#data 立即数送入间接RAM 单元16 MOV DRTR,#dat16 16 位立即数送入地址寄存器17 MOVC A,@A+DPTR 以DPTR 为基地址变址寻址单元中的数据送入累加器18 MOVC A,@A+PC 以PC 为基地址变址寻址单元中的数据送入累加器19 MOVX A,@Ri 外部RAM(8 位地址)送入累加器20 MOVX A,@DPTR 外部RAM(16 位地址)送入累加器21 MOVX @Ri,A 累计器送外部RAM(8 位地址)22 MOVX @DPTR,A 累计器送外部RAM(16 位地址)23 PUSH direct 直接地址单元中的数据压入堆栈24 POP direct 弹栈送直接地址单元25 XCH A,Rn 寄存器与累加器交换26 XCH A,direct 直接地址单元与累加器交换27 XCH A,@Ri 间接RAM 与累加器交换28 XCHD A,@Ri 间接RAM 的低半字节与累加器交换算术操作类指令:算术操作类指令1 ADD A,Rn 寄存器内容加到累加器2 ADD A,direct 直接地址单元的内容加到累加器 3 ADD A,@Ri 间接ROM 的内容加到累加器 4 ADD A,#data 立即数加到累加器5 ADDC A,Rn 寄存器内容带进位加到累加器6 ADDC A,direct 直接地址单元的内容带进位加到累加器7 ADDC A,@Ri 间接ROM 的内容带进位加到累加器8 ADDC A,#data 立即数带进位加到累加器9 SUBB A,Rn 累加器带借位减寄存器内容第1 页共8 页10 SUBB A,direct 累加器带借位减直接地址单元的内容11 SUBB A,@Ri 累加器带借位减间接RAM 中的内容12 SUBB A,#data 累加器带借位减立即数13 INC A 累加器加1 14 INC Rn 寄存器加1 15 INC direct 直接地址单元加1 16 INC @Ri 间接RAM 单元加1 17 DEC A 累加器减1 18 DEC Rn 寄存器减1 1 12 19 DEC direct 直接地址单元减1 20 DEC @Rj 间接RAM 单元减1 21 INC DPTR 地址寄存器DPTR 加1 22 MUL AB A 乘以B,结果放在A 23 DIV AB A 除以B,结果放在A 24 DA A 累加器十进制调整布尔变量操作类指令:1 CLR C 清进位位2 CLR bit 清直接地址位3 SETB C 置进位位4 SETB bit 置直接地址位5 CPL C 进位位求反6 CPL bit 置直接地址位求反7 ANL C,bit 进位位和直接地址位相“与” 8 ANL C,bit 进位位和直接地址位的反码相“与” 9 ORL C,bi t 进位位和直接地址位相“或” 10 ORL C,bit 进位位和直接地址位的反码相“或” 11 MOV C,bit 直接地址位送入进位位 12 MOV bit,C 进位位送入直接地址位 13 JC rel 进位位为 1 则转移 14 JNC rel 进位位为 0 则转移 15 JB bit,rel 直接地址位为 1 则转移 16 JNB bit,rel 直接地址位为 0 则转移 17 JBCbit,rel 直接地址位为 1 则转移,该位清零逻辑操作数指令:逻辑操作数指令: 1 ANL A,Rn 累加器与寄存器相“与” 2 ANL A,direct 累加器与直接地址单元相“与” 3 ANL A,@Ri 累加器与间接 RAM 单元相“与” 4 ANL A,#data 累加器与立即数相“与” 5 ANL direct,A 直接地址单元与累加器相“与” 6 ANL direct,#data 直接地址单元与立即数相“与”第 2 页共 8 页7 ORL A,Rn 累加器与寄存器相“或” 8 ORL A,direct 累加器与直接地址单元相“或” 9 ORL A,@Ri 累加器与间接 RAM 单元单元相“或”10 ORL A,#data 累加器与立即数相“或” 11 ORL direct,A 直接地址单元与累加器相“或” 12 ORL direct,#data 直接地址单元与立即数相“或” 13 XRL A,Rn 累加器与寄存器相“异或” 14 XRL A,direct 累加器与直接地址单元相“异或” 15 XRL A,@Ri 累加器与间接 RAM 单元单元相“异或” 16 XRL A,#data 累加器与立即数相“异或” 17 XRL direct,A 直接地址单元与累加器相“异或” 18 XRL direct,#data 直接地址单元与立即数相“异或” 19 CLR A 累加器清“0” 20 CPL A 累加器求反 21 RL A 累加器循环左移 22 RLC A 累加器带进位位循环左移 23 RR A 累加器循环右移 24 RRC A 累加器带进位位循环右移 25 SWAP A 累加器半字节交换转移类指令:控制转移类指令: 1 ACALL addr11 绝对(短)调用子程序 2 LCALL addr16 长调用子程序 3 RET 子程序返回 4 RETI 中数返回 5 AJMP addr11 绝对(短)转移 6 LJMP addr16 长转移 7 SJMP rel 相对转移 8 JMP @A+DPTR 相对于 DPTR 的间接转移 9 JZ rel 累加器为零转移 10 CJNE rel 累加器非零转移 11 CJNE A,direct,rel 累加器与直接地址单元比较,不相等则转移 12 CJNE A,#data,rel 累加器与立即数比较,不相等则转移 13 CJNE Rn,#data,rel 寄存器与立即数比较,不相等则转移14 CJNE @Ri,#data,rel 间接 RAM 单元与立即数比较,不相等则转移 15 DJNZ Rn,rel 寄存器减 1,非零转移 16 DJNZ direct,erl 直接地址单元减1,非零转移 17 NOP 空操作伪指令1. ORG 汇编起始命令第 3 页共 8 页格式:ORG 16 位地址功能是规定该伪指令后面程序的汇编地址,即汇编后生成目标程序存放的起始地址。
例如: ORG 2000H START:MOV A,#64H 既规定了标号 START 的地址是 2000H,又规定了汇编后的第一条指令码从 2000H 开始存放。
ORG 可以多次出现在程序的任何地方。
当它出现时,下一条指令的地址就由此重新定位。
2. END 汇编结束命令 END 命令通知汇编程序结束汇编。
在 END 之后的汇编语言指令均不予以汇编。
3.EQU 赋值命令格式:字符名称 EQU 项(数或汇编符号) EQU 命令是把“项”赋值给“字符名称”。
注意,这里的字符名称不等于标号(其后没有冒号)。
其中的项,可以是数也可以是汇编符号。
用 EQU 赋过值的符号名可以用作数据地址、代码地址、位地址或是一个立即数。
由此它可以是 8 位的,也可以 16 位的。
例如: AA EQU R1 MOV A, AA 这里 AA 就是代表了工作寄存器 R1。
又例如: A10EQU 10 DELY EQU 07EBH MOV A, A10 LCALL DELY 这里 A10 当作片内 RAM 的一个直接地址,而 DELY 定义了一个 16 位地址,实际上它是一个子程序的入口。
4.DATA 数据地址赋值命令格式:字符名称 DATA 表达式 DATA 命令功能与 EQU 类似,但有一下差别: 1)EQU 定义的字符名必须先定义再使用,而 DATA 定义的字符名可以后定义先用; 2)用EQU 伪指令可以把一个汇编符号赋给一个名字,而 DATA 只能把数据赋给字符名; 3)DATA 语句中可以把一个表达式的值赋给字符名,其中的表达式应是可求值的。
5.DB 定义字节命令格式:DB [项或项表] 项或项表可以是一个字节、用逗号隔开的字节串或括在单引号(‘’)中的 ASCII 字符串。
它通知汇编程序从当前 ROM 地址开始,保留一字节或字节串的存储单元,并存入 DB 后面的数据,例如: ORG 2000H DB 0A3H LIST: DB 26H, 03H STR: DB 'ABC' 经汇编后,则有: (2000H)=A3H (2001H)=26H (2002H)=03H (2003H)=41H (2004H)=42H (2005H)=43H 其中,41H、42H 和 43H 分别是 A、B 和 C 的 ASCII 编码值。
6.DW 定义字节命令格式:DW 16 位数据项或项表该命令把 DW 后的 16 为数据项或项表从当前地址连续存放。
没项数值为 16 位二进制数,高 8 位先存放,低 8第 4 页共 8 页位后存放,这和其他指令中 16 位数的存放方式相同。
DW 常用于定义一个地址表,例如: ORG 1500H TABLE: DW 7234H, 8AH, 10H 经汇编后,则有: (1500H)=72H (1501H)=34H (1502H)=00H (1503H)=8AH (1504H)=00H (1505H)=10H 7.DS 定义存储空间命令格式:DS 表达式在汇编时,从定义地址开始保留 DS 之后表达式的值所规定的存储单元,以备后用。
例如: ORG 1000H DS 08H DB 30H,8AH 汇编以后,从 1000H 保留 8 个单元,然后从 1008H 开始给内存赋值,即 (1008H)=30H (1009H)=8AH 以上的 DB、DW 和 DS 伪指令都只是对程序存储器起作用,它们不能对数据存储器进行初始化PSW: PSW:程序状态字寄存器地址 D0H,位寻址 D7H~D0H。