. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  p173 检测点9.3 做法  [待解决] 回复[ 5次 ]   点击[ 709次 ]  
hino
[帖 主]   [ 发表时间:2008-08-27 20:18 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:3
注册日期:2008-06-22 20:23
assume cs:code

code segment
start:  mov ax,2000h
        mov ds,ax
        mov bx,0
      s:mov cl,[bx]
        mov ch,0
        inc cx
        inc bx
        loop s
     ok:dec bx
        mov dx,bx
        mov ax,4c00h
        int 21h
code ends
end start
mouse
[第1楼]   [ 回复时间:2008-10-15 17:44 ]   [引用]   [回复]   [ top ] 
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34
正确
xp55699312
[第2楼]   [ 回复时间:2009-09-02 00:49 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:2
注册日期:2009-08-15 01:25
assume cs:code

我是新手,这里没有搞明白.
code segment
start:  mov ax,2000h
        mov ds,ax
        mov bx,0
      s:mov cl,[bx]
        mov ch,0
        inc cx    ;这里不会成死循环吗?
        inc bx
        loop s
     ok:dec bx
        mov dx,bx
        mov ax,4c00h
        int 21h
code ends
end start
------------------
回复:loop s指令是CX=0时,就执行下面的.但是, s:mov cl,[bx] mov ch,0这两条指令将CX=0了,INC CX那不是让程序循环一次.
crg007
[第3楼]   [ 回复时间:2009-09-13 14:35 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:4
注册日期:2009-07-29 23:59
当cpu 执行LOOP S时,会自动执行两个步骤:
1、执行LOOP S时,不管CX=?,先将CX-1;
2、若CX-1=0,执行下一条语句,CX-1≠0则转向执行标号处的指令!

如果当cpu 执行LOOP S前CX=0的话,那么cpu 执行LOOP S时就把CX-1,那么CX=0-1=FFFE,那么程序又开始循环了。。。!
eaookii
[第4楼]   [ 回复时间:2013-04-21 14:50 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-03-16 12:52
3楼太谢谢你了
asm-stone
[第5楼]   [ 回复时间:2013-05-21 00:43 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-05-17 00:32
回复:[第3楼]
------------------
啊哈,原来是这样啊,我也以为会是死循环呢!
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved