戒烟客 发表于 2013-3-30 10:28:06

请老师指点关于检测点3.1的问题。

检测点3.1(2) 内存中的情况如图3.6所示各寄存器的初始值:cs=2000h,ip=0,ds=1000h,ax=0,bx=0;①   写出CPU执行的指令序列(用汇编指令写出)。②   写出CPU执行每条指令后,CS、IP和相关寄存器的数值。③   再次体会:数据和程序有区别吗?如何确定内存中的信息哪些是数据,哪些是程序?图3.6内存情况示意
指令序列CSIPDSAXBX
初始值2000h0000
1mov ax,6622h2000h3h06622h0
2jmp 0ff0:0100ff0h100h06622h0
3mov ax,2000hff0h103h02000h0
4mov ds,axff0h105h2000h2000h0
5mov ax,ff0h108h2000hc389h0
6mov ax,ff0h10bh2000hea66h0
我的问题是:执行了jmp 0ff0:0100后,就应该执行0ff0:0100指向的指令,但是怎么会去执行1000:0指向的mov ax,2000H指令呢?有点不明白?请老师们指点一下。

思来想去 发表于 2013-3-30 10:45:51

0ff00+100=10000

NGtailang 发表于 2013-3-30 13:10:01

物理地址,物理地址,物理地址,物理地址啊。你懂了吗?

戒烟客 发表于 2013-3-30 18:51:16

呵呵,差点忘了0ff00+100=10000的,搞半天是这么回事,谢谢两位老师!

czfengyong 发表于 2013-3-30 18:58:03

小小小小鱼 发表于 2013-3-31 14:10:32

0FF0:0100   = 1000:0   吧0ff0 * 16 +0100    一个意思

阳光影子 发表于 2013-3-31 20:08:16

jmp跳转呀   你跳转到另一个物理地址了   0ff0乘以16在加上0100等于10000这个物理地址,当然执行它啦
页: [1]
查看完整版本: 请老师指点关于检测点3.1的问题。