| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1065 人关注过本帖
标题:几个很简单的问题,自己想不出来。
取消只看楼主 加入收藏
admin_xyz
Rank: 2
等 级:论坛游民
帖 子:195
专家分:77
注 册:2012-6-24
结帖率:97.3%
收藏
已结贴  问题点数:20 回复次数:1 
几个很简单的问题,自己想不出来。
1:
07D2H+10H 即 07E2H 是程序的地址。从07E2H开始,然后存放data段数据,stack段数据和code段数据。
data段数据空间是16B,stack占用空间是32B,由于编译器是从上往下编译的。然后07E2就是数据短的起始地址。stack段的起始地址就是07E2加上占用空间的16字节就是07E3了。所以07E3才是ss的段地址了!
红色字不理解,为什么07E2+16字节就万07E3了呢,07E2和07E3相差不是256个字节吗。
2:
程序代码:
assume cs:code,ss:stack,ds:data

data segment
       

        dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h

data ends

stack segment
       

        dw 0,0,0,0,0,0,0,0

stack ends

code segment

start:
        mov ax,stack
        mov ss,ax
        mov sp,16

        mov ax,data
        mov ds,ax

        push ds:[0] ;这的ds为什么省略的话会编译错误,
;我以前可以省略的呀。
;push [0] ;默认段地址不是在DS里面吗,为什么前面还要在加一个ds呢。
        push ds:[2]

        pop ds:[2]
        pop ds:[0]
       

        mov ax,4c00h
        int 21h

code ends

end start

搜索更多相关主题的帖子: 数据 编译器 
2012-06-26 00:27
admin_xyz
Rank: 2
等 级:论坛游民
帖 子:195
专家分:77
注 册:2012-6-24
收藏
得分:0 
谢谢版主,第一个问题我搞明白了,物理地址可以用多种 段地址*10h+偏移 组成。

以前还清楚的。。。

总有人比你努力,可怕的是比你牛的人比你还努力。
2012-06-28 19:53
快速回复:几个很简单的问题,自己想不出来。
数据加载中...
 
   



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

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