+ -
当前位置:首页 → 问答吧 → 求教关于sub

求教关于sub

时间:2011-03-06

来源:互联网

刚学汇编,搞不懂了什么有符号没符号的。而且减了以后又涉及绝对值什么的,烦哪。
就请高手给我讲讲sub吧,请具体点。谢过

作者: Gaoshanandtmmu   发布时间: 2011-03-06

没什么可讲的吧,
sub ax,bx ;ax减去bx,结果放到ax里,如有借位,那么进位标志(CF)置1,如果做带进位的剑法操作就需要用sbb,例如:sbb ax,bx ;ax减去bx再减去CF,结果置于ax里。

作者: masmaster   发布时间: 2011-03-06

你要先理解有符号数和无符号数的表示(即同一个二进制数即可看做无符号的,又可看做有符号的)。

CPU做sub运算的过程,你可这样来理解:

CPU只把2个操作数当二进制数进行,而不去区分(实际上它也无法区分,只有程序设计人员才知)有无符号。

如果能减开,就先得到差;如果减不开,则向虚拟高位借位(变成n+1位二进制数减n位二进制数,即1xx...xB - xx...x),得到差,同时用进(借)位标志CF记录下产生过借位。

最后根据运算结果设置其他标志位(溢出、奇偶、符号等)。

程序设计者使用sub指令后,要根据自己的数据有无符号来判断CF或OF:

若你的数是无符号的,则CF=0时,结果可直接使用;CF=1不能直接用。无符号数运算不用去管OF.

若你的数是有符号的,则OF=0时,结果正确;OF=1结果不正确。有符号数运算不用去管CF.

作者: shzhfu   发布时间: 2011-03-06