Love 梦想 发表于 2011-10-7 17:11:35

监测点 6.1 引发的 ‘血案’

检测点6.1(第119页)
-------------------
(1)
assume cs:codesg
codesg segment
    dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
start: mov ax,0
    mov ds,ax
    mov bx,0

    mov cx,8
s: mov ax,
    mov cs:,ax    ;此条指令为所填指令
    add bx,2
    loop s

    mov ax,4c00h
    int 21h
codesg ends
end start

小甲鱼详细分析:我们把循环内的程序解释下,mov ax, 和 mov cs:, ax 是将内存0:0到0:15单元的内容依次借通用寄存器ax之手改写程序中的数据。


我的疑问有以下几点:
血案1, 不知道题意是什么意思。把0:0~0:15 的内存单元中的内容改写程序中的数据?改写程序中的哪个数据啊?
   我就带着这个问题,看看 小甲鱼老师 给的答案。下面是我的理解

assume cs:codesg
codesg segment
    dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
start: mov ax,0
    mov ds,ax
    mov bx,0              ;设置 ds 为0

    mov cx,8              ;循环次数
s: mov ax,              ; 将(ds)复制给ax 即 ax=(ds)==0123h
    mov cs:,ax    ;将0123h 复制给 (cs:) 即 (cs:)==0123h 那还是没变啊,(cs:)本来就等于0123h因为dw是在代码的开头   
    add bx,2
    loop s

    mov ax,4c00h
    int 21h
codesg ends
end start

因此,引发出第二个血案 ...在一个月黑风高、阳光明媚的一个晚上...突然.......

血案2。这段代码 似乎没改变过 数据

topcookie 发表于 2011-10-7 19:55:08

应该写到DS段吧,取出来又放回去和没动一样

chenlin7978580 发表于 2011-10-7 21:58:09

start: mov ax,0
    mov ds,ax
    mov bx,0            ;设置 ds 为0

    mov cx,8            ;循环次数
s: mov ax,   ;这里指向的是DS:即0:
dw 初始化的是CS中的数据而不是DS中的

cyht33 发表于 2011-10-7 22:25:32

dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
是CS中的数据,这个题目的意思是吧程序中dw初始化的数据放入内存中。

Love 梦想 发表于 2011-10-11 00:29:13

chenlin7978580 发表于 2011-10-7 21:58 static/image/common/back.gif
start: mov ax,0
    mov ds,ax
    mov bx,0            ;设置 ds 为0


那DS中的数据又是什么呢?


chenlin7978580 发表于 2011-10-19 11:17:19

Love 梦想 发表于 2011-10-11 00:29 static/image/common/back.gif
那DS中的数据又是什么呢?

你通过在debug中输入-d ds:0 就可以查出 ds中原来的数据了 然后通过执行全部代码后会发现 cs中的数据被DS覆盖了。

8023az 发表于 2013-2-12 19:21:44

首先要明白dw定义的是什么段地址的数据,因为assume cs:code 所以dw的数据是在cs:,cs:……里。
然后内存0:0~0:15又是什么段地址的数据呢?是ds的,数据段。
所以题目要求是用内存数据(ds)改写代码数据(cs)。
清楚没?不知道我说的你明白不。
不喜勿喷

压寨宝宝 发表于 2013-2-13 12:06:25

chenlin7978580 发表于 2011-10-19 11:17 static/image/common/back.gif
你通过在debug中输入-d ds:0 就可以查出 ds中原来的数据了 然后通过执行全部代码后会发现 cs中的数据被DS ...

该楼正解!~~~~
{:5_108:}
页: [1]
查看完整版本: 监测点 6.1 引发的 ‘血案’