鱼C论坛

 找回密码
 立即注册
查看: 3040|回复: 4

[汇编作业] 检测点2.3

[复制链接]
发表于 2019-3-25 02:44:32 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 wkavenger 于 2019-3-25 03:01 编辑

下面的3条指令执行后,CPU几次修改IP?都是在什么时候?最后IP中的值是多少?
mov ax,bx
sub ax,ax
jmp ax

解题过程:
假设开始地址0x1000,bx=0x0
0x1000 mov ax,bx   #第一次修改(+0x2),因为要执行下一行命令
0x1002 sub ax,ax    #第二次修改(+0x2),因为要执行下一行命令,但因为下一句为跳转,此处的ax为IP,所以进行理解为第三次修改(IP=0)。
0x1004 jmp ax      #跳转到0x1000进入无限死循环。

答:
三条指令除jmp外需修改2次IP,mov修改1次,共计3次,最后IP中的值是0。

3次是错误的,看了小甲鱼的回复正确答案,牢记~~
https://fishc.com.cn/forum.php?m ... 542&pid=2603310

错误分析:
sub ax,ax 实际上是一整条语句,执行完就只修改一次,他的作用就是将ax=ax-ax,然后进入下一句。

有点不理解的是
第 3 次:读入 jmp ax 后
第 4 次:执行完 jmp ax 后
这个有点难理解,希望有权威人士解答下。

jmp ax实际上进行了两次IP的修改么?
读取执行并执行最终的修改?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-5-14 17:01:13 | 显示全部楼层
第3次:读入JMP ax 后,这条指令是把ax寄存器的值赋给IP,此时为了找到ax的内容,IP需要改变
第4次:执行完JMP ax 后,此时将ax的值赋给IP,IP改变
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2019-5-15 18:03:16 | 显示全部楼层
MadmanLyy 发表于 2019-5-14 17:01
第3次:读入JMP ax 后,这条指令是把ax寄存器的值赋给IP,此时为了找到ax的内容,IP需要改变
第4次:执行 ...

看了您的解答,还是没有搞明白呢。“此时为了找到ax的内容,IP需要改变” 是为什么呢? 去读ax的赋值,IP也需要改变?那是变到多少呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-7 03:57:30 | 显示全部楼层
nickkid 发表于 2019-5-15 18:03
看了您的解答,还是没有搞明白呢。“此时为了找到ax的内容,IP需要改变” 是为什么呢? 去读ax的赋值,IP ...

再看课程看一遍就明白了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-29 16:03:22 | 显示全部楼层
nickkid 发表于 2019-5-15 18:03
看了您的解答,还是没有搞明白呢。“此时为了找到ax的内容,IP需要改变” 是为什么呢? 去读ax的赋值,IP ...

加上上一步操作所占用的地址数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-24 05:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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