首页
开源软件
问答
动弹
博客
翻译
资讯
Gitee
众包
活动
专区
源创会
求职/招聘
高手问答
开源访谈
周刊
公司开源导航页
登录
注册
下载APP
OSCHINA App ——
关注技术领域的头条文章
聚合全网技术文章,根据你的阅读喜好进行个性推荐
开源软件
问答
动弹
博客
翻译
资讯
Gitee
代码托管
众包
活动
专区
更多
源创会
求职/招聘
高手问答
开源访谈
周刊
公司开源导航页
登录
注册
开源问答
技术问答
正文
王爽 汇编语言检测点6.1
RADG
发布于 2015/02/28 23:56
阅读 2K+
收藏
0
答案
2
MASM
题目:检测点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,[bx]
mov cs:[bx],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,[bx]
mov ds:[bx],ax
add bx,2
loop s
mov ax,4c00h
int 21h
abc ends
end start
收藏 (
0
)
分享
微博
QQ
微信
举报
加载中
最多投票
最新
0
_lonely
2016/01/19 19:24
你把 ax的值移到cs中,那么程序不就从cs:ip中读指令了吗?就相当于 ax:ip的指令了!
正确的应该
assume cs:abc
abc segment
;dw 0123h,0456h,0789h,0abch,0defh,0fedh,0987h
start : mov ax,1400H
mov bx,0
mov bx,ax
mov cx,8
s: mov ax,cs:[bx]
mov ds:[bx], ax
add bx,2
loop s
mov ax,4c00h
int 21h
abc ends
end start
评论 (
0
)
引用此答案
举报
0
_lonely
2016/01/19 19:34
assume cs:abc
abc segment
;dw 0123h,0456h,0789h,0abch,0defh,0fedh,0987h
start : mov ax,0 ;这里被你带歪了!这里应该是0
mov bx,0 ;bx是变量,用来做偏移地址
mov ds,ax ;把ax的值,也就是0 给到ds
mov cx,8
s: mov ax,cs:[bx] ; 这里是先把 cs:0 也就是第一个数据,放到ax中
mov ds:[bx], ax ;然后把数据放到 ds:[0] ds是0,所以就是0:0中
add bx,2 ; 通过bx偏移地址的增加。。不断的进行mov
loop s
mov ax,4c00h
int 21h
abc ends
end start
评论 (
0
)
引用此答案
举报
我要回答
RADG
最近登录:2019/08/14 15:51
类似问题
王爽 汇编语言检测点10.5
0 回答
1310 阅读
汇编分为几种,请问我以下的代码操作的是物理内存还是虚拟内存
16 回答
781 阅读
汇编语言用冒泡法排序--我的代码就是输不出排序后的,望大神指教
2 回答
542 阅读
用C语言“写”操作系统 操作系统并没有那么难实现
20 回答
6294 阅读
汇编语言中如何把寄存器中的值赋给数据段中的一个内存单元
3 回答
5050 阅读
汇编语言中冒泡排序,我的程序就是输不出排完序后的字符串,麻烦各位帮我看一下啦,谢啦
1 回答
622 阅读
汇编开机引导程序求教
0 回答
124 阅读
(汇编初级问题)请问这里是用什么命令输出的
1 回答
534 阅读
用nasm汇编做引导程序
0 回答
272 阅读
帮我看看我对下面一个汇编的习题理解对不?
1 回答
415 阅读
求汇编高手求助。。有个 程序帮我看看吧~~~~助人自助加我QQ 539957539 教教我吧很急
6 回答
333 阅读
再论制硬盘逻辑锁
0 回答
199 阅读
汇编语言学习记录--输入输出字符串
0 回答
1351 阅读
AT&T x86 asm 语法
0 回答
443 阅读
反汇编学习
0 回答
718 阅读
登录后可查看更多优质内容
使用微信快捷登录
©OSCHINA(OSChina.NET)
工信部
开源软件推进联盟
指定官方社区
深圳市奥思网络科技有限公司版权所有
粤ICP备12009483号
顶部
你把 ax的值移到cs中,那么程序不就从cs:ip中读指令了吗?就相当于 ax:ip的指令了!
正确的应该
abc segment
;dw 0123h,0456h,0789h,0abch,0defh,0fedh,0987h
start : mov ax,1400H
mov bx,0
mov bx,ax
mov cx,8
s: mov ax,cs:[bx]
mov ds:[bx], ax
add bx,2
loop s
mov ax,4c00h
int 21h
abc ends
end start
abc segment
;dw 0123h,0456h,0789h,0abch,0defh,0fedh,0987h
start : mov ax,0 ;这里被你带歪了!这里应该是0
mov bx,0 ;bx是变量,用来做偏移地址
mov ds,ax ;把ax的值,也就是0 给到ds
mov cx,8
s: mov ax,cs:[bx] ; 这里是先把 cs:0 也就是第一个数据,放到ax中
mov ds:[bx], ax ;然后把数据放到 ds:[0] ds是0,所以就是0:0中
add bx,2 ; 通过bx偏移地址的增加。。不断的进行mov
loop s
mov ax,4c00h
int 21h
abc ends
end start