鱼C论坛

 找回密码
 立即注册
查看: 2552|回复: 5

[争议讨论] 汇编语言2.3不解深入讨论

[复制链接]
发表于 2012-3-27 10:31:14 | 显示全部楼层 |阅读模式

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

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

x

                               
登录/注册后可看大图

我想知道sub这个指令是什么意思,这个视频里面没有教到....
还有ip的值是怎么修改的,这个问题相信不少初学者也不解,所以我们来讨论讨论,哪位大哥大姐能详细解说一下!谢谢了



                               
登录/注册后可看大图
该贴已经同步到 谢青源的微博
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-27 13:13:10 | 显示全部楼层

回帖奖励 +1 鱼币

sub a,b就是指把a减b的结果放到a中。
在每次执行一条指令前ip会先减去这条指令的长度。
不知楼主有什么问题?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-27 14:04:22 | 显示全部楼层
本帖最后由 莫名其妙 于 2012-3-27 14:17 编辑

每一条指令都是由CS:IP 指向的 每执行一次指令 对应的ip的值就会发生改变   修改了ip的值相当于修改了CS:ip指向代码的位置
例如下面
1000:0000 mov ax,3   这里ip =0执行完后转到下一条指令执行是ip发生了改变
1000:0003 mov ax,4   ip=3 在转到下一条指令
1000:0006 mov ax,7   ip=6 在执行下一条指令
1000:0009 mov ax,10   ip=9 ...
1000:000c mov ax,0   ip=c  ...
1000:000f jmp ax       ip=f   因为这里执行 jmp 寄存器 所以执行这条语句的ip变更以后    ip多增加一次改变 ip由000f 变为0000
对应你学的jmp 指令看看 jmp 寄存器的意思是  跳转到 寄存器值所指的位置也就是 ip=0的位置
又跳回第一行执行.  
这道题并不要求你弄明白代码的意思只是告诉你每执行一行代码ip就会发生改变 遇到jmp 寄存器时ip 多改变一次 变成寄存器的值而且程序会转到cs:(改变以后的ip)  处继续执行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-3-27 22:19:18 | 显示全部楼层
晨枫 发表于 2012-3-27 13:13
sub a,b就是指把a减b的结果放到a中。
在每次执行一条指令前ip会先减去这条指令的长度。
不知楼主有什么问 ...

不解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-3-27 22:19:52 | 显示全部楼层
莫名其妙 发表于 2012-3-27 14:04
每一条指令都是由CS:IP 指向的 每执行一次指令 对应的ip的值就会发生改变   修改了ip的值相当于修改了CS:ip ...

谢谢,你说的很详细
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-28 00:33:14 | 显示全部楼层
看懂了,有什么不懂的,就是说jmp等于直接修改了ip的值,而没执行一句代码就改变一次ip值,所以是4次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-10-8 10:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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