给出一个存储器操作数,怎么知道它的段地址和物理地址是什么呢?
1个回答
关注
展开全部
您好,要知道存储器操作数的段地址和物理地址,需要使用段描述符和页表。具体步骤如下:1. 从存储器操作数中提取出段选择子,这个选择子通常被存储在指令中或者CPU的寄存器中。2. 使用段选择子去查找段描述符表(GDT或LDT)中对应的段描述符。3. 在段描述符中获取段基址,即该段在逻辑地址空间中的起始地址,以及段限长,即该段可以访问的最大地址范围。4. 将存储器操作数中的偏移地址与段基址相加,得到逻辑地址。此时,逻辑地址由段选择子和偏移地址两部分组成。5. 将逻辑地址经过页表映射,得到对应的物理页框号和页内偏移量。6. 将物理页框号乘以页框大小,并加上页内偏移量,得到物理地址。7. 最终得到的地址即为存储器操作数的物理地址。
咨询记录 · 回答于2023-05-05
给出一个存储器操作数,怎么知道它的段地址和物理地址是什么呢?
行 快点
您好,要知道存储器操作数的段地址和物理地址,需要使用段描述符和页表。具体步骤如下:1. 从存储器操作数中提取出段选择子,这个选择子通常被存储在指令中或者CPU的寄存器中。2. 使用段选择子去查找段描述符表(GDT或LDT)中对应的段描述符。3. 在段描述符中获取段基址,即该段在逻辑地址空间中的起始地址,以及段限长,即该段可以访问的最大地址范围。4. 将存储器操作数中的偏移地址与段基址相加,得到逻辑地址。此时,逻辑地址由段选择子和偏移地址两部分组成。5. 将逻辑地址经过页表映射,得到对应的物理页框号和页内偏移量。6. 将物理页框号乘以页框大小,并加上页内偏移量,得到物理地址。7. 最终得到的地址即为存储器操作数的物理地址。
8086CPU中的AD线为什么要合到一起?使用的时候怎么分时复用呢?
8086CPU中的AD线是地址线,它们必须合在一起,因为它们共同传递了CPU需要访问的完整地址。AD线的数量是16条,其中AD0-AD7传输低8位地址,而AD8-AD15传输高8位地址。在使用时,AD线要通过分时复用技术来进行传输。在读取内存或I/O端口时,AD线被用作地址线,将地址发送到存储单元或端口中。而在写入内存或I/O端口时,AD线被用作数据线,将数据发送到存储单元或端口中。这种分时复用的方式可以通过一个控制信号来控制,例如,MN/MX信号用于选择内存或I/O端口进行访问。
将二进制数1101.11转换十进制数。2、设有两个操作数01000100B和01001000B。将这两个操作数送运算器做加法运算,问:若均为无符号数,计算结果是否正确?若均为带符号补码数,计算机结果是否溢出?写明判断过程3、MOVBX,[BP+1000H]中,存储器操作数的物理地址是多少?
1、1101.11的十进制值可以通过分离整数部分和小数部分分别转换得到:1101.11 = 1×2³ + 1×2² + 0×2¹ + 1×2⁰ + 1×2^(-1) + 1×2^(-2)= 8 + 4 + 0 + 1 + 0.5 + 0.25= 13.75所以1101.11的十进制值为13.75。2、将二进制操作数转换为十进制操作数,分别相加得到:01000100₂ = 68₁₀01001000₂ = 72₁₀68 + 72 = 140对于无符号数,两个8位二进制数的最大和为255,不会溢出,计算结果正确。对于带符号补码数,需要判断溢出。将两个二进制数视为有符号数进行加法运算,得到的十进制和为140,这个数超过了8位有符号补码数的范围(-128到127),即发生了溢出。因此,计算结果发生了溢出。3、MOVBX,BP+1000H中,BP+1000H表示基地址为BP+1000H的存储单元,X为寄存器编号。具体的物理地址需根据寄存器编号X和存储单元的数据宽度(byte、word、dword等)来计算,无法根据提供的信息确定。
MOVBX,[BP+1000H]中,存储器操作数的物理地址是多少?4、MOVAX,ES:[BX][SI]的源操作数的物理地址是?5、指出下列指令源操作数的寻址方式MOVAX,ES:[BX]MOVAX,data[BX+SI]
4、MOVBX,BP+1000H中,存储器操作数的物理地址是 BP+1000H5、指出下列指令源操作数的寻址方式:- MOVAX,ES:BX:段地址由ES寄存器给出,偏移地址由BX寄存器给出,即ES:BX。- MOVAX,dataBX+SI:偏移地址由BX和SI寄存器给出,段地址由代码段寄存器CS或数据段寄存器DS确定情况而定,即DS/CS:dataBX+SI。