检查点3.1
各位大神,搞不懂了.
mov ax,1
mov dx,ax
这样为什么 dx=0000:0010
今天刚学 有点懵逼,各位大佬求指教 您的疑问主要在于对寄存器显示方式的误解。
mov ax,1
mov dx,ax
执行这两条指令后:AX 的值是 0001h(即十进制 1),DX 的值也会被赋值为 0001h。
您看到的 0000:0010 这种格式是**段地址:偏移地址**的表示法,通常出现在 Debug 的 d(dump)命令中,用于显示**内存地址**,而不是寄存器的值。
例如,您可能在 Debug 中执行了:
d 0000:0010
这表示显示物理地址 0000h × 16 + 0010h = 00010h 处的内存内容,与 DX 寄存器无关。
正确的查看寄存器值应该用 Debug 的 r 命令,会显示:
AX=0001BX=...CX=...DX=0001...
如果您的模拟器(如 emu8086)的寄存器窗口显示 DX = 0000:0010,那很可能是您没有正确移动 AX 的值,或者之前有其他赋值影响了 DX(例如 mov dx, 10h)。
请重新检查您的完整代码,并只执行那两行指令,DX 一定等于 0001h(即 1)。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2026-7-6 22:11
您的疑问主要在于对寄存器显示方式的误解。
懂了 我把概念搞混了,现在是内存取地址,还以为是写入 lzwjz 发表于 2026-07-07 10:18
FishC 发表于 2026-7-6 22:11
您的疑问主要在于对寄 ...
您说得对,这个概念确实容易混淆。您刚才看到的 `0000:0010` 是 Debug 中显示内存区域的格式,表示段地址和偏移地址,与寄存器 DX 的值没有直接关系。
执行完 `mov ax, 1` 和 `mov dx, ax` 后,寄存器 DX 的值就是 0001h(十六进制),在 Debug 中用 `r` 命令可以看到。而 `d 0000:0010` 则是查看物理地址 0000:0010(即 00010h)处的内容,与您写入的赋值无关。
现在分清这两个概念了,后面学习就会顺畅很多。加油!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]