【汇编】检测点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 楼主你的意思是不是要把你数据段中的数据覆盖到0:0~0:15中? 这一点并不难你学到到后边会懂的 给提个醒 是默认和ds关联的所以你存放的指向应该
mov cs:,xx
还有就是你要知道你的程序有多少字节或者字的数据或者你要取多少 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 cs数据段中的数据覆盖到ds段0:0~0:15中 在进和出之间体会无限欢乐 前提是你要知道 进那里拿什么 放哪里 就是这么简单就比如 我们进仓库拿了一箱酒贴上茅台标就是茅台贴上五粮液就是五粮液 但是他们的本质还是酒 你把CS的值改了。CS跑去的地方没代码 CS与IP指向的地址,就是代码。代码也是数据
页:
[1]