□为 发表于 2012-9-23 23:31:15

关于书中问题2.3(33页)CPU运行的流程相关


n内存中存放的机器码和对应汇编指令情况: (初始:CS=2000H,IP=0000H)




书中分析
(1)当前CS=2000H,IP=0000H,则CPU从内存2000H×16+0000H=20000H 处读取指令,读入的指令是:B8 22 66(mov ax,6622H),读入后IP=IP+3=0003H;// 这里想问下为什么IP会加 3 ?
(2)指令执行后,CS=2000H,IP=0003H,则CPU 从内存2000H×16+0003H=20003H处读取指令,读入的指令是:EA 03 00 00 (jmp 1000:0003),读入后IP=IP+5=0008H; //为什么这里的IP又变成了加5呢?
(3)指令执行后,CS=1000H,IP=0003H,则CPU从内存1000H×16+0003H=10003H处读取指令,读入的指令是B8 00 00(mov ax,0000),读入后IP=IP+3=0006H;
(4)指令执行后,CS=1000H,IP=0006H,则CPU从内存1000H×16+0006H=10006H处读取指令,读入的指令是8B D8(mov bx,ax),读入后IP=IP+2=0008H; //为什么要加 2呢?
(5)指令执行后,CS=1000H,IP=0008H,则CPU从内存1000H×16+0008H=10008H处读取指令,读入的指令是 FF E3(jmp bx),读入后IP=IP+2=000AH;//为什么要加 2呢?
(6)指令执行后,CS=1000H,IP=000H,CPU从内存10000H处读取指令…

问题分析结果:

n(1)mov ax,6622
n(2)jmp 1000:3
n(3)mov ax,0000
n(4)mov bx,ax
n(5)jmp bx
n(6)mov ax,0123H
n(7)转到第(3)步执行



s0512 发表于 2012-9-23 23:31:16

楼主同学,看了下你的贴子,大体问的是一个问题。。。
IP为什么一会加2,一下加5.
如:MOV AX,6622H机器码为 B8 22 66 共计三字节,SO ,IP加3;
如:JMP1000:3 机器码为:EA 03 00 00 10 ,所以,五字节,IP 加5;

□为 发表于 2012-9-23 23:31:53

自杀个!!求大牛解答。。    坐等! QQ   821024807

□为 发表于 2012-9-24 11:35:00

s0512 发表于 2012-9-24 08:25 static/image/common/back.gif
楼主同学,看了下你的贴子,大体问的是一个问题。。。
IP为什么一会加2,一下加5.
如:MOV AX,6622H机器 ...

:lol呃!!! 谢啦!!!!    明白了!! 呵呵 !!! 谢啦哥们!!!

walykyy 发表于 2012-9-24 11:36:15

IP加几是根据读入的指令来计算的,有几个指令就加几,例如:读入的指令是:B8 22 66(mov ax,6622H),读入后IP=IP+3=0003H;// 这里想问下为什么IP会加 3 ?因为读入的指令是:B8 22 66(3个指令)

□为 发表于 2012-9-24 11:39:07

walykyy 发表于 2012-9-24 11:36 static/image/common/back.gif
IP加几是根据读入的指令来计算的,有几个指令就加几,例如:读入的指令是:B8 22 66(mov ax,6622H),读入后I ...

呵呵 已经懂了!!谢啦!!!
页: [1]
查看完整版本: 关于书中问题2.3(33页)CPU运行的流程相关