8086汇编中DEBUG的D命令问题

因为汇编程序在显示器上输出内容相当麻烦,所以写汇编就离不开DEBUG的帮助。
DEBUG中的D命令被用来显示内存单元的内容。
对于这个比较常用的命令,我在使用时却遇到了一点小问题,默认不指定地址的情况下与教材描述不符。

原文

(1) 若 D 命令中有指定地址,则从指定地址开始显示;否则若没有指定地址,则从上一次 D 命令显示的最后单元的下一个单元开始显示,否则从 DS:100H 地址开始显示 128 个单元的内容。
(2) 若不指定段地址,则默认段地址是 DS。

代码

dseg    segment
data    db      170, 170, -1, -1
num     db      1
dseg    ends

cseg    segment
        assume  cs:cseg, ds:dseg
start:  mov     ax, dseg
        mov     ds, ax
        inc     num
        mov     ah, 4ch
        int     21h
cseg    ends
        end     start

测试

按照教材上关于DEBUG的描述,若没有指定地址,且是第一次运行D命令,那么会从DS:100H地址开始显示 128 个单元的内容。
但是在自己电脑上面尝试DEBUG的结果与预期不符,为防止是本地 DOSBox 环境的影响,我又在实验课上利用实验室的 WinXP 直接运行DEBUG测试了上面的代码,结果依然与预期不符: debug_d_1 R命令查看DS的段地址为13DD,但是在单独使用D命令的话,显示的却是从13EE:0000开始的内容。而D 0则没什么问题。
在询问实验课老师之后,老师猜测是因为代码开始时数据段尚未初始化的问题,所以我又尝试了在DEBUG中先使用两次T命令进行单步执行,待初始化代码段之后再使用单独的D命令,结果如下: debug_d_2 依然没有找到所谓的DS:100H
准备写博客时偶然想到会不会教材上是指直接运行DEBUG命令,而不是针对某个具体的程序?手上没有 WinXP,就在自己的 DOSBox 上试了下: debug_d_3 诶!这里的0740:0100不就是DS:100H吗?为了验证,我尝试修改了DS的内容: debug_d_4 空欢喜一场,甚至刚打开DEBUG后我先将DSESSSCS都从0740修改为0750,单独的D命令显示还是从0740开始。
最后尝试去查找DEBUG的子命令说明,遇到了微软的过期网页,不过还好在 MSDN 的一个页面找到了不知道多久以前的说明。

If you do not specify range, Debug displays the contents of 128 bytes, starting at the end of the address range specified in the previous d command.

For each subsequent d command you type without parameters, Debug displays the bytes immediately following those last displayed.

这里一直在强调使用不带有任何参数的D命令时,从上一次D命令显示的末尾地址下一个开始继续,并没有提到首次使用且未指定地址时D命令的表现。

总结

到最后也没有弄明白教材上的DS:100H是在什么情况下的D命令默认显示,微软官网也没有涉及首次使用且未指定地址的D命令的默认显示内容,就权当DEBUG时首次使用D命令必须指定地址吧。