| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2558 人关注过本帖
标题:两个汇编语言的概念问题
只看楼主 加入收藏
shaoyuan
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2008-9-7
结帖率:100%
收藏
 问题点数:0 回复次数:8 
两个汇编语言的概念问题
段的大小指的是什么,即段的概念是什么?
一个存储单元是多少?
搜索更多相关主题的帖子: 汇编语言 概念 
2008-09-29 20:45
ONEPROBLEM
Rank: 6Rank: 6
来 自:广西 南宁
等 级:贵宾
威 望:21
帖 子:1569
专家分:349
注 册:2008-7-11
收藏
得分:0 
LZ问的应该是DOS汇编吧.
什么是段?这个问题三言两语说不清~~
我是这样理解的:整个内存空间就像一把有"刻度"的尺子,我们所说的"段"就等于在这把尺子中取一部分的"刻度".
假如,尺子的长度是10厘米,我从第5厘米开始数,到第8厘米,这个段的长度就是3厘米;它是从第5厘米开始算的,偏移量是3 .
一个存储单元是多少?
一般是一个字节吧.
2008-09-29 23:53
rediums
Rank: 2
等 级:新手上路
威 望:3
帖 子:367
专家分:0
注 册:2007-7-29
收藏
得分:0 
段的概念来源于8086处理器,8086处理器为16位处理器,内部寄存器为16位,地址总线为20位,所以,20位地址总线能够寻址1M的内存空间,内存的地址是用20个数据位来表示,但对于内部的16位寄存器来说,无法容纳20位的地址,所以CPU把内存划分为最大为64K的段,这样就能用16位寄存器来寻址这64K的空间了,通过把1M的内存空间划分为若干个64K的段,这样内部寄存器就能偶操纵整个1M的空间了。当然段的大小可以任意,只要不大于64K就行了。

CPU内部有四个段寄存器,CS,DS,SS,ES,用它们来存储内存中段的起始地址,因为内存地址是20位的,所以对于段的起始地址就有了一定的要求,20位中的最后四位必须是0,CS,DS,SS,ES这四个段寄存器在存储起始地址的时候只存储前16位,CPU在实际访问内存的时候会自动在段寄存器的末尾加上四个零(左移四位),构成实际内存中的起始地址。

访问内存采取段地址+偏移地址的方式,偏移地址一般存放在SI,DI,IP中,最大值为64K,也就是一个段的最大容量。

内存中的最小存储单元是1个数据位,但CPU在访问内存的时候是以字节、字,双字或者四字来访问的,给定一个地址,CPU可以访问一个字节,一个字,一个双字或者四字,当然,8086处理器一次最多只能访问一个字,386以后的处理器可以访问更多。

2008-09-30 00:48
猫昵宝贝
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-9-29
收藏
得分:0 
谢谢  学习了
2008-10-01 01:28
耙耙虫
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:地球
等 级:版主
威 望:5
帖 子:943
专家分:0
注 册:2007-10-6
收藏
得分:0 
汇编好麻烦啊~~~~~
2008-10-01 20:57
耙耙虫
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:地球
等 级:版主
威 望:5
帖 子:943
专家分:0
注 册:2007-10-6
收藏
得分:0 
我看完3楼说的,现在都不知道门朝哪了......
2008-10-01 20:58
boliyuan
Rank: 1
来 自:四川南充
等 级:新手上路
帖 子:59
专家分:2
注 册:2007-6-26
收藏
得分:0 
我们现在正在学微机原理,我觉得三楼的说没错。。。呵呵,支持!

只要开心就好!
2008-10-01 22:31
liujiahuan
Rank: 1
等 级:新手上路
帖 子:34
专家分:3
注 册:2011-10-2
收藏
得分:0 
xuele
2011-10-03 23:12
darkdsn
Rank: 2
等 级:论坛游民
帖 子:4
专家分:10
注 册:2012-11-27
收藏
得分:0 
两个汇编语言的概念问题
 段的大小指的是什么,即段的概念是什么?
 一个存储单元是多少?
首先要说存储单元本身是一个字节,也就是8位,实际存储时还有一个校验位,也就是9位,在汇编语言中(除了早期小于16位的处理器外)就是字节.
段一般来说是X86处理器引入的,X86处理器的寄存器是16位的要访问多于64K的地址要使用更大的段寄存器,从8086的20位段寄存器到48位的现代段寄存器都有.早期的16位寄存器表明在寄存器寻址时段是16位数---也就是64K大小,换句话说就是64K字节.
现代的段(如64位处理器)实际上已变成32位数---也就是4G大小,换句话说就是windowsX32所能访问的大小,windowsX64中就又能看到段寄存器了,除非是做系统,一般也看不到。
2012-11-27 22:07
快速回复:两个汇编语言的概念问题
数据加载中...
 
   



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

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