| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 736 人关注过本帖
标题:关于汇编一些概念有点模糊,望解答
只看楼主 加入收藏
diaolingle
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2011-11-19
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
关于汇编一些概念有点模糊,望解答
cpu执行程序,程序返回前,返回前到底是什么意思?
程序加载后又是什么意思,是指程序执行到了int 21h这个位置吗?
搜索更多相关主题的帖子: cpu 
2011-12-11 12:26
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:20 
不论是返回前,加载后,这个要看具体上下文(context),你问题没描述清楚, 我猜想你的意思是想问
.model tiny
.code
main proc far
start:
    xor ax,ax
    push ds
    push ax
    ret           ;这句执行之前都叫做返回前,不一定是ret,int21h也可(所以要看具体上下文,到底是进程,还是中断)
    main endp
    end start
一个程序的加载是由加载器来完成的,可执行文件从磁盘加载到内存的过程可以叫加载,一旦加载器完成了从磁盘文件到内存的过程,之后的对于该进程的读写都可以叫加载后的读写

技术问题,请不要以短消息方式提问
2011-12-11 13:34
diaolingle
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2011-11-19
收藏
得分:0 
回复 2楼 zaixuexi
关于加载是不是单纯把可执行文件加载到内存里面,然后执不执行指令呢。王爽的书上有一道题是问程序加载后cs,ds,ss中各自的值,要是前者的话,就是直接r命令后就把值写出来,要是后者的话,就要执行完后再写出此时的cs它们的值吧
2011-12-11 18:39
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
你怎么会想成是后者,后者还叫加载么,加载啊,就是由加载器给个初值,和执行没关系吧...

技术问题,请不要以短消息方式提问
2011-12-11 19:16
diaolingle
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2011-11-19
收藏
得分:0 
回复 4楼 zaixuexi
原题是这样的:设程序加载完后,code段的段地址为X,则data段的段地址为(  ),stack段的段地址为(  )。
然后答案就是X-2和X-1。可是要是不执行的话就没有这样的结果咯,好像是执行到mov 4c00h才会出现这样的结果啊,不知道是不是答案错了。
2011-12-11 19:40
diaolingle
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2011-11-19
收藏
得分:0 
回复 4楼 zaixuexi
程序我大概写下
assume  cs:code,ds:data, ss:stack
data segment
dw................(一些数据)
data ends
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
code segment
start:mov ax,stack
      .........(中间这些指令其实不影响)
      mov 4c00h
      int 21h
      code ends
end start
2011-12-11 19:45
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
看来你是没明白我说的话.
程序代码:
assume  cs:code,ds:data, ss:stack
data segment
    db ?
data ends
stack segment
    db ?
stack ends
code segment
start:
      mov ax, data
      mov bx, stack
      mov cx, code
      mov ax, 4c00h
      int 21h
code ends
end start 
data,stack,code是加载器完成初始话的,你要通过r命令当然是通过赋值给寄存器看咯,这和执行没关系的,初始化是初始data,stack,code,你却只看ds,ss,cs,你有没有看清楚题目?code段的段地址为X,则data段的段地址为(  ),stack段的段地址为(  ),他有问你ds,ss,cs?你就没读懂题目


技术问题,请不要以短消息方式提问
2011-12-11 20:12
diaolingle
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2011-11-19
收藏
得分:0 
回复 7楼 zaixuexi
懂了,谢谢
2011-12-11 20:26
快速回复:关于汇编一些概念有点模糊,望解答
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029651 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved