一个很简单的错误:
mov ax,[si]
cmp ax,'b'
你一次往ax里放的是一个字,即两个字节,那什么时候都不会跟'b'相等的。
另外,不能显示中文。
程序修改如下:
.model small
.stack
.data
str1 db 'abcdefg','$'
str2 db 'the first occurence place of letter a is: ','$'
str3 db 'letter not existing in the string','$'
.code
start: mov ax,@data
mov ds,ax
mov bl,1
mov cx,7
mov si,offset str1
L1: mov al,[si]
cmp al,'b'
JE L2 ;等于就输出位置
inc si
inc bl
loop L1
mov dx,offset str3
mov ah,09h ;全部不匹配即不存在
int 21h
jmp EXIT
L2: mov dx,offset str2
mov ah,09h ;提示输出
int 21h
add bl,30H
mov dl,bl
mov AH,02H
int 21H ;输出索引号
jmp EXIT
EXIT: mov ah,4ch
int 21h
end start