h2995527 发表于 2011-3-7 18:25:36

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的值是不是必须 为 字单元数据?能够为 字节单元数据?】

ckzmo 发表于 2011-3-7 20:03:07

这种问题自己DEBUG就能解决何必问呢

china0008 发表于 2011-3-7 20:38:17

1、指向后 jmp把ip的值修改为以 DS:0开始的字单元的值。
2、你在源码这样写一下,编译,看看就知道了。
3、ip是16位寄存器。必须为字单元。

a89361461 发表于 2011-3-7 20:53:28

本帖最后由 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位寄存器。

呵呵,希望能帮到你。我也刚学汇编,有什么问题大家一起讨论。

zlq1252 发表于 2011-3-7 22:32:21

刚开始学汇编,哎,学的我纠结啊。。。感觉比C难多了啊

zcmxhl 发表于 2011-3-8 10:32:53

感觉确实汇编比高级语言的纠结.......

h2995527 发表于 2011-3-8 22:10:42

;P懂了。谢谢各位。大姐大妈 大叔大爷们!!!

BinGu 发表于 2011-3-20 08:11:59

jmpword byte ds:的表达是错误的,你想说的可能是jmp byte ptr ds:吧,

但是不能用byte来表示IP,因为IP=XXXXh,也就是字的形式,是16位的,也就是2B,所以是word

其实这个不难理解,jmp跳转到的是 ds:这个地址开始的一个字范围内的偏移量,

也就是ip=word ptr ds:,这样能明白么!!!
页: [1]
查看完整版本: JMP指令。疑问!!!