发现在执行完 mov ds,ax 后 ds的地址发生了变化 在此之前还要 用d ds:100来查看内容
而之后仅需 d ds:0来查看就好
完整代码如下
assume cs:code,ss:stack,ds:data
;将每一行的前四个单词变为大写
data segment
;0123456789abcdef
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
data ends
stack segment
dw 0,0,0,0
dw 0,0,0,0
stack ends
code segment
;循环四次
start: mov ax,stack
mov ss,ax
mov sp,16
mov ax,data
mov ds,ax
mov bx,0 ;用于判断行
mov cx,4 ;外循环四次
s0: push cx
mov cx,4 ;设置内循环次数
mov si,3
s: mov al,ds:[bx+si] ;错误点!!!
and al,11011111b
mov ds:[bx+si],al
inc si
loop s
add bx,16 ;换行
pop cx ;行循环次数减一
loop s0
mov ax,4c00h
int 21h
code ends
end start