当前位置: 代码迷 >> 汇编语言 >> 汇编初级有关问题
  详细解决方案

汇编初级有关问题

热度:5291   发布时间:2013-02-26 00:00:00.0
汇编初级问题
问sub AL,09H指令,若(AL)=08H,执行命令后AL=?,标志位CF=? 
OF=?,

------解决方案--------------------------------------------------------
如果是无符号数,则不够减有借位cf=1,并且减出来的是负数有益处0f=1
如果是有符号数,则还是不够减借位cf=1,但是两个正数减出来是-1在有符号的控制范围内所以of=0
------解决方案--------------------------------------------------------
AL=0ffh,CF=1,OF=0
对于无符号数,CF表示溢出,OF是没意义的;
对于有符号数,OF表示溢出,CF是没意义的;
很明显08h-09h=-1,-1(有符号数)在计算机中的表示是用补码来表示的.即AL=0ffh,
如果是无符号数,不够减有借位故CF=1,有意义
如果是有符号数,结果是-1,在-128-127的范围内,是有意义的,并没有溢出。故OF=0
 
你可以调试一下,OF不可能有两个值的,并且机器不会自己区分是有符号数,还是无符号数。是靠程序员,还有那些标志位来决定的。
 
给我分啦,我好穷!
------解决方案--------------------------------------------------------
为什么回答这么干脆哪?

背这些东西,没什么实际意义,出发楼主应付的是大学考试,哪我无语.
如果lz是想解决问题,肯定是在反汇编工具中跟踪,寄存器里面的内容一看便知.
再者说.有谁会真正关心寄存器的具体内容哪?
大概关心的更多的是后面的jg,ge等指令.
这些指令里面有很清楚的逻辑关系了,何必背诵这些死东西哪,有那个时间,还不如去打局魔兽哪!
------解决方案--------------------------------------------------------
[al]=11111111B,cf=1,of=0,可以参考一下sub指令中OF,CF的设置说明。
sub指令的无符号数CF设置,有借位cf=1,没有借位则cf=0;有符号运算时,只有在被减数与减数异号,并且结果与减数同号时of=1,其他时候均为of=0.
够清楚了吗?
------解决方案--------------------------------------------------------
如果是无符号数,则不够减有借位cf=1,并且减出来的是负数有益处0f=1
如果是有符号数,则还是不够减借位cf=1,但是两个正数减出来是-1在有符号的控制范围内所以of=0 
 
  相关解决方案