. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->外中断
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  这段代码帮忙解释解释  [待解决] 回复[ 2次 ]   点击[ 283次 ]  
rlfrlf
[帖 主]   [ 发表时间:2011-08-20 11:50 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-07-11 19:02
mov     dx,10h
        mov ax,0
s1:        sub ax,1
        sbb dx,0
        cmp ax,0
        jne s1
        cmp dx,0
        jne s1

代码含义看得懂,就是不明白他的,计算,帮忙解释一下,谢谢
tily
[第1楼]   [ 回复时间:2011-08-20 11:56 ]   [引用]   [回复]   [ top ] 
荣誉值:12
信誉值:1
注册日期:2011-06-04 00:01
代码含义看的懂 怎么会不懂他的计算呢  设置100000H次循环,高位放在DX中 地位放在AX中,每次减1,这里要考虑像DX借位,当高位和地位都为零时跳出循环
juende66
[第2楼]   [ 回复时间:2011-12-06 14:22 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-11-11 23:27
1.设置dx=0010  2.设置ax=0000
  
s1:进入循环
   sub ax,1   此时ax=FFFF                    CF=1
   sbb dx,0   此时dx=dx-0-CF,dx=0009        
   cmp ax,0   比较ax和0                  此时 ax=FFFF
   jne s1      如果ax不等于0 就调转到s1       意思是说ax每次减1直到把FFFF减到0才不会调转

   cmp dx,0    比较dx和0                  此时 dx=0009
   jne s1     如果dx不等于0 就调转到s1        意思是说dx每次减1直到把9减到0才不会调转

  max ax,4c00h
  int 19h

以上程序段    第一次执行sub ax,1 时 ax=0  所以有借位  CF=1 紧接着 sbb dx,0 (让sbb-cf)
只有在 ax=0的时候 才会有借位 cf 才会等于1  dx才会减1   dx每减一次1 就相当于 ax-FFFF 

总共要减10h 个 ax-1

FFFF次加上0-1的一次 就是10000次 

10h个  就是   10h*10000=100000h次
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved