欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

关于jcxz的一个有关问题

更新时间: 2014-01-05 03:17:30 责任编辑: Author_N1

 

关于jcxz的一个问题
下面程序是实现在内存2000h段中查找第一个值为0的字节,最后将它偏移地址存储在bx中
assume cs:code
code segment
start: mov ax,2000H
mov ds,ax
mov bx,0
s: mov ch,0
mov cl,[bx]
jcxz ok
inc bx
jmp short s
ok: mov dx,bx
mov ax,4c00h
int 21h
code ends
end start

我不明白为什么最后ip的值会在bx中
--参考方法--
不会是IP的值吧
应该只能找到 mov cl,[bx] 这条指令的IP值吧
--参考方法--
mov ds,ax   ;指数据段的段地址

mov bx,0
inc bx      ;数据段的偏移修改

ok: mov dx,bx ;dx=bx

我不明白为什么最后ip的值会在bx中?如2#所说,cs与ds相同,都是2000h,而且更巧合的是,机器码正好是0

--参考方法--
dx跟ip根本不在同一段好么,就算你的编译器把cs变成2000h,那代表的也不是一个意思,一个的数据段,一个是代码段。。。 cs:ip != ds:dx 虽然指向的地址一样
--参考方法--
我不明白为什么最后ip的值会在bx中
...谁和你说ip值在bx中的?题目说的很清楚“内存2000h段中查找第一个值为0的字节,最后将它偏移地址。。。”
如果你是王爽的书,我告诉你,你打错了,题目说的应该是存放在dx中,而不是你说的bx中。
楼主看来还是晕头转向,先把思路清一下再学下去。其实这里就是bx值作了两个使用:[bx]存进cx作jcxz的判断条件,bx存放当前偏移地址(相对于2000H)。
我最近每天都在学,可以来我博客交流下。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:17:30
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/20461/
本文WWW.DOC100.NET DOC100.NET版权所有。