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

在高级语言里,死循环是存在的,汇编也不例外。
当其实不是真正的死循环。

比如这个程序:
assume cs:code

        code segment

          start:mov ax,0
                
                mov cx,-1
              s:inc ax
                loop s

                mov ax,4c00h
                int 21h
                
        code ends

end start

用ax计算循环的次数,最终结果是:

AX=FFFF  BX=0000  CX=0000  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=0B43  ES=0B43  SS=0B53  CS=0B53  IP=0009   NV UP EI NG NZ NA PE NC
0B53:0009 B8004C        MOV     AX,4C00

说明最终是跳出了,因为溢出后它又恢复正常了。

再说明一点,我并没有说王爽老师的书在这一章有什么错误,我只是希望王爽老师补充点内容而已。
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved