汇编问题:双字有符号数如何比较大小。

发布网友 发布时间:2022-04-20 03:07

我来回答

2个回答

热心网友 时间:2023-09-09 08:15

;比较有符号数的大小,可以先进行一次相减,
;再根据差的正负、是否溢出,来区分大小。
;程序如下:
;

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

热心网友 时间:2023-09-09 08:15

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
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com