DS=3000H,ES=4000H,SS=5000H,BX=0300H,BP=0050H,SI=0200H计算下列指令中存储器类型操作数的物理地址。(1)MOV AL,[BP+5] (2)ADD AL,5[BX+SI] (3)MOV BP,[2000H](4)ADD [BP][SI]+20H,AX并详细解释如何选择DS还是SS
要计算给定指令中的存储器类型操作数的物理地址,我们需要理解如何通过段寄存器和偏移寄存器来组合形成物理地址。通常,在8086微处理器中,物理地址由段寄存器内容乘以16,再加上偏移量来计算。具体地说:
DS
(数据段寄存器)、ES
(附加段寄存器)、SS
(栈段寄存器)等。BX
、BP
、SI
、DI
等。通常情况下:
SS
作为段寄存器。BP寄存器
,则默认使用DS
作为段寄存器。接下来我们逐条分析并计算物理地址:
SS
。SS = 5000H
BP + 5 = 0050H + 5 = 0055H
(SS * 16) + (BP + 5) = 5000H * 10H + 0055H = 50000H + 0055H = 50055H
因此,物理地址是50055H。
BP
,因此段寄存器为DS
。DS = 3000H
BX + SI + 5 = 0300H + 0200H + 5 = 0505H
(DS * 16) + (BX + SI + 5) = 3000H * 10H + 0505H = 30000H + 0505H = 30505H
因此,物理地址是30505H。
BP
或其他偏移寄存器,所以段寄存器为默认的DS
。DS = 3000H
2000H
(DS * 16) + 2000H = 3000H * 10H + 2000H = 30000H + 2000H = 32000H
因此,物理地址是32000H。
BP
寄存器,所以段寄存器为SS
。SS = 5000H
BP + SI + 20H = 0050H + 0200H + 20H = 0270H
(SS * 16) + (BP + SI + 20H) = 5000H * 10H + 0270H = 50000H + 0270H = 50270H
因此,物理地址是50270H。
SS
)DS
)DS
)SS
)在计算物理地址时,选择DS
还是SS
的关键在于是否使用了BP
寄存器:如果使用BP
,则默认使用SS
;否则使用DS
。