汇编:查找字符在一个字符串中第一次出现的位置。 哪里出错了,结果不正确始终。。求助求助

2024-12-22 16:17:43
推荐回答(1个)
回答1:

一个很简单的错误:
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