关于汇编语言源操作数的问题

来源:百度知道 编辑:UC知道 时间:2024/06/22 05:19:28
指令MOV AX,10[BP][SI]的源操作数所在的逻辑段是()
A.数据段 B.附加段 C.堆栈段 D.代码段
我知道SI是数据段,BP是堆栈段,但是加在一起就不知道了。
答案给的是D。

应该是C。
在debug中试了一下。

test.asm

assume cs:codesg

codesg segment
start:
mov ax,10[bp][si]

mov ax,4c00h
int 21h
codesg ends

end start

debug test.exe
-r
AX=0000 BX=0000 CX=0008 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0B58 ES=0B58 SS=0B68 CS=0B68 IP=0000 NV UP EI PL NZ NA PO NC
0B68:0000 8B420A MOV AX,[BP+SI+0A] SS:000A=868D

你看这一句SS:000A=868D,就知道是堆栈段

答案应该是C,不会错的

肯定是堆栈段!!!
指令中如果有基址寄存器BP来作为地址寄存器时,默认段地址是堆栈段。答案是错误的。