| |
学51有这些就够了,强烈推荐!
CJNE        A,direct,rel        ;if(direct)<(A),PC←(PC)+3+rel,and CY←0   ;CJNE compare instruction
;                                   ;if(direct)>(A),PC←(PC)+3+rel,and CY←1
;                                   ;if(direct)=(A),PC←(PC)+3,and CY←0
;   CJNE        A,#data,rel         ;ifdata<(A),PC←(PC)+3+rel,and CY←0
;                                   ;ifdata>(A),PC←(PC)+3+rel,and CY←1
;                                   ;ifdata=(A),PC←(PC)+3,and CY←0
;   CJNE        Rn,#data,rel        ;ifdata<(Rn),PC←(PC)+3+rel,and CY←0
;                                   ;ifdata>(Rn),PC←(PC)+3+rel,and CY←1
;                                   ;ifdata=(Rn),PC←(PC)+3,and CY←0
;   CJNE        @Ri,#data,rel       ;ifdata<((Ri)),PC←(PC)+3+rel,and CY←0
;                                   ;ifdata>((Ri)),PC←(PC)+3+rel,and CY←1
;                                   ;ifdata=((Ri)),PC←(PC)+3,and CY←0
CJNE是比较转移指令,该指令通过比较前面两个操作数的大小,如果它们的值不相等则转移,相等则继续执行。指令执行后要影响进位位CY,若操作数1小于操作数2,则CY=1;若操作数1大于操作数2,则CY=0
8种常用伪指令
1.ORG   16位地址                         ;此指令用在原程序或数据块的开始,指明此语句后                                                              
                                             面目标程序或数据块存放的起始地址。
2.[标号:] DB   字节数据项表             ;将项表中的字节数据存放到从标号开始的连续字                                     
                                            节单元中。例如:SEG: DB 88H,100,“
3.[标号:]DW   双字节数据项表            ;定义16位地址表,16地址按低位地址存低位字                                     
                                             节,高位地址存高位字节。                                     
                                             例如:TAB: DW  1234H,7BH
4.名字 EQU 表达式  或名字=表达式         ;用与给一个表达式赋值或给字符串起名字。之                                                      
                                           后名字可用做程序地址,数据地址或立即数地址                                          
                                           使用。名字必须是一字母开头的字母数字串。                                      
                                           例如:COUNT=10 或 SPACE  EQU  10H
5.名字 DATA 直接字节地址                 ;给8位内部RAM单元起个名字,名字必须是一                                         
                                           字母开头的字母数字串。同一单元可起多个名字。                                     
                                            例如:ERROR  DATA  80H
6.名字 XDATA 直接字节地址                 ;给8位外部RAM起个名字,名字规定同DATA                                     
                                              伪指令。例如:IO_PORT  XDATA  0CF04H
7.名字 BIT 位指令                        ;给一可位寻址的位单元起个名字,规定同DATA                                       
                                             伪指令。例如:SWT BIT 30H
8.[标号:] END            ;指出源程序到此结束,汇编对其后的程序语句不                   
                                        予理睬.源程序只在主程序最后使用一个END
定义指令符号
| 符号 | 说明 | 
| Rn | 目前所选定的寄存器组中的R0-R7寄存器 | 
| Ri | 当前选中的寄存器区中可作为地址寄存器的两个寄存器R0和R1(i=0,1) | 
| Direct | 8位直接寻址地址,可以是内存RAM地址(00H--7FH)或SFR(80H--FFH) | 
| @Ri | 通过R0或R1做间接寻址内部RAM的地址(00H--FFH)的前缀 | 
| #data | 8位立即数 | 
| #data16 | 16位立即数,只有DPTR中才用到 | 
| Addr 16 | 只用在LCALL(长指令调用,三字节)和LJMP(无条件长转移指令)指令中的16位目的地地址,可寻址64K存储器中的任何地址 | 
| Addr 11 | 使用在ACALL(绝对调用指令,双字节)和AJMP(无条件绝对转移指令)指令中的11位目的地地址,可寻址下一个指令算起2K内的任何地址,即目的地址必须放在与下条指令第一个字节同一个2kB程序存储器空间 | 
| DPTR | 数据指针 | 
| rel | 有符号的8位偏移地址(Offset Address),其范围是从下一个指令算起的-128到+128字节中。负值表示地址向前推算,正值表示地址向后推算。使用在SJMP和所有条件式跳转指令中 | 
| bit | 可直接位寻址的内部数据RAM(20H--2FH),其中地址范围为(00H--7FH)或特殊功能积存器
 |