本帖最后由 Pojie1999.0909 于 2020-12-22 08:38 编辑
[Asm] 纯文本查看 复制代码
;用debug查看内存,结果如下:
;2000:1000 BE 00 06 00 00 00 ......
;程序代码如下:
mov ax,2000H
mov ds,ax
mov bx,1000H
mov si,0
mov ax,[bx+si] ;此时ax的内容是00BE,这个我明白,因为[bx+si]也就是2000:1000处的字节是BE,所以给ax赋值后,ax的内容是00BE
inc si ;si自增1,此时si是1
mov cx,[bx+si] ;[bx+si]此时的物理地址是2000:1001,而2000:10001处的字节是00呀,为什么给cx赋值后,cx的内容不是0000,而是0600呢?这个我不明白呀。。
程序执行完,寄存器cx中的内容是什么?是0000还是0600?书中给出的答案是0600,我用debug执行之后,发现也是0600。
内存情况
汇编代码
ax执行情况1
cx执行情况1
但是从内存中看,2000:1001处的字节不是00吗?那cx不应该是0000吗?为什么会是0600呢?
求大佬们指点一下!
|