ip为什么等于0123h
本帖最后由 loop 于 2011-5-29 23:28 编辑mov sp,10h
mov ax,0123h
mov ds:,ax
call word ptr ds:执行后ip为什么等于0123h 回复 codefish123 的帖子
代码:
mov sp,10h ;这里是定义栈顶吧?
mov ax,0123h ;把0123h送入ax中
mov ds:,ax ;把ax=0123h送入ds数据段中
call word ptr ds: ;问题的关键就是这里,因为call word ptr ds: 指令是输入段内近转移,而call指令是是把ds数据段的第一个字单元中的内容送给ip(因为ds数据段的第一个字单元是0~1,而刚好ax送入到ds数据段的第一个字单元),所以他就会用ds:0号的字单元中的内容改写ip
嗯 还是建议去把第十章仔细看看的好,毕竟我说的不是很清楚! 简单的给你解释一下,call word ptr "内存单元",这种格式的call指令,执行后本质上是将IP = "内存单元" ,和call reg(寄存器)这种格式的call一样,所以先前放在DS:中的ax内容,被赋给了IP。
页:
[1]