
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 = 5000HBP + 5 = 0050H + 5 = 0055H(SS * 16) + (BP + 5) = 5000H * 10H + 0055H = 50000H + 0055H = 50055H因此,物理地址是50055H。
BP,因此段寄存器为DS。DS = 3000HBX + SI + 5 = 0300H + 0200H + 5 = 0505H(DS * 16) + (BX + SI + 5) = 3000H * 10H + 0505H = 30000H + 0505H = 30505H因此,物理地址是30505H。
BP或其他偏移寄存器,所以段寄存器为默认的DS。DS = 3000H2000H(DS * 16) + 2000H = 3000H * 10H + 2000H = 30000H + 2000H = 32000H因此,物理地址是32000H。
BP寄存器,所以段寄存器为SS。SS = 5000HBP + 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。