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

南气子水 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的大小了,为何教材上这么复杂的考虑?

...全文
116 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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
  • 打赏
  • 举报
回复
没人理我~~~?

27,511

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧