鱼C论坛

 找回密码
 立即注册
查看: 3096|回复: 6

关于jmp指令对应的机器码求教前辈

[复制链接]
发表于 2013-2-19 10:47:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Auckland 于 2013-2-19 10:49 编辑

assume cs:code
data segment
                db 0,0,0
data ends

code segment
        start:mov ax,data
                                mov ds,ax
                                mov bx,0
                                jmp word ptr [bx+1]
                                
code ends

end        start

在debug中编译
2013-02-19_104034.jpg
请问为jmp word ptr [bx+1]对应的机器码FF6701中的6701该怎么理解,请熟悉汇编的朋友解释下谢谢!!

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-2-19 14:55:04 | 显示全部楼层
我特意把BX+1这个地址中的值改了改,机器码还是没变,应该和那个无关
那么67应该是BX的意思吧,01应该就是后面的+01了
FF67 01       JMP [BX+1]
FF67 02       JMP [BX+2]

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-2-21 09:42:53 | 显示全部楼层

我查了下资料,发现那个67在opcode中的意思是表示要操作的数据是16位。还是谢谢你!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-2-21 10:08:36 | 显示全部楼层
Auckland 发表于 2013-2-21 09:42
我查了下资料,发现那个67在opcode中的意思是表示要操作的数据是16位。还是谢谢你!!!

哦,感谢你告诉我哈。
补充知识
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-2-21 10:12:39 | 显示全部楼层
Auckland 发表于 2013-2-21 09:42
我查了下资料,发现那个67在opcode中的意思是表示要操作的数据是16位。还是谢谢你!!!

不过我有一个疑问,为什么
1.jpg
67变成66了,应该还有其他意思吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-2-24 08:29:15 | 显示全部楼层
jmp word ptr [bx+1]对应的机器码FF6701中的6701该怎么理解,

FF 67 01 后面的67 01   高地址在后 低地址在前 翻过来看看0167 就是你要跳到目的地址的偏移或位移,至于0167怎么来的 应该看下"DS:BX+1"处的值是多少  从你的原码里看的话 应该是你的数据段出错了 就是你定义的数据段是空的 可DEBUG加载时你的数据段内有数据,还有那个0167应该为段内近转移 所以0167表示后移167个字的位移 段内近转移是16位位移   我说的也不一定对 你可以考虚 debug单步跟踪下看看  先跟踪到“mov bx,0”处 在debug中用查看内存命令D 看一下你定义的数据段是否为空 从你源码来看 你的目的是实现代码跳到第一行 形成一个死循环 但实际你却向后跳出去了 注意错误就出现在你的数据段是否为空上面  不知道到对不对  你一步步跟踪下看看


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 22:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表