. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(CPU工作原理)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  检测点2.3有点不明白?请教?  [待解决] 回复[ 10次 ]   点击[ 613次 ]  
hot623
[帖 主]   [ 发表时间:2010-05-31 16:44 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-12-07 20:03
mov ax,bx这里传送完自动修改一次ip

sub ax,ax这里传送完自动修改一次ip

jmp ax这里可不可以这样理解:jmp ax相当于mov ip,ax这里传送完指令ip自动修改一次;然后传送完了ip=ax-ax=0这里ip值又被修改一次。

答案一共是4次修改ip。我都被搞晕了。这样理解对吗?
hot623
[第1楼]   [ 回复时间:2010-05-31 18:07 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-12-07 20:03
总结的说cpu执行完jmp ax指令修改一次ip,当ip值变为零后又被修改了,这里是2次
lin1712
[第2楼]   [ 回复时间:2010-07-12 16:08 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2010-06-01 10:03
问题2.3描述的很清楚,执行完jmp ax IP就修改一次,然后才将IP的值修改为ax。
可以这样理解,只要执行一次代码,IP就会自动移到下一位置,然后才jmp ax相当于人为额外强制转移。
static
[第3楼]   [ 回复时间:2010-10-20 12:41 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-10-06 11:12
你看那个很多的那个图:指令读写过程的那个
内存通过数据总线将数据传送入cpu,输入输出控制电路将指令送入指令缓冲器,此时ip改变  注意:然后执行指令
也就是说读完jmp ax 后改变ip 然后执行jmp(作用改变ip)
loveyellow99
[第4楼]   [ 回复时间:2010-10-21 17:11 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-10-20 11:13
这个真不懂。不明白为什么是四次。
下面的3条指令执行后,cpu几次修改了ip?都是在什么时候?最后ip中的值是多少? 

mov  ax ,bx            这里是一次,只要运行一次就会自动的到下一位的 IP
sub   ax ,ax            这里是一,理由同上
jum ax                   这里等同于 mov ip 也是一次。

3次修改。
最后IP是什么值不知道。
如有人知道,求解解惑,谢谢。
515332695
[第5楼]   [ 回复时间:2010-10-21 20:51 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-06-01 22:23
4次。IP的修改是在CPU读取指令之后。你把CPU执行指令分成两个部分看,即从内存中读取和执行。
设初始IP=0,读取指令mov ax,bx
515332695
[第6楼]   [ 回复时间:2010-10-21 20:58 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-06-01 22:23
额  没弄完就发了  
设初始IP=0,读取指令mov ax,bx  IP=IP+3=3 第一次    执行指令mov ax,bx    
             读取指令sub ax,ax  IP=IP+3=6 第二次    执行指令sub ax,ax             
             读取指令jmp ax     IP=IP+2=8 第三次    执行指令jmp ax    IP=ax   第四次
loveyellow99
[第7楼]   [ 回复时间:2010-10-21 23:25 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-10-20 11:13
恩,谢谢楼上的。明白为何4次了。jum 本身就意味着 2次。


还有一点请教不明白。
mov ax,bx 为什么是 ip=ip+3,mov算 1,ax和bx 就一定是2吗?
loveyellow99
[第8楼]   [ 回复时间:2010-10-21 23:25 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-10-20 11:13
还有一点请教不明白。
mov ax,bx 为什么是 ip=ip+3,mov算 1,ax或bx 就一定是2吗?
515332695
[第9楼]   [ 回复时间:2010-10-22 08:00 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-06-01 22:23
汗,我又弄错了   mov ax,bx的指令长度是2
寄存器之间传送数据的长度为2,把立即数传到寄存器长度为3。mov与ax,bx应该不能分开看。
例如:mov ax,6 的机器指令是  B80600  后面的0600是6的低位字节和高位字节,那么B8就代表mov ax
具体参考http://wenku.baidu.com/view/b80d7822aaea998fcc220ed4.html
loveyellow99
[第10楼]   [ 回复时间:2010-10-23 15:07 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-10-20 11:13
谢谢,去百度把这个下下来了,我会仔细看完。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved