首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

关于jcxz的一个有关问题

2013-07-09 
关于jcxz的一个问题下面程序是实现在内存2000h段中查找第一个值为0的字节,最后将它偏移地址存储在bx中assu

关于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)。
我最近每天都在学,可以来我博客交流下。

热点排行