JMP指令。疑问!!!
例子:mov ax,0123h
mov ds:,ax
jmp word ptr ds:
执行后,(ip)=0123h
【问:执行后 是ip指向的 内存单元的值是0123h,还是ip的值为0123h?】
把最后一条 jmp word ptr ds:
改为 jmpword byte ds: 或 改为 jmp ds:
【问:是否能改为以上的?】
【问:cs:ip 中。ip的值是不是必须 为 字单元数据?能够为 字节单元数据?】 这种问题自己DEBUG就能解决何必问呢 1、指向后 jmp把ip的值修改为以 DS:0开始的字单元的值。
2、你在源码这样写一下,编译,看看就知道了。
3、ip是16位寄存器。必须为字单元。 本帖最后由 a89361461 于 2011-3-7 20:58 编辑
执行后 是ip指向的 内存单元的值是0123h,还是ip的值为0123h?
首先 IP 是存放将要执行指令的一个偏移地址,它不能单独指向某个内存单元。
执行后,是 IP 的值为0123H,这个值是字型内存单元word ptr DS:赋值给IP的。
改为 jmpword byte ds: 或 改为 jmp ds:?
可以改为jmp word ptr ds:(不要加byte)。 jmp ds:没有指明数据的长度。
cs:ip 中。ip的值是不是必须 为 字单元数据?能够为 字节单元数据?
IP 的值必须为字单元数据,因为IP 为16位寄存器。
呵呵,希望能帮到你。我也刚学汇编,有什么问题大家一起讨论。 刚开始学汇编,哎,学的我纠结啊。。。感觉比C难多了啊 感觉确实汇编比高级语言的纠结....... ;P懂了。谢谢各位。大姐大妈 大叔大爷们!!! jmpword byte ds:的表达是错误的,你想说的可能是jmp byte ptr ds:吧,
但是不能用byte来表示IP,因为IP=XXXXh,也就是字的形式,是16位的,也就是2B,所以是word
其实这个不难理解,jmp跳转到的是 ds:这个地址开始的一个字范围内的偏移量,
也就是ip=word ptr ds:,这样能明白么!!!
页:
[1]