📄 string.asm
字号:
DATAS SEGMENT
countSum db 0
countNum db 0
countStr db 0
countOth db 0
messgSum db 'Sum: $'
messgNum db 'Num: $'
messgStr db 'Str: $'
messgOth db 'Oth: $'
crlf db 13,10,'$'
Str db 0
;此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
mov cx,21
xor di,di
input:
mov ah,01h
int 21h
cmp al,0dh
je result
inc countSum
cmp al,61h
jge cmpLStr
cmp al,41h
jge cmpGStr
cmp al,30h
jge cmpNum
loop input
cmpLStr:
cmp al,7ah
jg input
inc countStr
mov [Str+di],al
inc di
loop input
cmpGStr:
cmp al,5ah
jg input
inc countStr
mov [Str+di],al
inc di
loop input
cmpNum:
cmp al,39h
jg input
inc countNum
mov [Str+di],al
inc di
loop input
result:
lea dx,crlf
mov ah,09h
int 21h
mov [Str+di],'$'
lea dx,Str
mov ah,09h
int 21h
lea dx,crlf
mov ah,09h
int 21h
mov al,countOth
mov dl,countSum
add al,countNum
add al,countStr
sub dl,al
mov countOth,dl
lea dx,messgSum
mov ah,09h
int 21h
mov al,countSum
call print
lea dx,messgStr
mov ah,09h
int 21h
mov al,countStr
call print
lea dx,messgNum
mov ah,09h
int 21h
mov al,countNum
call print
lea dx,messgOth
mov ah,09h
int 21h
mov al,countOth
call print
jmp exit
print proc near
mov ah,0h
mov bl,10
idiv bl
mov dx,ax
add dl,30h
mov ah,02h
int 21h
mov dl,dh
add dl,30h
mov ah,02
int 21h
lea dx,crlf
mov ah,09h
int 21h
ret
print endp
exit:
mov ah,7
int 21h
MOV AH,4CH
INT 21H
CODES ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -