我是单片机初学者,单片机教材上的问题~~~~

南气子水 2011-02-07 09:12:21
1 比较数的大小
入口条件:两个带符号数分别存在内部RAM30H和31H单元中,试比较它们的大小,将较大的数存入32H单元中
比较两个有符号数的大小时,可将两数相减后值的正负与溢出标志结合在一起判断。即:
X-Y为正,OV=0,X>Y
OV=1,X<Y
X-Y为负,OV=0 X<Y
OV=1,X>Y
程序如下:
ORG 0100H
MOV A,30H ;取初值
CLR C
SUBB A,31H ;X-Y
JZ DZ1 ;X=Y?
JB OV,EB1 ;X-Y>0,OV=1,X<Y
AJMP DZ1 ;X-Y>0,OV=0,X>Y
JB OV,DZ1 ;X-Y<0,OV=1,X>Y
EB1:MOV A,31H ;X<Y
AJMP JS0
DZ1:MOV A,30H ;X>Y
JS0:MOV 32H,A
END

我的想法:
比较有四种情况,例如:
X=-3,Y=4,X-Y=-7,OV=0
X=3,Y=4,X-Y=-1,OV=1
X=4,Y=-3,X-Y=7,OV=1
X=4,Y=3,X-Y=1,OV=0
从以上四例可以看出,完全根据累加器A的值的正负可以判断X,Y的大小了,为何教材上这么复杂的考虑?

...全文
85 点赞 收藏 5
写回复
5 条回复
lbing7 2011年02月10日
累加器只是纯的二进制,请问LZ怎么看出其正负来的?

:)
回复 点赞
Great_Bug 2011年02月08日
因为是8-BIT有符号数。你需要加深对二进制补码的理解。。。。。
回复 点赞
schlafenhamster 2011年02月08日
需要Z标记:
JZ DZ1 ;X=Y?
回复 点赞
南气子水 2011年02月08日
没人理我~~~?
回复 点赞
发动态
发帖子
单片机/工控
创建于2007-09-28

1.0w+

社区成员

2.8w+

社区内容

硬件/嵌入开发 单片机/工控
社区公告
暂无公告