MCS-51单片机,编程序,计算分段函数的函数值

MCS-51单片机,简单的一个汇编语言程序,计算分段函数的函数值。
已知25H单元中有一个变量X,要求编制程序,按下列函数关系式计算变量Y的值,并将Y的值送到31H、30H单元中。
     X*X    X>6
Y = 3X-5   2<=X<=6
     2X+1   X<2
悬赏分:20 - 解决时间:2010-7-31 15:22
=================================================
最佳答案:
说明:为了便于网友进行功能测试,所以在下列程序中,比网页上的答案增加了一个测试用的程序段和一些注释。

      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
=================================================
回答者:做而论道 - 十三级   2010-7-6 13:18
原题网址:http://zhidao.baidu.com/question/164990837.html
=================================================

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值