代码如下
assume cs:codesg,ss:stacksg,ds:datasg
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
datasg ends
codesg segment
start:mov ax,datasg
mov ds,ax
mov ax,stacksg
mov ss,ax
mov sp,10h
mov bx,3h
mov cx,4h
s0:push cx
mov si,0
mov cx,4h
s:mov al,[bx+si]
and al,11011111b
mov [bx+si],al
inc si
loop s
pop cx
add bx,10h
loop s0
mov ax,4c00h
int 21h
codesg ends
end start
值得注意的是,一开始我觉得为什么需要两个变量来表示IP的变化呢?如果只用bx的话,虽然一开始可以通过inc加一,然后到等cx变成0后,又让add bx,10h。然后继续bx加一。问题就在这里,此时的bx已经不是从3开始了,而是从6开始.