相关内容见《IBM-PC汇编语言程序设计》清华大学出版社 chapter2
存储器以字节为单位存储信息
每个字节单元有有唯一一个物理地址,从0编号,顺序+1
低位字节存入低地址,高位字节存入高地址
机器以偶地址访问(读/写)存储器:
字、4字单元地址用它的 最低 字节地址来表示。
在图中,读1000H读出一个字。
可以发现,尽管每个存储单元存了一个字节,但是一个地址读写一个字。(按字操作)
而且操作偶数地址,因此1001读出需要访问1000和1002
这里需要访问两次存储器!!
实模式存储器寻找:
8086、/8088工作在20位地址,独占系统所有资源。
8086/8088的数据总线宽度是16位,地址总线宽度是20位。16位字长实现20位寻址。
小段:从0地址开始,每16个字节为一小段,共有64k个小段。
小段首地址特征:后四位为0。
--逻辑地址 (2个16)是程序中使用的地址,它由段基址和段内偏移值所组成,段基址与段内偏移值都为16位的二进制数。
段地址:段起始地址的高16位(DS)
偏移地址:段内相对于段起始地址的偏移值(16位)(有效地址EA)
--物理地址 (1个20)也叫实际地址或绝对地址,是CPU访问存储器时实际使用的地址,为20位地址。
>>段寄存器(CS、DS、SS、ES、FS、GS) 存放段地址,确定一个段的的起始地址.
用途各不相同:
代码段(CS):存放当前正在运行的程序
数据段(DS):存放当前运行程序所用的数据 ,或串处理指令中的源操作数
堆栈段(SS):定义堆栈(后进先出)的所在区域
附加段(ES):附加的数据区,或串处理指令中的目的操作数
各段在存储器中的分配:由操作系统负责负责,但需要时也可指定.
(so,记住如何运算的,有时候也可以16*cs+ip/pc什么的)
段的重叠: 指每个段区的大小允许根据实际需要来分配,而不一定要占有64KB的最大段空间