MCS-51單片機,編程序,計算分段函數(shù)的函數(shù)值
MCS-51單片機,簡單的一個匯編語言程序,計算分段函數(shù)的函數(shù)值。
已知25H單元中有一個變量X,要求編制程序,按下列函數(shù)關(guān)系式計算變量Y的值,并將Y的值送到31H、30H單元中。
X*X X>6
Y = 3X-5 2<=X<=6
2X+1 X<2
=================================================
最佳答案:
說明:為了便于網(wǎng)友進(jìn)行功能測試,所以在下列程序中,比網(wǎng)頁上的答案增加了一個測試用的程序段和一些注釋。
org 0000H
mov 25H, #7 ;這里的數(shù)字,可以寫 0~255,進(jìn)行全面調(diào)試
call fen_zhi ;調(diào)用子程序,按照要求進(jìn)行數(shù)據(jù)處理
nop
nop ;可以在此處觀察31H 30H中的內(nèi)容
nop
sjmp $ ;停止運行
;-----------下面是網(wǎng)頁上給出的答案---------------
fen_zhi: ;分支處理程序
mov A, 25H ;(25H)=X
cjne A, #7, QQQ ;A 試減7
QQQ: jnc DY6 ;無借位(即大于6)轉(zhuǎn)移
cjne A, #2, AAA ;A 試減2
AAA: jc XY2 ;有借位(即小于2)轉(zhuǎn)移
;------------------------------------------------
; 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
=================================================