assume cs:code,ds:data,ss:stack
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
data segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
data ends
code segment
start:mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,16
mov si,0
mov bx,0
mov cx,4
s0:push cx
mov cx,4
s:mov al,[bx+si+3] //bx相当于行 si控制列 3表示起始地址
and al,11011111b
mov [bx+si+3],al //刚开始忘了这一条指令 导致修改了al里面的内容 却没有实质上修改data段的内容
inc si
loop s
add bx,16 //刚开始写的是 inc ds 编译器报错 显然不能直接对段寄存器加减
pop cx
mov si,0 //一开始就已想到 每进入新的一行si要从头开始
loop s0
mov ax,4c00h
int 21h
code ends
end start
程序目的:把data段每个单词的前4个字母变成大写