鱼C论坛

 找回密码
 立即注册
查看: 2940|回复: 5

汇编监测点3.1课后题求解

[复制链接]
发表于 2012-2-5 23:39:45 | 显示全部楼层 |阅读模式
1鱼币
表咯第四行
jmp 0ff0:0100对应CS值为什么是1000H,从何而来!(我反复看了几次教程视频,小甲鱼在执行到jmp 0ff0:0100时,直接就说CS值为1000,倒是有个改IP公式jmp ax ,这是否就是将AX值,也就是用0ff0覆盖?)视频中有将同时修改CS值和IP值的方法,可是修改结束后出现的事物理地址,好像并未提及之后CS值和IP的值,还是我理解错了,一直很模糊!还有第7行中mov ax,[0008]是怎么算的,视频教程中并未提及,单纯看做0008为偏移地址来计算怎么算也算不对,对应AX值成了C389H,

                               
登录/注册后可看大图

最佳答案

查看完整内容

这个图里面错了,虽然图里面的CS:IP和原本的指向的同一地址。 即:0ff0:100=ff0h*10h+100h=ff00h+100=10000h 它直接把10000写成1000:0填进去了。 正确的应该是CS=ff0h; IP=100h.所以这个图后面的CS和IP也都错了。 mov ax,[0008] 也就是mov ax, ds:[0008] 此时ds=2000h 所以 ds:[0008]=2000h*10h+8h=20008h 20008h地址处的数值是89h,由于赋值的是字(ax为16位也就是一个字),所以高位在20009h(C3h)。 所以ax=C389h 如果这 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-5 23:39:46 | 显示全部楼层
这个图里面错了,虽然图里面的CS:IP和原本的指向的同一地址。
即:0ff0:100=ff0h*10h+100h=ff00h+100=10000h 它直接把10000写成1000:0填进去了。
正确的应该是CS=ff0h; IP=100h.所以这个图后面的CS和IP也都错了。

mov ax,[0008] 也就是mov ax, ds:[0008] 此时ds=2000h 所以 ds:[0008]=2000h*10h+8h=20008h
20008h地址处的数值是89h,由于赋值的是字(ax为16位也就是一个字),所以高位在20009h(C3h)。
所以ax=C389h 如果这里你看不懂,复习下 “3.1 内存中字的存储”。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-6 10:29:14 | 显示全部楼层
本帖最后由 莫名其妙 于 2012-2-6 11:16 编辑

答案下面还有一行红字    注,以上答案来自互联网,第二题实际验证过之后有所出入:


注,以上答案来自互联网,第二题实际验证过之后有所出入:
更正如下:jmp 0FF0:0100 后,CS的值应该为0FF0,IP的值应该为100。
这个应该是跳转到cs:IP代码段  物理地址是10000H 开始 可以有偏移地址多个指向同一个物理地址吧



还有第7行中mov ax,[0008]是怎么算的,视频教程中并未提及,单纯看做0008为偏移地址来计算怎么算也算不对,对应AX值成了C389H,   关于这个问题  应该是 不是算法 应该说是赋值  mov ax,[0008] 应该是 讲当前 DS:[0008]位置的值 给AX  
这问题可以看看3.2 ds [address]和3.4的mov add sub   

小甲鱼视频经常用calc验证计算机的数据   我感觉需要验证的其实计算机的到是次要的 主要需要验证的是书中 因为排版错误或者印刷错误导致的 数据错误 才是最麻烦的

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-6 16:02:57 | 显示全部楼层
此题的确小甲鱼的答案(准确的说是网上的答案)有错误。按照答案的话,第二条应该是jmp 1000:0000
同时修改cs与ip的方式是jmp cs:ip     而单纯只改ip的话可以输入jmp ip,单纯只改cs也可用
mov ax,cs值
mov cs,ax
来进行,当然要麻烦点。
至于楼主所说的[0008] 的意思是后面所学内存单元的内容,既把DS中的值当作段地址,[0008]中的0008当作偏移地址,把0008这个内存单元的字(注意是字不是字节)输入到AX中,所以要同时把0009内存单元用到。所以ax才变成C389H。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-2-6 21:51:39 | 显示全部楼层
初学者伤不起呀..小甲鱼课后题的答案都奉为圣旨一样的.没通过监测点不准往下学啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-11 14:25:23 | 显示全部楼层
本帖最后由 网友 于 2014-3-12 11:13 编辑

mov ax,2000h
mov ds,ax
mov ax,[0008]    这里如果段地址不写 默认是ds
内存存储  是反过来的  所以是C389

0ff0*10+0100=10000H  难道不是吗?
QQ图片20140311142536.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 23:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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