鱼C论坛

 找回密码
 立即注册
查看: 5146|回复: 2

为什么这里填写inc cx啊

[复制链接]
发表于 2011-5-22 23:27:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 loop 于 2011-5-29 23:30 编辑

补全程序,利用loop指令,实现在内存2000H段中查找第一个值为0的byte,找到后,将它的偏移地址存储在dx中。

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 cx
                inc bx
        loop s
        
        ok:
                dec bx
                mov dx,bx
                mov ax,4c00h
                int 21h
code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-22 23:52:18 | 显示全部楼层
本帖最后由 陌路狂奔 于 2011-5-23 00:03 编辑

当前面索引到0时,CX是=0的而LOOP循环前,CX=CX-1,如果结果为0则退出循环执行下面的语句。CX不自增1的话,0-1会等于FFFF
我觉得换成JCXZ OK也是可行的

评分

参与人数 1荣誉 +1 收起 理由
loop + 1 欢迎讨论交流,鱼C有你更精彩~

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-23 00:35:47 | 显示全部楼层
把数据段的数据依次按字节读出,并把值传给CL
读到值为0的数据,这时CX就为0,说明找到了
这时候应该停止循环,只有当CX为1时,这次循环才会停止,所以要INC CX
INC CL的效果是一样的
但楼上所说的JCXZ OK不对,因为把值给DX时,BX有减1的操作,所以,不能在那儿跳走
要把INC BX的操作走完后才能转向OK,否则最后储存的地址会比实际为0的地址少1

评分

参与人数 1荣誉 +1 收起 理由
loop + 1 欢迎讨论交流,鱼C有你更精彩~

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-28 17:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表