汇编语言在8086三种情况下物理地址怎么求
时间: 2024-05-19 16:12:13 浏览: 60
在8086中,物理地址可以通过以下三种情况求解:
1. 实模式:在实模式下,物理地址等于段地址左移4位加上偏移地址。
物理地址 = 段地址 x 16 + 偏移地址
例如,若段地址为0x1000,偏移地址为0x0050,则物理地址为:
物理地址 = 0x1000 x 16 + 0x0050 = 0x10050
2. 保护模式:在保护模式下,物理地址需要通过分段机制来计算。首先,需要从全局描述符表(GDT)或局部描述符表(LDT)中获取段描述符,然后从段描述符中获取段基址和偏移地址。最后,将段基址和偏移地址相加即可得到物理地址。
物理地址 = 段基址 + 偏移地址
3. 虚拟8086模式:在虚拟8086模式下,物理地址的计算方式与实模式相同,即物理地址等于段地址左移4位加上偏移地址。但是,与实模式不同的是,虚拟8086模式下的段地址是由虚拟段寄存器提供的,而非真实的段寄存器。
相关问题
汇编语言物理地址形成方法
汇编语言的物理地址形成方法主要是通过段地址和偏移地址来计算得出。在实模式下,物理地址由一个16位的段地址和一个16位的偏移地址组成,其中段地址乘以16(左移4位)的结果再加上偏移地址即可得到物理地址。
例如,如果一个程序想要访问内存地址0x12345,首先需要将这个地址拆分成段地址和偏移地址。假设段地址为0x1000,偏移地址为0x2345,则需要将段地址左移4位(相当于乘以16),得到0x10000,然后再将偏移地址0x2345加上该值,即可得到物理地址0x12345。
需要注意的是,在保护模式下,物理地址的形成方法与实模式略有不同。在保护模式下,CPU会通过段描述符中的基址和偏移量来计算出线性地址,然后再通过页表映射得到物理地址。
汇编语言段和偏移求物理地址,以及取出的数据运算
在汇编语言中,物理地址可以由段地址和偏移地址相加得出。具体的计算方法如下:
物理地址 = 段地址 x 16 + 偏移地址
其中,段地址和偏移地址都是16位的值。在计算时,需要将段地址左移4位(即乘以16),然后与偏移地址相加,得到的结果即为物理地址。
例如,假设段地址为0x1000,偏移地址为0x0010,则物理地址为:
0x1000 x 16 + 0x0010 = 0x10010
在取出数据时,可以使用指令如MOV、ADD等来进行运算。例如,要将物理地址0x10010处的数据加上一个值,可以使用如下指令:
MOV AX, [0x10010] ; 将0x10010处的数据读入AX寄存器
ADD AX, 10 ; 将AX寄存器中的值加上10
MOV [0x10010], AX ; 将AX寄存器中的值写回0x10010处
这段代码的作用是将0x10010处的数据加上10,并将结果写回该地址处。