. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
主题 : :  关于转移指令loop  [已解决] 回复[ 7次 ]   点击[ 312次 ]  
realbit
[帖 主] [ 发表时间:2011-12-02 15:59 ] 
荣誉值:1
信誉值:4
注册日期:2011-11-28 20:29
大家想过没有,如果cx是负数,是不是会陷入死循环?
王爽老师的书没有深入的讲解数学运算的东西,在看9.8节 检测点9.2的时候我想了这个问题。
其实应该不会陷入死循环,因为溢出的话又会回到起点。
希望王爽老师可以添加相关内容
realbit
[第5楼] [ 回复时间:2011-12-03 14:17 ] 
荣誉值:1
信誉值:4
注册日期:2011-11-28 20:29
回复:[第4楼]
------------------
我又仔细看了一下,实际上是溢出了。

cx的变化

-1 ---> -32768 循环次数: 32767次
-32768 ---> 32767 此处溢出,循环次数: 1次
32767 --->0 循环次数: 32767次
总共计循环次数:32767+1+32767=65535次

我们将ax看作无符号整数:65535=FFFFh

所以说,在这个程序中,溢出是存在的。

“说明最终是跳出了,因为溢出后它又恢复正常了。”这句话的后半句是说,溢出后,在cx为正整数的情况下,loop才是正常的。
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved