📄 68.asm
字号:
data segment
table db 30 dup(?)
n dw 30
char db ?
data ends
code segment
main proc far
assume cs:code,ds:data
start:push ds
xor ax,ax
push ax
mov ax,data
mov ds,ax
mov si,0 ;地址指针
mov cx,n
input:mov ah,1
int 21h ;从键盘接受一个字符
mov table[si],al ;将其存放在数组table中
inc si
loop input
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
int 21h ;输出换行回车符
find: mov ah,1
int 21h ;从键盘输入字符char
mov char,al
mov dl,0dh ;输出换行回车
mov ah,2
int 21h
mov dl,0ah
int 21h
mov dl,char ;在下一行输出字符char
int 21h
call count ;调用子程序count
cmp dl,0 ;出口参数dl
je exit ;若字符串中无该字符,结束程序
add dl,30h ;否则将出现次数转换成相应的ASCII值
cmp dl,39h
jna output
add dl,7
output:mov ah,2 ;输出char在字符串中出现的次数
int 21h
jmp find
exit: ret
main endp
count proc near
push si
push cx
push ax
mov si,0
mov cx,n
mov al,char
c1: cmp al,table[si]
jne c2
inc dl ;dl是出口参数,统计char在字符串中出现的次数
c2: inc si
loop c1
pop ax
pop cx
pop si
ret
count endp
code ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -