MOV AX,8000H MOV BX,7FFFH CMP AX,BX JO LOP MOV DX,0 JMP DONE LOP: MOVDX,-1 DONE: INT3 DX=FFFFH 为什

MOVAX,8000HMOVBX,7FFFHCMPAX,BXJOLOPMOVDX,0JMPDONELOP:MOVDX,-1DONE:INT3DX=FFFFH为什麽DX=F... MOV AX,8000HMOV BX,7FFFHCMP AX,BX JO LOPMOV DX,0JMP DONELOP: MOVDX,-1DONE: INT3 DX=FFFFH 为什麽DX=FFFFH 展开
 我来答
cao199338
2012-09-06 · TA获得超过737个赞
知道小有建树答主
回答量:497
采纳率:100%
帮助的人:500万
展开全部

  MOV     AX,8000H

  MOV     BX,7FFFH

  CMP      AX,BX

  JO         LOP

  MOV      DX,0

  JMP      DONE

LOP:     

   MOV DX,-1

DONE:

     INT3

JO的意思是如果OF=1跳转。

CMP AX,BX   执行后OF=1

所以继续执行 JMP LOP

这时DX=-1

int3

-1=FFFFH

那是补码,计算机不会显示负号。所以要转化。绝对值的每一位转换就是取反加1。

-1      =0000 0000 0000 0001

FFFF=1111 1111 1111 1111

先给-1各位取反

         =1111 1111 1111 1110

然后加1

         =1111 1111 1111 1111

这时补码的定义。

胡杨胖子
2012-09-06 · TA获得超过362个赞
知道小有建树答主
回答量:186
采纳率:0%
帮助的人:184万
展开全部
DX的数据是16位,而-1的16位补码就是FFFFH
追问
为什麽不是-1的16位8001H呢?谢谢
追答
为了便于只用加法电路来完成减法运算故在PC系统负数采用补码来表示。
比如1-1,用补码表示负数的话,CPU电路中只需加法器1+FFFF=0(去掉超出的进位),如果不用补码表示,则还需设计减法器来完成。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式