单片机 两个有符号数分别在50H和51H里面,比较他们的大小,最后把大的放入60H单元。

请加上文字说明,因为是初学好多地方还不太清楚。(是有符号数哦!)

;比较有符号数的大小,可以先进行一次相减,
;再根据差的正负、是否溢出,来区分大小。
;程序如下:
;
ORG 0000H
MOV 50H, #-28 ;先随便存入两个数字.
MOV 51H, #108
;========================================
BIJIAO: ;开始比较.
MOV A, 50H
CLR C
SUBB A, 51H ;(50H)-(51H)
JZ DA_50H ;差为0转移.
JB ACC.7, FU ;负数转移.
JB OV, DA_51H ;有溢出转移.
SJMP DA_50H ;正数且无溢出,转到(50H)大.
;----------------------------------------
FU: JB OV, DA_50H ;负数且有溢出,转到(50H)大.
;----------------------------------------
DA_51H: MOV 60H, 51H ;(51H)大的处理程序.
SJMP BJ_END ;转到结束.
;----------------------------------------
DA_50H: MOV 60H, 50H ;(50H)大的处理程序.
;----------------------------------------
BJ_END: SJMP $ ;比较程序结束.
;========================================
END
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-20
COMPAR:
CLR C ;进位标志清零
MOV A,50H ;50H值送A
CJNE A,51H,COMP ;比较A与51H值大小
COMP: JC COMP1 ;如果50H<51H转COMP1
JB ACC.7,COMP01 ;判50H的正负
MOV A,51H ;50H为正
JB ACC.7,COMP02 ;判51H正负
MOV 60H,50H ;50H,51H均为正,50H大送60H
GOTO OKS ;
COMP01: MOV 60H,51H ;50H为负,但50H>51H,所以51H无论正负均大
GOTO OKS
COMP02:MOV 60H,51H ;50H,51H均负,值小为大
GOTO OKS
COMP1: JB ACC.7,COMP10 ;判50H正负
MOV A,51H ;50H为正
JB ACC.7,COMP11 ;判51H正负
MOV 60H,51H ;均正,51H大
GOTO OKS
COMP10:MOV 60H,50H ;50H负,值小为大
GOTO OKS
COMP11:MOV 60H,50H ;均负,值下为大
OKS:RET
第2个回答  2011-10-20
S01
MOV A, 50H ; A=50H
CJNE A, 51H, S02 ; A与51H比较
; 相等
RET
S02:
JC S03 ; 50H<51H 转移
MOV 60H,A ; 50H大
RET
S03
; 50H小
RET
相似回答