物理地址是如何生成的?
存储单元的20位物理地址是通过将16位的“段基值”左移4位再加上16位的“段内偏移量”而生成的。可分为以下几种情况:(1)当取指令时,8086会自动选择CS值作为段基值,再加上由IP提供的偏移量形成物理地址;(2)当涉及堆栈操作时,8086会自动选择CS值作为段基值,再加上由SP提供的偏移量形成物理地址;(3)当涉及一个操作数(存储器操作数)时,8086会自动选择DS值作为段基值,再加上16住偏移量形成物理地址,这16位偏移量可以来自:指令中提供的直接地址——16位的位移量;某一个16位地址寄存器的值;指令中的位移量加上16位地址寄存器之值。(4)ES用于串操作指令中的数据块传送指令。(5)当存储器操作数中偏移量采用BP为地址寄存器时,8086会自动选择SS值为段基值,再加上以BP为基址的16位偏移量形成物理地址。