zoukankan      html  css  js  c++  java
  • 16位汇编-段寄存器-需要复习-练习题未做

    1. 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为 _______ 到_______H 。

    物理地址=SA*16+EA    
     
    EA的变化范围为0h~ffffh    
     
    物理地址范围为(SA*16+0h)~(SA*16+ffffh)    
     
    现在SA=0001h,那么寻址范围为    
     
    (0001h*16+0h)~(0001h*16+ffffh)    
     
    =0010h~1000fh  
    首先,cpu的寻址能力和地址总线的宽度(即地址总线的位数)有关。假设CPU寻址上限为Max,地址总线的宽度为N,那么:Max=2^N,即cpu寻址范围为:0到2^N。
    例:地址总线为16位,侧Max=2^16=65535=0xFFFFh,
        即CPU得寻址范围为:0x0000h到0xFFFFh.

    假设你所用CPU的地址总线也为16位,那么偏移地址的变化范围为:0x0000h到0xFFFFh。
    给定段地址为0x0001h,则cpu的寻址范围为:
    (0x0000h+0x0001h)到(0xFFFFh+0x0001h)=0x0001h到0x10000h.

    据说:物理地址=段地址*16+偏移地址
    那实际cpu的寻址范围就为:
      (0x0000h+0x0001h*16)到(0xFFFF
    搜索
    h+0x0001h*16)
    =0x0010h到0x1000Fh.

    2.有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小为 ___(20000H-FFFFH)/16____H ,最大为___(20000-0000)/16_____H 。

    20000=sa*16-(0000H-FFFFH)

    提示:反过来思考,当段地址给定为 1001H 以下和 2000H 以上,CPU无论怎么变化偏移地址都无法寻到20000H单元?

    3.8086/8088上运行的程序某一时刻最多可以访问几个段?程序最多可以具有多少个段?程序至少有几个段?

    因为8086/8088只有4个段寄存器CS/DS/SS/ES,在任意时刻,只能有4个段可用。访问更多的段需要切换段寄存器的值。

    64

    4.8086/8088如何寻址1M字节的存储器物理地址空间?在划分段时,必须满足的两个条件是什么?最多可以把1M字节空间划分成几个段?最少可把1M字节地址空间划分为几个段?

    s5.存储单元的逻辑地址如何表示?存储单元的20位物理地址如何构成?

     逻辑地址由两个16位的地址分量构成,一个为段基值,另一个为偏移量。两个分量均为无符号数编码。  物理地址 =逻辑地址*16+偏移地址

    6、当段重叠时,一个存储单元的地址可以表示成多个逻辑地址。请问物理地址12345H可表示多少个不同的逻辑地址?偏移最大的逻辑地址是什么?偏移最小的逻辑地址是什么?

     0000H

    FFFFH

    7、什么情况下,根据段值和偏移确定的存储单元地址会超出1M?8086如何处理这种情况?

  • 相关阅读:
    老李分享:《Linux Shell脚本攻略》 要点(四)
    老李分享:《Linux Shell脚本攻略》 要点(三)
    老李分享:《Linux Shell脚本攻略》 要点(二)
    老李分享:《Linux Shell脚本攻略》 要点(一)
    持续集成:TestNG组织如何测试用例
    Linux安装Redis
    Linux安装JDK
    Redis主从复制
    MySQL主从同步
    Spring 事务
  • 原文地址:https://www.cnblogs.com/pufan/p/12082552.html
Copyright © 2011-2022 走看看