|
2鱼币
[size=156%]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处读取指令…
问题分析结果:
[size=178%]n(1)mov ax,6622
[size=178%]n(2)jmp 1000:3
[size=178%]n(3)mov ax,0000
[size=178%]n(4)mov bx,ax
[size=178%]n(5)jmp bx
[size=178%]n(6)mov ax,0123H
[size=178%]n(7)转到第(3)步执行
|
最佳答案
查看完整内容
楼主同学,看了下你的贴子,大体问的是一个问题。。。
IP为什么一会加2,一下加5.
如:MOV AX,6622H 机器码为 B8 22 66 共计三字节,SO ,IP加3;
如:JMP 1000:3 机器码为:EA 03 00 00 10 ,所以,五字节,IP 加5;
|