MCS-51单片机,编程序,计算分段函数的函数值
扫描二维码
随时随地手机看文章
MCS-51单片机,简单的一个汇编语言程序,计算分段函数的函数值。
已知25H单元中有一个变量X,要求编制程序,按下列函数关系式计算变量Y的值,并将Y的值送到31H、30H单元中。
X*X X>6
Y = 3X-5 2<=X<=6
2X+1 X<2
=================================================
最佳答案:
说明:为了便于网友进行功能测试,所以在下列程序中,比网页上的答案增加了一个测试用的程序段和一些注释。
org 0000H
mov 25H, #7 ;这里的数字,可以写 0~255,进行全面调试
call fen_zhi ;调用子程序,按照要求进行数据处理
nop
nop ;可以在此处观察31H 30H中的内容
nop
sjmp $ ;停止运行
;-----------下面是网页上给出的答案---------------
fen_zhi: ;分支处理程序
mov A, 25H ;(25H)=X
cjne A, #7, QQQ ;A 试减7
QQQ: jnc DY6 ;无借位(即大于6)转移
cjne A, #2, AAA ;A 试减2
AAA: jc XY2 ;有借位(即小于2)转移
;------------------------------------------------
; 2<=X<=6: Y=3X-5
add A, 25H ;加上X
add A, 25H ;再加X, (A)=3X, 6<=3X<=18
clr C
subb A, #5 ;6<=3X<=18 -5不会有借位
mov 30H, A ;Y = 3X-5
mov 31H, #0
sjmp _END
;------------------------------------------------
DY6:
mov B, 25H ;X
mul AB ;乘
mov 30H, A ;Y = X*X
mov 31H, B
sjmp _END
;------------------------------------------------
XY2:
add A, 25H ;2X, =0, 或2
add A, #1 ;2X+1 =1, 或3
mov 30H, A ;Y = 2X+1
mov 31H, #0
;------------------------------------------------
_END:
ret ;sjmp $
END
=================================================