鱼C论坛

 找回密码
 立即注册
查看: 2383|回复: 6

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

[复制链接]
发表于 2013-3-30 10:28:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
检测点3.1  
(2) 内存中的情况如图3.6所示
各寄存器的初始值:cs=2000h,ip=0,ds=1000h,ax=0,bx=0;
①   写出CPU执行的指令序列(用汇编指令写出)。
②   写出CPU执行每条指令后,CS、IP和相关寄存器的数值。
③   再次体会:数据和程序有区别吗?如何确定内存中的信息哪些是数据,哪些是程序?
图3.6内存情况示意
未命名.jpg
指令序列
CS
IP
DS
AX
BX
初始值
2000h
0
0
0
0
1
mov ax,6622h
2000h
3h
0
6622h
0
2
jmp 0ff0:0100
ff0h
100h
0
6622h
0
3
mov ax,2000h
ff0h
103h
0
2000h
0
4
mov ds,ax
ff0h
105h
2000h
2000h
0
5
mov ax,[8]
ff0h
108h
2000h
c389h
0
6
mov ax,[2]
ff0h
10bh
2000h
ea66h
0
我的问题是:执行了jmp 0ff0:0100后,就应该执行0ff0:0100指向的指令,但是怎么会去执行1000:0指向的mov ax,2000H指令呢?有点不明白?请老师们指点一下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-30 10:45:51 | 显示全部楼层
0ff00+100=10000
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-30 13:10:01 | 显示全部楼层
物理地址,物理地址,物理地址,物理地址啊。你懂了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-3-30 18:51:16 | 显示全部楼层
呵呵,差点忘了0ff00+100=10000的,搞半天是这么回事,谢谢两位老师!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
发表于 2013-3-30 18:58:03 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-31 14:10:32 | 显示全部楼层
0FF0:0100   = 1000:0     吧0ff0 * 16 +0100    一个意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-31 20:08:16 | 显示全部楼层
jmp跳转呀   你跳转到另一个物理地址了   0ff0乘以16在加上0100等于10000这个物理地址,当然执行它啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 20:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表