程序控制指令
发布时间:2023-06-08 09:25

注:①表中的(PC)是转移九游会ag指令的地址。

②在实际使用时,地址一般用标号表示。

3. 变址转移指令JMP的使用

* JMP的转移地址 = 基址(DPTR)+变址偏移量(A)。

* 应用例:按照(A)= 0,1,2,分别转向三个不同的程序分支。

MOV DPTR,#GO ;设立散转入口地址

MOV B A, ;

RL A ; (A) ←(A)+3

ADD A,B ;

JMP @A+DPTR

GO: LJMP GO1 ;指令地址为GO

LJMP GO2 ;指令地址为GO+3

LJMP GO3 ;指令地址为GO+6

* 问题一:上例中,如果由LJMP改用AJMP,程序应如何变化?

* 问题二:上例中,如果A的值大于2会如何?怎样解决?

4. 条件转移指令的使用

* 因为A与C的值并不一定由计算操作而改变,故JZ、JNZ、JC、JNC等指令的运用与计算并无特别的联系,

* 位值判别转移指令使条件转移的功能更丰富和灵活。例如:

* 如果(B)³0,转向POS分支:JNB B.7,POS

* 如果计算溢出,转向FL分支: JB OV,FL

* 如果C=1,将C清零并转向NEG分支:JBC C,NEG

* 由P1.4检测火灾传感器,1有效。传感器报警时转向FIRE分支:JB P1.4,FIRE

* 可以在http://www.51hei.com 单片机教程 首页找更多资料哦

5. 比较转移指令CJNE及其使用

* 格式:CJNE 前数,后数,相对偏移量

转移条件:前数≠后数

对C的影响:按无符号数减法。前数减后数,有借位C = 1,否则C = 0。

* 应用例:A、B中为无符号数,比较两数,大数存A,小数存B。

CJNE A,B,0

JNC DONE

EXC A,B

DONE:……

转载须保留地址:http://www.51hei.com/mcu/284.html

* 应用例:A、B中为有符号数,比较两数,大数存A,小数存B。

有符号数比较的算法:

以A 与B 表示A与B的无符号值。

对于A B 有,若A 0 则A B,A 0 则A B;

据此可以画出右边的流程图,相应的程序如下

CJNE A,B,NEQ

SJMP DONE

NEQ:JNC AGT

XCH A,B

AGT:JNB Acc.7,DONE

XCH A,B

DONE:……


下一篇:没有了