鱼C论坛

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

检测9.1的问题

 关闭 [复制链接]
发表于 2011-8-12 16:01:10 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 着火番茄 于 2011-8-13 09:13 编辑

(2)补全程序,使jmp指令执行后,CS:IP指向程序的第一条指令。

完整程序如下:
assume cs:code,ds:data

data segment
    dd 12345678h
data ends

code segment
start: mov ax,data
    mov ds,ax
    mov bx,0
    mov [bx],bx      ;源操作数bx为所填内容
    mov [bx+2],cs    ;源操作数cs为所填内容
    jmp dword ptr ds:[0]

code ends
end start


那里为什么填CS?求分析,,不是很明白

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-12 16:08:31 | 显示全部楼层
这个考察jmp从内存地址中取到需要跳转的地址,jmp dword ptr ds:[0]在本例中是取data段中的偏移为0的双字节,低字中应该存入start标号所执行的指令地址,那么高字中必然要存入cs段地址,构成一个段间转移。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-8-13 09:13:25 | 显示全部楼层

多谢啦,原来是我的段间转移没弄懂,所以不明白,
现在懂了,原来是:低地址为偏移地址,高地址为段地址,才能实现段间转移
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-8-13 10:56:07 | 显示全部楼层
parbbo 发表于 2011-8-12 16:08
这个考察jmp从内存地址中取到需要跳转的地址,jmp dword ptr ds:[0]在本例中是取data段中的偏移为0的双字节 ...

再来问你9.2的问题[b]

                               
登录/注册后可看大图


                               
登录/注册后可看大图

从标号s处开始所要填写的四条指令依次如下:
[/b]
第一条指令:mov cl,[bx]
第二条指令:mov ch,0
第三条指令:jcxz ok
第四条指令:inc bx
首先题目就闷闷的,不是很懂
看了答案更是晕了

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-8-13 11:13:53 | 显示全部楼层
parbbo 发表于 2011-8-12 16:08
这个考察jmp从内存地址中取到需要跳转的地址,jmp dword ptr ds:[0]在本例中是取data段中的偏移为0的双字节 ...

额 不好意思 我弄懂了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-19 04:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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