谢青源 发表于 2012-3-27 10:31:14

汇编语言2.3不解深入讨论

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


http://bbs.fishc.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 谢青源的微博

晨枫 发表于 2012-3-27 13:13:10

sub a,b就是指把a减b的结果放到a中。
在每次执行一条指令前ip会先减去这条指令的长度。
不知楼主有什么问题?

莫名其妙 发表于 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)处继续执行

谢青源 发表于 2012-3-27 22:19:18

晨枫 发表于 2012-3-27 13:13 static/image/common/back.gif
sub a,b就是指把a减b的结果放到a中。
在每次执行一条指令前ip会先减去这条指令的长度。
不知楼主有什么问 ...

不解{:5_100:}

谢青源 发表于 2012-3-27 22:19:52

莫名其妙 发表于 2012-3-27 14:04 static/image/common/back.gif
每一条指令都是由CS:IP 指向的 每执行一次指令 对应的ip的值就会发生改变   修改了ip的值相当于修改了CS:ip ...

谢谢,你说的很详细{:5_92:}

我还是不懂 发表于 2012-3-28 00:33:14

看懂了,有什么不懂的,就是说jmp等于直接修改了ip的值,而没执行一句代码就改变一次ip值,所以是4次
页: [1]
查看完整版本: 汇编语言2.3不解深入讨论