这段代码可以执行。可结果补台对。解决办法

这段代码可以执行。。可结果补台对。。
题目的原意是把dataeg段每一行前4个小写字母改成大写
我一步一步跟踪可除了第一行改了,后面的还是老样子。。。好像是ds的数据读的不对
哪位大大有时间帮忙跑跑。。。
assume cs:codesg,ss:stackeg,ds:dataeg

stackeg segment
  dw 0,0,0,0,0,0,0,0
stackeg ends

dataeg segment
  db '1. display '
  db '2. brows '
  db '3. replace '
  db '4. modify '
dataeg ends

codesg segment
  start:mov ax,stackeg
  mov ss,ax
  mov sp,10h
   
  mov ax,dataeg
  mov ds,ax
  mov cx,4
  mov bx,0
  s:push cx
  mov si,0
  mov cx,4
  s0:mov al,[bx+3+si]
  and al,11011111b
  mov [bx+3+si],al
  inc si
  loop s0
  add bx,16h
  pop cx
  loop s
  mov ax,4c00h
  int 21h
codesg ends
end start

------解决方案--------------------
自己动手,丰衣足食!