程序:
解释:
1,clr Change
??有点疑惑?不是只能clr a,clr c的吗?
2,cjnz a,B,NotEqual
名词解释
不等转移指令编辑本段指令格式
CJNE Rn,#data,rel
3,jc Next
如果CY标志位为1,则跳转到Next处
如果CY标志位为0,则执行下一步。
4,setb Change
置交换标志为1,有个疑惑?为什么Change equ 0,就能表示定义一个位呢?
5,xch a,@r0
a与 ((r0))交换!
6,dec r0
r0内容减1。
7,jb Change,Sort
JB是判断位变量转移指令。 例子:
JB P1.3,L1 意思就是判断P1.3的值是不是“1” 如果是就跳转到L1程序执行,如果不是就顺序执行下一条指令。
所以说,当Change标志位没有改变时,说明所有的数都是按照顺序排列的,没必要再循环,结束循环。
知识点:
1,JC指令
JC指令
CJNE A,#25,NET1的含义,它的含义有三点:
1.当A等于25时,执行下一句;
2.当A不等于25时,跳转到NE1语句执行;
3.要注意当A不等于25时,A必定大于25或者小于25,如果A小于25,则不仅要跳转到NE1执行,还要给CY标志位置一,如果A大于25,则仅仅要跳转到NE1执行,不会给CY标志位置一。
JC BE的意思是若CY为0,则执行下一句,否则,跳转到BE。
因此:执行 CJNE A,#25,NE1 后,若A不等于25,则跳转到NE1: JC BE
若A大于25,C为0,则JC判断后执行下一句,P0就是#0E6H ,若A小于25,则跳转到BE,此时P0就是#09FH。
2,setb
SETB ET0 ;开定时/计数器0允许 SETB是汇编指令,意思是把其后面的那个寄存器的位置1。 ET0是定时/计数器0的中断容许位,为1时,单片机会响应定时/计数器0的溢出中断(当然,总中断也必须容许)。为0时,单片机不响应。这句意思就是,把ET0置为1。这会导致单片机会响应定时/计数器0的溢出中断SETB TR0 ;定时/计数器0开始运行 TR0是单片机会响应定时/计数器0的启动位,为1,就启动定时/计数器0;为0,就停止定时/计数器0的运行。
3,xch
字节交换指令语法
XCH是eXCHange的缩写。 XCH A,Rn ;(A)<->(Rn),n=0~7 XCH A,direct ;(A)<->(direct) XCH A,@Ri ;(A)<->((Ri)),i=0,1编辑本段功能
将累加器A的内容和源操作数的内容相互交换。编辑本段例
(A)=80H,(R7)=08H,(40H)=F0H (R0)=30H,(30H)=0FH 执行下列指令 XCH A,R7 ;(A)<->(R7) XCH A,40H ;(A)<->(40H) XCH A,@R0 ;(A)<->((R0)) 结果:(A)=0FH,(R7)=80H,(40H)=08H,(30H)=F0H <!--EndFragment--><!--EndFragment-->