📄 lm2.asm
字号:
STACK SEGMENT PARA STACK 'STACK'
DW 128 DUP(?)
STACK ENDS
;**************************************************************
EXTRA SEGMENT PARA 'EXTRA'
EXTRA ENDS
;**************************************************************
DATA SEGMENT PARA 'DATA'
string1 db '* * * Input a string : ',0dh,0ah,'$'
a db 100 dup(?)
string2 db 0dh,0ah,'* * * The number of the word computer is: ',0dh,0ah,'$'
DATA ENDS
;**************************************************************
CODE SEGMENT PARA 'CODE'
ASSUME CS:CODE,DS:DATA,SS:STACK,ES:EXTRA
MAIN PROC FAR
START:
Push ds
Sub ax,ax
Push ax
MOV AX,DATA
MOV DS,AX ;Let DS register have data segment address
MOV AX,EXTRA
MOV ES,AX ;Let ES register have extra segment address
;**************************************************************
lea dx,string1 ;字符提示输入字符串
mov ah,09h
int 21h
mov si ,0
mov di,0
mov bx,0
input: mov ah,01h ;从键盘接收字符,并将输入的字符逐个输入定义的缓冲区a中
int 21h
mov a[bx],al
cmp al,24h ;当输入的字符为$时,结束输入,进入字符串的比较
je compare
inc bx
inc si ;记录下输入的字符串的长度
jmp input
compare:
mov cx,si ;用字符串的长度当循环控制条件,并对记录含"computer"的个数进行初始化
mov si, 0
jmp compareC ;从字符串的第一个字符开始逐个进行比较当中含有"computer"
l1: inc si ;的个数,当不匹配则跳回从c开始比较
cmp si,cx
jg output
compareC: cmp a[si],63h
jne l1
inc si
compareO: cmp a[si],6fh
jne l1
inc si
compareM: cmp a[si],6dh
jne l1
inc si
compareP: cmp a[si],70h
jne l1
inc si
compareU: cmp a[si],75h
jne l1
inc si
compareT: cmp a[si],74h
jne l1
inc si
compareE: cmp a[si],65h
jne l1
inc si
compareR: cmp a[si],72h
jne l1
inc di
jmp l1
output:
lea dx,string2 ;提示字符串中含有"computer"的字符个数是i
mov ah,09h
int 21h
mov bx,di ;将记录的个数赋给bx,并将其转化为十进制输出
mov cx,10d ;因考虑字符长度中做多不会超过100个"computer"
call dec_div ;故只用两位十进制数表示
mov cx,1d
call dec_div
ret
MAIN ENDP
;**************************************************************
dec_div proc near
mov ax,bx ;对数据除权,加ascII,即进行二进制到十进制的转换
mov dx,0
div cx
mov bx,dx
mov dl,al
add dl,30h
mov ah,02h
int 21h
ret
dec_div endp
;**************************************************************
mov ah,4ch
int 21h
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -