. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->外中断
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  这几条指令看不懂了  [待解决] 回复[ 2次 ]   点击[ 455次 ]  
bsdwiki
[帖 主]   [ 发表时间:2008-12-13 16:23 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-10-21 00:57
15章中关于循环显示a-z的循环延迟代码

mov dx,10h
    mov ax,0
  s:
    sub ax,1
    sbb dx,0
    cmp ax,0
    jne s
    cmp dx,0
    jne s

哪位大侠给精讲一下这几条指令,非常感谢
deepblue
[第1楼]   [ 回复时间:2008-12-13 17:08 ]   [引用]   [回复]   [ top ] 
荣誉值:56
信誉值:0
注册日期:2008-01-19 14:51
文章内容:
mov dx,10h 
    mov ax,0 
  s:                         ;从这里到两个jne s 其实构成两重个有条件循环
    sub ax,1                 
    sbb dx,0                 ;sbb 带借位减,相当于dx = dx - 0 - CF ,产生借位CF是1,否则是0  这个指令作用很关键
    cmp ax,0                 ;条件1
    jne s                 ;跳转
    cmp dx,0                 ;条件2
    jne s                 ;


其实它就相当于 c语言的下列语句

int w = 16,n = 65536;

while(w>0){
        n -= 1;
        if(n==0){
                w -= 1;
                n = 65536;
                continue;
        }
 }
bsdwiki
[第2楼]   [ 回复时间:2008-12-13 17:52 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-10-21 00:57
to deepblue: 非常感谢,谢谢你的c代码,这样看起来思路清晰多了
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved