. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(CPU工作原理)
主题 : :  ip修改次数问题:  [待解决] 回复[ 6次 ]   点击[ 412次 ]  
lhk3355
[帖 主] [ 发表时间:2010-11-20 11:57 ] 
荣誉值:0
信誉值:0
注册日期:2010-11-17 23:03
代码段 
1000:0 mov ax,8
      3 jmp ax
      5 mov ax,0
      8 mov bx,ax
      a jmp bx
问   运行到 1000a 时IP修改了几次?
     我个人理解   ip 从0到3 再到8 再到 A 又到8  应该是4次 是这样么
bzyxtsg
[第5楼] [ 回复时间:2010-12-29 11:46 ] 
荣誉值:14
信誉值:6
注册日期:2010-12-20 13:34
CPU从1000:0处开始执行指令当执行完1000:10处的指令后CPU几次修改IP__3___。    
1指令#  1000:0 mov ax,8    
2指令# 1000:3 jmp ax    
3指令# 1000:5 mov ax,0    
4指令# 1000:8 mov bx,ax    
5指令# 1000:10 jmp bx    
 1、 4    
 2、 5    
 3、 6    
 4、 7    
解析:1000:0    起始地址  ip 0 
      
1000:0  movax,8  读取1指令ip0-3(由0指向3)   指向2指令   
第1次 
      
1000:3   jmp ax    执行1指令,                指向3指令     ip 3-5        
第2次    

执行2指令:ip跳至8[1000:5 mov ax,0 跳过不执行,直接到ip=8处] 指向4指令  ip 5-8 
第3次  
       
      1000:8   mov bx,ax 读取4指令 ip指向0a   指向5指令      
第4次  
      1000:10  jmp bx   执行4指令 读取下一指令 ip指向0c(0a+2)   
第5次 
   执行5指令 ip跳至8   指向4指令   
第6次 
                      


    至此到10处指令执行完毕,然后在地址8和10处不停的跳。跳来跳去,不知道cpu累不累,也许今天太冷,跳跳暖和下。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved