鱼C论坛

 找回密码
 立即注册
查看: 2993|回复: 3

一个小问题 一个例子的答案 我怎么感觉溢出了啊 麻烦大神看下

[复制链接]
发表于 2016-8-30 09:44:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
mov al,98h
add al,al

课本例子 答案是al=30h cf=1

但是 98h 的二进制是 1001 1000b 也就是-104的补码

*******************************************************************************************
这里有点小疑问麻烦大神解决下 应为最高位是1 计算机应该是按照有符号数运算的对么???
********************************************************************************************
然后 add al,al   也就是 -104-104 =-208  超出al范围
我这么理解对么 ? 麻烦高手指点下


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-8-30 21:45:17 | 显示全部楼层
98H+98H=130H AL寄存器只能保存后2位 所以 AL=30 ,在计算的时候产生进位 cF被CPU放置为1,假如入、2个数相加 没有产生进位 CF会被CPU放置为0,就这么简单
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-31 08:46:52 | 显示全部楼层
38299676 发表于 2016-8-30 21:45
98H+98H=130H AL寄存器只能保存后2位 所以 AL=30 ,在计算的时候产生进位 cF被CPU放置为1,假如入、2个数相 ...

那就有问题了 如果你吧130H 转换下 则超出了AL的最大范围  溢出不就是按照这个计算的么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-31 19:37:22 | 显示全部楼层
w270061449 发表于 2016-8-31 08:46
那就有问题了 如果你吧130H 转换下 则超出了AL的最大范围  溢出不就是按照这个计算的么

你是 add al,al 好不 这是一个8位的数的的加减法,相当于在8位机器上的计算。
要想直接得到正确结果 ADD ah,ah  得到的值就是130H,也许我讲的不很明白 大致意思就这样。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-26 00:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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