菜鸟97 发表于 2015-2-11 01:58:30

【汇编】检测点6.1 请前辈指导

题目:检测点6.1

(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

      mov cx,8

    s:mov ax,

         mov cs:,ax

      add bx,2

      loop s

      mov ax,4c00h

      int 21h

codesg ends

end start

上面的意思。是把0-0-0-15的数据盖到 当前程序中, 执行过程没有错,我思考了一个问题。可不可不可以把程序的数据转移到0-0-0-15内,如果可以转移过去。那个是不是要把CS 和DS 执行位置调换? 现实中没等我移动过去就被系统踢了出来。我找了空地址,一样把我踢出来,我是这样执行的:
assume cs:abc
abc segment
;dw 0123h,0456h,0789h,0abch,0defh,0fedh,0987h
start : mov ax,1400H
      mov bx,0
                mov cs,ax
                mov cx,8
s:      mov ax,
                mov ds:,ax
                add bx,2
                loop s
                mov ax,4c00h
                int 21h
abc   ends
end start

a838961785 发表于 2015-2-12 13:11:12

楼主你的意思是不是要把你数据段中的数据覆盖到0:0~0:15中?

希望破壳的蛋蛋 发表于 2015-2-12 22:07:57

这一点并不难你学到到后边会懂的   给提个醒   是默认和ds关联的所以你存放的指向应该
mov cs:,xx
还有就是你要知道你的程序有多少字节或者字的数据或者你要取多少

wan1346008 发表于 2015-2-26 18:27:42

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,cs:

          mov ds:,ax

         add bx,2

         loop s

         mov ax,4c00h

         int 21h

codesg ends

end start

wan1346008 发表于 2015-2-26 18:28:24

cs数据段中的数据覆盖到ds段0:0~0:15中

希望破壳的蛋蛋 发表于 2015-3-2 21:20:01

在进和出之间体会无限欢乐   前提是你要知道 进那里拿什么   放哪里    就是这么简单就比如 我们进仓库拿了一箱酒贴上茅台标就是茅台贴上五粮液就是五粮液   但是他们的本质还是酒   

无先了 发表于 2023-10-18 21:53:10

你把CS的值改了。CS跑去的地方没代码

无先了 发表于 2023-10-18 21:54:38

CS与IP指向的地址,就是代码。代码也是数据
页: [1]
查看完整版本: 【汇编】检测点6.1 请前辈指导