编写一个子程序统计数据段中字符串中字母‘b’的个数,并编写主程序用近调用的方法调用子程序.子程序的参数是字符串的首地址TABLE,字符串长度N及字符”b”.子程序返回字符"b”的个数.参数传送采用堆栈实现.主程序在子程序返回后,显示字符”b”及其个数(设为一位十六进制数).
程序如下 但不能正确输出结果,请各位大侠帮帮忙
DATA SEGMENT
TABLE DB 'BDADKFBALSB'
N EQU $-TABLE
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
LEA SI,TABLE
PUSH SI
MOV CX,N
PUSH CX
MOV AX,'B'
PUSH AX
CALL COUNT
POP DX
ADD DL,30H
MOV AH,02H
INT 21H
MOV AH,4CH
INT 21H
COUNT PROC NEAR
MOV BP,SP
MOV BL,0
MOV AX,[BP+2]
MOV CX,[BP+4]
MOV SI,[BP+6]
MOV DL,[SI]
LOP: CMP AL,DL
JZ COUNT1
JMP NEXT
COUNT1:INC BL
NEXT: INC SI
LOOP LOP
MOV [BP+2],BL
RET
COUNT ENDP
CODE ENDS
END START