小弟我想请问一下关于汇编传送字符串的有关问题

我想请教一下关于汇编传送字符串的问题
就是,我自己编写了一个程序在下面:
assume cs:code

data segment
db 16 dup (0)
data ends

code segment
start:

  mov ax,0f000h
mov ds,ax
mov si,0ffffh
mov ax,data
mov es,ax
mov di,15
mov cx,16

  std 
  rep movsb

  mov ax,4c00h
  int 21h  
code ends

end start
这个程序一切正常,最后在debug中也正常的调试,复制的结果也是一样的。
但是,我突然想改变一下程序。将cx赋值为8 ,movsb改变为movsw。这样循环次数就编程8次了。
结果,通过了编译以及连接,最后在debug中间单步调试的过程中出现了问题。于是我重新debug这个程序,想直接通过
g命令到 mov ax,4c00h这个地方,结果,用g命令+mov ax,4c00h这行命令的ip之后,直接就退出了debug。我真的是百思不得其姐啊。

------解决方案--------------------
这么改的话,SI 就不能是 0ffffh 了而应该是 0fffeh 吧;否则从 ds:[si] 处取一个 word 时,首先结果就不对了,其次看样子是指令内寻址越界或是回绕引发了访问异常。DI 也是一样地有第一类问题。