51单片机的应用——分段函数

设x是无符号数,存放在20H单元中,y为结果,存放在21H单元

编程实现以下分段函数:

y=\left\{\begin{matrix} x& x\geq 40\\ 2x &20< x\leq 40 \\ x+1& x\leqslant 20 \end{matrix}\right.

分析:根据分段函数画出程序框图,可以发现是一个分支结构的程序,通过与边界值相减比较决定程序的走向。

程序如下:

MOV A,20H
CLR C  ;使用减法前,cy清0,也可以状态寄存器清0
SUBB A,#21;当x≤20,cy=1,顺序执行;否则x>20,清0跳转再判断
JNC NEXT1
MOV A,20H
ADD A,#1;x+1
MOV 21H,A
LJMP BACK

NEXT1:MOV A,20H
SUBB A,#40;当20<x<40,cy=1,顺序执行;否则x≥40,清0跳转
JNC NEXT2
MOV A,20H
MOV B,20H
ADD A,B  ;2x
MOV 21H,A
LJMP BACK

NEXT2:MOV 21H,20H ;x
                    ;51单片机可以直接单元传送,8086不行
BACK:RET ;返回

总结:

自变量经过分段函数输出结果在程序上可以用分支结构实现。

②为判断自变量位于哪一支,可以用减法和条件转移进行判断,判断依据是相减后进位标志位cy的变化。

③因为汇编的减法都是带进位位的减法,所以使用前记得把cy清0。

④画出程序框图能更加直观。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值