汇编网首页登录博客注册
12sunfeng34的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
友情链接

[2010-08-16 15:27] 检测点2.3

修改了4次。第一次是将“mov ax,bx”读取到指令缓冲器后,IP+3;第二次是将“sub ax,ax”读取到指令缓冲器后,IP+3;第三次是讲“jmp ax”读取到指令缓冲器后,IP+2;第四次是执行“jmp ax”,IP中的值为为ax中数据
答案来源:beichenyibei的学习博客
过程明白啦 但是每次读取指令后IP加多少不明白是怎么确定的?
评论次数(3)  |  浏览次数(442)  |  类型(汇编作业) |  收藏此文  | 

[  mess   发表于  2010-08-16 17:24  ]

至于每次ip加多少,这个由cpu处理,如果有兴趣可以去看看组成原理,汇编指令的组成。

[  beichenyibei   发表于  2010-08-17 10:05  ]

您好!我之前写错了,像“指令 寄存器,寄存器”这种形势的指令,每次读取后ip+2不是+3,。
像“指令 ax,数据”这种才是ip+3。当然,如果是al,ah那种,ip也是+2。
ip加几是由机器码的长度决定的。你可以看一下课本43页,会发现那个机器码第一个字节对应的是指令(mov,add,...)。
后面的字节对应的是需要进行操作的数据:
如若是要把数据存储到ax,bx这样的2个字节的寄存器,自然又需要2个字节。所以ip在读取这样的指令后会+3。
如果是由寄存器到寄存器的操作,寄存器所对应的机器码只要一个字节长就够了,所以只再需要一个字节。故ip只要+2。
像那种存到al,bl之类的寄存器中时,也是只要一个字节就够。ip+2.
以上。

[  12sunfeng34   发表于  2010-08-19 18:52  ]

谢谢

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码