设x是无符号数,存放在20H单元中,y为结果,存放在21H单元
编程实现以下分段函数:
分析:根据分段函数画出程序框图,可以发现是一个分支结构的程序,通过与边界值相减比较决定程序的走向。
程序如下:
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。
④画出程序框图能更加直观。