搜索
bottom↓
回复: 3

sub 指令小问题,谁帮分析下,谢谢!

[复制链接]

出0入0汤圆

发表于 2009-4-28 07:54:42 | 显示全部楼层 |阅读模式

其中的的标志位C,“当无符号运算结果大于或等于零时,标志位置 1 ,否则清零”这个怎么理解?还有就是要是带符号运算时情况又是怎么样的?谁能举个例子吗?谢谢! (原文件名:未命名.jpg)

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2009-4-28 23:11:09 | 显示全部楼层
汇编语言中SUB减法指令对两个数的相减时不自动区分是有符号数还是无符号数,这点和C语言有点不同。
对于符号数相减,通过进位标志位OF(O)来判断,当两个符号相反的数相减,如果差的符号与减数符号相同时出现了溢出OF=1,即正数减负数得负数或者负数减正数得正数的情况。
对于无符号数相减(比较),通过进位(错位)标志位CF(C)来判断,当前操作数大于或等于后一个操作数时,没有出现错位CF清零,当前操作数小于后一个操作数时会出现错误CF置1.它说明无符号数小的减去大的是会出现错位(进位)的。
这仅是个人的理解。呵呵!

出0入0汤圆

发表于 2009-4-28 23:12:02 | 显示全部楼层
执行的操作:(DST)←(DST)-(SRC)

  这条指令的执行影响所有的标志位。

  例 假定有AX=9543H,BX=28A7H,那么执行指令:

  SUB AX,BX

  即是做如下的减法运算:

  1001010101000011 (AX)=9543H

  -) 0010100010100111 (BX)=28A7H

  0110110010011100 (AX)=6C9CH

  看作无符号数相减时,没有借位,因此CF=0,结果是对的;看作有符号数相减时,负数减正数应该得负数,但指令执行结果却是正的,结果错。结果产生溢出,则OF=1。这是因为AX-BX=-27325-10407=-37732,这个数已超出最小负数-32768。

  注意:在判定减法运算是否溢出时,若最高位有借位,即CF=1,则结果错;若两个相减的数在运算前符号位相反,但运算结果与减数的符号位相同,则OF=1,结果错,即结果产生溢出,否则OF=0。
/****这个是我从网上复制的***/http://www.soft6.com/tech/11/119370.html

出0入0汤圆

 楼主| 发表于 2009-4-29 12:50:48 | 显示全部楼层
谢谢
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 06:56

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表