📄 counta.asm
字号:
DATA SEGMENT
BUFF DB 50
DB 0
DB 50 DUP(?)
SHOW1 DB 'Input A String: $'
SHOW2 DB 'The Sum of Character A is: $'
SUMA DB 0,0
DATA ENDS
;------------------------------------
STACK SEGMENT PARA STACK 'STACK'
DB 100 DUP( ? )
STACK ENDS
;------------------------------------
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
MAIN PROC FAR
START: PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
;----------------------------------------
CALL CRLF
LEA DX,SHOW1
MOV AH,09H
INT 21H
MOV DX,OFFSET BUFF
MOV AH,0AH
INT 21H
MOV SI,OFFSET BUFF+2
MOV CX,[SI-1]
AND CX,00FFH
NEXT: MOV AL,[SI]
CMP AL,'A'
JE COUNT
RTN: INC SI
LOOP NEXT
MOV SUMA[1],-1
COUNT: MOV BL,SUMA[0]
INC BL
MOV SUMA[0],BL
CMP SUMA[1],-1
JE EXIT
JMP RTN
EXIT: CALL CRLF
MOV DX,OFFSET SHOW2
MOV AH,09H
INT 21H
MOV DL,SUMA[0]
DEC DL
CMP DL,09H
JBE NUMS
ADD DL,06H
PUSH DX
AND DL,0F0H
MOV CL,4
SHR DL,CL
ADD DL,30H
MOV AH,02H
INT 21H
POP DX
NUMS: AND DL,0FH
ADD DL,30H
MOV AH,02H
INT 21H
CALL CRLF
RET
MAIN ENDP
;-----------------------------------
CRLF PROC NEAR
MOV DL,0AH
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H
RET
CRLF ENDP
;------------------------------------
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -