..磊●﹖ 发表于 2011-12-1 03:47:24

小甲鱼老师进来看下!有点不理解你的答案了!

检测点2.3处。要求看出三条指令执行后CPU几次修改IP?最后IP的值=多少
命令如下:
mov ax,bx
sub ax,ax
jmp ax

我刚开始看题目的时候以为是三次。mov 1次,sub 1次(sub命令我记得应该还没学吧!哎不懂。)jmp 1次?如果按照老师说的是四次也可以理解!因为jmp 运行后IP被改了一次。当JPM的命令被CPU运行后IP再次被改、应该是我错了才对。 那为什么IP 不等于 AX!而是 = 0 ?难道和 SUB这个命令有关·请知道的大侠们解释下或者 小甲鱼老师您来看下吧!

h18755 发表于 2011-12-1 04:26:06

你咎结这么狠干嘛?DOS还有什么用 ? 学些命令为以后的W32做铺设! 王爽出的题目完全可以不理, 因为他的思路和我们的不同,他出题都用术语! 千万别听他的什么不通过检测点就不要往下学习! 你的问题我不想看,因为这DOS确实没多大用,晚安

h18755 发表于 2011-12-1 04:34:23

还是回答下吧! 几次修改IP? 你那三条指令只有一条是修改IP的, 也就是jmp ax . 也就是ax里的值是这条指令的ip 前面的sub是减法指令,比如 sub ax,bx =ax-bx=ax ...    jmp ax其实就是 跳 ax 这时ax里存的是地址.晚安

h18755 发表于 2011-12-1 04:52:08

3次,这王爽有病,刚细看了下这个问题!
一: mov ax,bx 此时IP假如等于X
二: sub ax,ax 此时程序执行这条指令比需从上一个地址偏移过来 这就有一次了!
三: jmp ax 此时同理,要想执行这条指令 ip又得变化,这次加上次的也就二次了!
四: jmp ax 这条指令光明正大地修改当前ip 此时ip=0 jmp ax就等于ip=0 总共三次, 看我说王爽有病吧?!!! 有的问题问的太贱了!

嗜血灵异狂 发表于 2011-12-1 06:30:29

本帖最后由 嗜血灵异狂 于 2011-12-1 06:36 编辑

很简单指令是要转化成机器码执行的    所以对应字节来说IP肯定是被每条指令修改过 至于为什么有三条执行代码  IP被修改了 四次   不要忘记一个程序结束后  程序都要进行返回或者初始化状态  所以就是4次修改IP  就跟一根绳子一样   你一刀砍下去变成了几根?   2刀下去变成几根?  推理一下就知道了     我们学习的不是变成的结构   而是一种编程的思维  也就是物理的逻辑思维  我以前也 很不懂为什么一堆代码数据可以呈现出这么多功能来  听小甲鱼的久了 才意识到原来他不是教我们编程的方法  目的是培养我们一种编程思维   让你知道一个程序 要实现什么功能就要懂得自己去思考   让自己的大脑如同CPU一样的思维

lelering 发表于 2011-12-1 09:05:50

嗯!{:5_102:}楼上的说得很对!

关键是感觉 发表于 2011-12-1 10:03:38

4次,你基础没打好。理解完了。这题太简单了。
难在JMP   CPU读取指令后,IP自动加上指令的长度,也就是说读取JMP的时候IP被修改3次,然后执行JMP,修改IP 也就是4次。可否懂

lelering 发表于 2011-12-1 10:29:20

说实话!我刚在做这题的时候也很纠结,不过,看了小甲鱼的答案之后就理解了!呵呵……{:5_109:}

kane080824 发表于 2011-12-1 18:30:51

http://bbs.fishc.com/data/attachment/album/201112/01/182605y9epyqqwbteqsmb7.jpg

..磊●﹖ 发表于 2011-12-1 18:59:25

各位大侠,修改了几次我在出问题的时候就已经分析了·我懂了答案的意思。
我的问题主要是SUB.命令和 最后IP=0 这个问题。因为你们学过了肯定知道。没学怎么去理解呢!

kane080824 发表于 2011-12-1 19:39:57

mov ax,bx; 把bx里的值给ax
sub ax,ax   ; 减法指令,就是ax-ax,然后把结果再给ax,即:ax-ax==0mov ax,0
jmp ax      ; jmp 0

..磊●﹖ 发表于 2011-12-2 00:32:27

谢谢各位大侠的指导··

我爱吃大蒜 发表于 2011-12-3 16:22:38

2楼 你大爷的 骂王爽就显示你很牛B吗
页: [1]
查看完整版本: 小甲鱼老师进来看下!有点不理解你的答案了!