8086处理器的地址线为20根,内部寄存器为16位,请解释其如何解决地址的存放问题
1个回答
关注
展开全部
亲!您好,很高兴为您解答。亲1.+Intel+8086处理器的IP寄存器是16位的,而地址总线有20根,它是怎么实现从逻辑地址到物理地址映射结果如下:一、背景介绍Intel 8086是一个由Intel于1978年所设计的16位微处理器芯片,是×86架构Q的鼻祖。它是以8080和8085的设计为基础,拥有类似的寄存器组,但是数据总线扩充为16位。总线界面单元(Bus lnterface Unit)透过6字节预存的队列位指令给执行单元(Execution Unit),所以取指令和执行是同步的,8086CPU有20条地址线,可直接寻址1MB的存储空间,每一个存储单元可以存放一个字节(8位)二进制信息。二、16位的寄存器为什么可以访问20位的物理地址地址线有20位,寄存器却只有16位,这不矛盾么?怎么才能用16位的寄存器来访问20位地址线所表示的内存范围(1M)呢?答案就是用两个寄存器,一个用来表示段(也就是段寄存器),一个用来表示段内的偏移,这样才可以做到访问20位地址线所代表的内存范围。将段地址左移4bit,则扩充到了20bit。我们知道,左移1位就是乘2,所以有了段地址×16+偏移地址,
咨询记录 · 回答于2022-12-16
8086处理器的地址线为20根,内部寄存器为16位,请解释其如何解决地址的存放问题
亲!您好,很高兴为您解答。亲1.+Intel+8086处理器的IP寄存器是16位的,而地址总线有20根,它是怎么实现从逻辑地址到物理地址映射结果如下:一、背景介绍Intel 8086是一个由Intel于1978年所设计的16位微处理器芯片,是×86架构Q的鼻祖。它是以8080和8085的设计为基础,拥有类似的寄存器组,但是数据总线扩充为16位。总线界面单元(Bus lnterface Unit)透过6字节预存的队列位指令给执行单元(Execution Unit),所以取指令和执行是同步的,8086CPU有20条地址线,可直接寻址1MB的存储空间,每一个存储单元可以存放一个字节(8位)二进制信息。二、16位的寄存器为什么可以访问20位的物理地址地址线有20位,寄存器却只有16位,这不矛盾么?怎么才能用16位的寄存器来访问20位地址线所表示的内存范围(1M)呢?答案就是用两个寄存器,一个用来表示段(也就是段寄存器),一个用来表示段内的偏移,这样才可以做到访问20位地址线所代表的内存范围。将段地址左移4bit,则扩充到了20bit。我们知道,左移1位就是乘2,所以有了段地址×16+偏移地址,
也就是段地址×10H+偏移地址,这个逻辑地址Q与物理地址的转换公式。而采取这样的办法纯粹是因为硬件设计的原因,不得已而为之。罗想件构图加图o6所元Q0Q6CDII相兰如社t的希望我的回答能帮助到您!