调试通过!
DATAS SEGMENT
STR db 'anfasdfABCDEKbMDNFKH',80 dup(0)
m1 db 0dh,0ah,'$'
m2 db 'ABCDE'
num db 0,0,0
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
lea si,STR ;查找 返回cx字符起地址 cx=0没找到
mov cx,100
s1:
lea di,m2
mov bp,0 ;bp为一个dx循环查找失败后dx的循环次数
mov dx,5 ;一个dx循环失败后再由cx减去它
s2: ;使终让cx指向没比较过的字符个数
cmp dx,0 ;如果比较成功cx指向以0开始的字符串的位置
jz s3
mov al,[si]
inc si
cmp al,[di]
jnz s4
inc di
inc bp
dec dx
jmp s2
s3:
mov ax,100
sub ax,cx
mov cx,ax
jmp s5
s4:
sub cx,bp
loop s1
s5:
cmp cx,0 ;判断cx的值 0为没找到
jz s8 ;如果为非零转换为十进制输出
mov ax,cx ;cx里的地址以0开始
xor cx,cx
lea si,num+3
s6: ;每次将余数倒序存入num
mov bl,10
div bl
add ah,30h
mov [si],ah
mov ah,0
dec si
inc cx
cmp al,0
jnz s6
inc si
s7: ;然后依次显示num里的值
mov dl,[si]
inc si
mov ah,2
int 21h
loop s7
jmp s9
s8:
mov dl,30h ;没找到显示0
mov ah,2
int 21h
s9:
mov ah,0 ;等待输入
int 16h
MOV AH,4CH
INT 21H
CODES ENDS
END START
温馨提示:答案为网友推荐,仅供参考