| |
学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)或特殊功能积存器
|