‘壹’ 8086/8088CPU使用的存储器为什么要分段怎么分段
8086/8088系统中,存储器为什么要分段。
一个段最大为多少字节。
最小为多少字节。
解:分段的主要目的是便于存储器的管理,使得可以用16位寄存器来寻址20位的内存空间。
一个段最大为64KB,最小为16B。
(1)8086处理器将存储器划分为扩展阅读:
段的开始地址总是是16的倍数。即:若一个段的起始地址为0000h,那么另一个段(重叠第一个段)的起始地址将为:0010h(即16),下一个段的起始地址将为0020h(32)。
一个段的段号由其物理地址的前4个16进制数组成。(如:FFFF)
通常,程序只写出偏移量(从段的第一个字节到要定位地址的距离),段号可以通过上下文判断。偏移量大小从0000到FFFF。
‘贰’ 8086系统中的存储器为什么要采用分段结构有什么好处
8086CPU中的寄存器都是16位的,16位的地址只能访问64KB的内存。086系统中的物理地址是由20根地址总线形成的,要做到对20位地址空间进行访问,就需要两部分地址,在8086系统中,就是由段基址和偏移地址两部分构成。
这两个地址都是16位的,将这两个地址采用相加的方式组成20位地址去访问存储器。在8086系统的地址形成中,当段地址确定后,该段的寻址范围就已经确定,其容量不大于64KB。同时,通过修改段寄存器内容,可达到逻辑段在整个1MB存储空间中浮动。
各个逻辑段之间可以紧密相连,可以中间有间隔,也可以相互重叠(部分重叠,甚至完全重叠)。采用段基址和偏移地址方式组成物理地址的优点是:满足对8086系统的1MB存储空间的访问,同时在大部分指令中只要提供16位的偏移地址即可。
(2)8086处理器将存储器划分为扩展阅读
把段的起始单元的物理地址除以16的结果称为段地址,它为16位,写成十六进制是4位:XXXXH。显然,段地址决定了段在lMB空间中的位置。段内各存储单元相对段的起始单元都有一个距离,称为段内偏移量。
在对内存进行操作时,段地址先确定下来,然后给出不同的段内偏移量,就可以实现段内的寻址。段地址也是可以改变的,即段在1MB空间中的位置是可变的,因而可实现1MB的全范围寻址。
由于采用了分段结构,因此可以把每一个存储单元看成是具有两种类型的地址:物理地址和逻辑地址。物理地址就是实际地址,它具有20位的地址值,它惟一地标识1MB存储空间的某一存储单元。CPU与存储器之间的信息交换都是使用这个物理地址。
逻辑地址是编程时所使用的地址,它由段地址和段内偏移量组成。逻辑地址和物理地址的关系为:物理地址=段地址16+段内偏移量。由逻辑地址形成物理地址是由总线接口部件中的电路实现的。
‘叁’ 8086CPU可访问两个独立的地址空间,分别为
应该是:一个为存储器地址空间,大小为1M,另一个为I/O端口地址空间,大小为64K
‘肆’ 8086可以把存储器分成几个段各段的地址又怎么确定
1、
(1)段地址:2314h,偏移地址:0035h,物理地址:23175h
(2)
段地址:1fd0h,偏移地址:00a0h,物理地址:1fda0h
2、依次为85h~8ch,计算公式:有效地址=物理地址-ds*16。
由于是16位机,一次处理数据16位,即2字节,这里有8个字节,所以,要访问4次。