修改了4次。第一次是将“mov ax,bx”读取到指令缓冲器后,IP+3;第二次是将“sub ax,ax”读取到指令缓冲器后,IP+3;第三次是讲“jmp ax”读取到指令缓冲器后,IP+2;第四次是执行“jmp ax”,IP中的值为为ax中数据
答案来源:beichenyibei的学习博客
过程明白啦 但是每次读取指令后IP加多少不明白是怎么确定的?
- [12sunfeng34] 哦 对 08/24 19:34
- [12sunfeng34] 对 (2)中的sp应该是0 谢谢 08/24 07:14
- [mess] 第一题注意段地址是1,即偏移地址为0时(取偏移地址最小值),物理地址=1*10h+0=10H 08/23 15:20
- [mess] sp都设置等于16,有问题。 08/23 15:19
- [mess] 把第一个答案转换成十六进制的。 学完第二章的实验,会了debug,可以用a命令写入指令,然后t 08/23 15:18
- [mywiil] 注意借鉴后的吸收哟。 08/21 03:29
- [12sunfeng34] 对应该是 我算错了 08/19 18:54
- [12sunfeng34] 谢谢 08/19 18:52
- [whfeiya] 这个好像不对吧,应该倒数第四个是D882,D888,D810 08/18 12:49
- [beichenyibei] 您好!我之前写错了,像“指令 寄存器,寄存器”这种形势的指令,每次读取后ip+2不是+3,。 像“ 08/17 10:05
[ 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 ]
谢谢