鱼C论坛

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

困苦啊

[复制链接]
发表于 2012-2-26 22:36:23 | 显示全部楼层 |阅读模式
5鱼币
检测点9.1 - 详细解答-《汇编语言》-课后题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

为什么填bx,cs
详细解释下代码段的内容意思

最佳答案

查看完整内容

本监测点目的是让我们理解jmp dword ptr ds:[0]指令的含义,其中ds:[0]即内存单元地址。 这个指令的含义是跳转到到哪里呢?ds[0]开始的内存处存放两个字的内容决定了跳转的位置。 其中 (CS)=内存单元地址+2;也就是说从ds:[0]开始的0和1字节处(1个字,低地址)存放的内容为IP (IP)=内存单元地址,也就是说从ds:[0]开始的2和3字节处(1个字,高地址)存放的内容为CS 再结合题目,mov ,??? 那么问号处应 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-26 22:36:24 | 显示全部楼层
本监测点目的是让我们理解jmp dword ptr ds:[0]指令的含义,其中ds:[0]即内存单元地址
这个指令的含义是跳转到到哪里呢?ds[0]开始的内存处存放两个字的内容决定了跳转的位置。
其中    (CS)=内存单元地址+2;也就是说从ds:[0]开始的0和1字节处(1个字,低地址)存放的内容为IP
           (IP)=内存单元地址,也就是说从ds:[0]开始的2和3字节处(1个字,高地址)存放的内容为CS
再结合题目,mov [bx,???   那么问号处应为即将跳转到第一条指令的IP的值,因为是第一条指令,无疑IP应为0,所以……
                    mov [bx+2,???  应为即将跳转到第一条指令的CS的值,所以……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-2-26 22:43:40 | 显示全部楼层
还有第三题也有问题,程序错误不说,cs ip的值是不是也是错误的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-27 20:07:31 | 显示全部楼层
jmp 死掉....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-27 22:27:11 | 显示全部楼层
程序的第一条指令不就是代码段的第一条指令吗?代码段的段地址是CS吧?该段的第一条代码的是从0开始的吧?要指向第一条指令就是指向cs:0000h吧? 该程序的转移指令是“ jmp dword ptr ds:[0]”,对于转移地址在内存中的jmp指令,当用dword指定时,说明从ds:[0]开始的两个字存放着转移目的地址,低地址存放的是目的的偏移地址,高地址存放的是目的的段地址。所以“ jmp dword ptr ds:[0]”要达到指向cs:0000h的目的,那么(ds:[0])=0000h,(ds:[2])=(cs)才行。因为前面已经有mov bx,0,所以mov [bx],___就是mov [0],____,所以此处填 bx就可以了,而mov [bx+2],___就是mov [2],___,所以此处填CS   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-8 12:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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