(^_^)陈福林 发表于 2012-8-31 21:51:05

8086cpu中ip是怎么知道要自动加2或3的

8086cpu中ip是怎么知道要自动加2或3的

ACC 发表于 2012-8-31 22:26:30

根据指令的长度不同

梦幻羽羽 发表于 2012-9-3 09:22:20

早上好~   楼主。

问题:8086cpu中ip是怎么知道要自动加2或3的

分析,cpu 的执行指令的过程
         1, 从cs:ip指向的内存单元读取指令,读取的指令进入指令缓冲器
         2, ip =ip+读取指令的长度,从而指向下一条指令 (现在知道了吗?)
         3,指行指令,重复上面的过程
比如:( 假设)
         cs = 1000,ip = 0
         
          (内存)    (汇编指令对应的内存的内容)      (汇编指令)
          1000:0         b80000   ( 十六进制)                mov ax, 0
          1000:3         050100                                    addax,   1   
          1000 :6          40                                             inc    ax

你看   cs = 1000,ip = 0,   这时cpu将从cs:ip指向的内存单元读取指令,读取的指令进入指令缓冲器, 也就是 b80000 (mov ax, 0),    ip =ip+读取指令的长度, 也就是 ip = ip+3因为 b80000 (mov ax, 0)占 3个 字节,所以加3 ,            加3后指向了 1000:3 ,这时cpu将从cs:ip指向的内存单元读取指令,读取的指令进入指令缓冲器, 也就是 050100 (addax, 1),    ip =ip+读取指令的长度, 也就是 ip = ip+3               加3后指向了 1000:6 ,这时cpu将从cs:ip指向的内存单元读取指令,读取的指令进入指令缓冲器, 也就是 40 (incax),    ip =ip+读取指令的长度, 也就是 ip = ip+1   

好了~   楼主我描述完毕希望能帮助你            
页: [1]
查看完整版本: 8086cpu中ip是怎么知道要自动加2或3的