DATAS SEGMENT
;此处输入数据段代码
table db 100
db ?
db 99 dup(0)
char db ?
N db ?
crlf db 0dh, 0ah, '$'
str1 db "please input the string: $"
str2 db "please input a char : $"
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
lea dx, str1 ;屏幕输出str1
mov ah,09h
int 21h
lea dx,table ;输入字符串
mov ah,0ah
int 21h
call disp_crlf ;回车换行
lea bx, table+1
next:
lea dx, str2 ;屏幕输出str2
mov ah,09h
int 21h
mov ah, 01 ;输出一个字符char
int 21h
mov char, al
call disp_crlf
call calculate ;计算table中含char的个数N
mov dl, N ;输出N
add dl, 48
mov ah, 2
int 21h
call disp_crlf
jmp next
MOV AH,4CH
INT 21H
;*******************************************
;计算table中含字符char的个数,char为用户输入的一个字符
calculate proc
push ax
push cx
push di
mov N, 0
mov cx, [bx] ;字符串的大小送cx
mov di, 2
mov al, char
again:
cmp al, table[di]
jnz noadd
inc N
noadd:
inc di
loop again
pop di
pop cx
pop ax
ret
calculate endp
;********************************************
disp_crlf proc ;显示回车换行符子程序
push dx
push ax
lea dx, crlf
mov ah, 09
int 21h
pop ax
pop dx
ret
disp_crlf endp
;********************************************
CODES ENDS
END START |