鱼C论坛

 找回密码
 立即注册
查看: 4500|回复: 10

[汇编作业] 检测点2.3

[复制链接]
发表于 2020-3-22 11:28:24 | 显示全部楼层 |阅读模式

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

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

x
修改cs:ip的值使它指向代码段首地址        第一次更改
mov ax, bx; 执行完指令,ip + 2                第二次更改
sub ax, ax; 执行完指令,ip + 2                第三次更改
jmp as; 执行完指令,ip  = 0                第四次更改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-30 23:21:09 | 显示全部楼层
答:一共修改四次

第一次:读取mov ax,bx之后  

第二次:读取sub ax,ax之后  

第三次:读取jmp ax之后  

第四次:执行jmp ax修改IP  

最后IP的值为0000H,因为最后ax中的值为0000H,所以IP中的值也为0000H  


应该是这样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 4 反对 0

使用道具 举报

 楼主| 发表于 2020-3-31 10:24:23 | 显示全部楼层
2515504707 发表于 2020-3-30 23:21
答:一共修改四次

第一次:读取mov ax,bx之后  

你要先修改cs:ip的值让他指向这个代码的第一句话呀
不然这个源程序怎么运行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-31 10:25:34 | 显示全部楼层
就是要努力呀 发表于 2020-3-31 10:24
你要先修改cs:ip的值让他指向这个代码的第一句话呀
不然这个源程序怎么运行

假如我的代码放在内存中的1000:0位置
cs:ip初始化指向2000:0
那肯定要先修改cs:ip让它指向1000:0呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-1 09:08:05 | 显示全部楼层
就是要努力呀 发表于 2020-3-31 10:25
假如我的代码放在内存中的1000:0位置
cs:ip初始化指向2000:0
那肯定要先修改cs:ip让它指向1000:0呀

有道理
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-3 09:38:48 | 显示全部楼层
2515504707 发表于 2020-3-30 23:21
答:一共修改四次

第一次:读取mov ax,bx之后  

为什么jump ax之后ip=0了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-12 21:47:17 | 显示全部楼层
(1)mov ax,bx
(2)sub ax,ax   //sub,减法指令
(3)jmp ax
第一次修改,ip指向即读取指令(1)
第二次修改,(1)执行完成,ip+2
第三次修改,(2)执行完成,ip+2,ax==0
第四次修改,(3)执行完成,ip==ax==0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-4-12 21:52:40 | 显示全部楼层
朔风刀 发表于 2020-4-3 09:38
为什么jump ax之后ip=0了

因为第二条指令 sub ax,ax ,表示寄存器ax中的值自身做减法存入ax寄存器,即寄存器归0。
第三条指令 jmp ax,表示段地址CS值不变,只改变IP值。第二条指令ax已经归0,所以jmp ax 指令完成ip==0.
第三条指令你可以理解为 mov ip,ax 即mov ip,0000H
希望有所帮助
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-21 23:00:58 | 显示全部楼层
adamhex 发表于 2020-4-12 21:52
因为第二条指令 sub ax,ax ,表示寄存器ax中的值自身做减法存入ax寄存器,即寄存器归0。
第三条指令 jm ...

牛逼,懂了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-5 23:14:13 | 显示全部楼层
我觉得第一次直线代码段地址不算,因为题目说代码执行后,所以不考虑执行第一行代码之前的更改。所以我觉得二楼的答案是正确的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-10 21:13:32 | 显示全部楼层
执行 jmp as ,ip 不需要加2嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-4 00:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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