
编写一个汇编语言程序,它先接受一个字符串然后显示其中数字字符的个数,英文字母的个数和字符串的长度
1个回答
展开全部
CODE SEGMENT
ASSUME CS:CODE
ORG 100H
START: JMP BB
INSTR0 DB 256 DUP(' ')
DB 10,13,'$'
INNUM DW 0
LETSTR DB 10,13,'Letter:'
LETTER DB 256 DUP(' ')
LETTERNUM DW 0
NUMSTR DB 10,13,'Number:'
NUMBER DB 256 DUP(' ')
NUMBERNUM DW 0
OTHSTR DB 10,13,'Othser:'
OTHER DB 256 DUP(' ')
OTHERNUM DW 0
LFCR DB 10,13,'$'
BB: PUSH CS
POP ES
PUSH CS
POP DS
LEA DI,INSTR0
BB1: MOV AH,1
INT 21H
CMP AL,13
JE NEXT1
MOV [DI],AL
INC WORD PTR[INNUM]
INC DI
JMP BB1
NEXT1:
LEA SI,INSTR0
MOV CX,INNUM
LP:
CMP BYTE PTR[SI],'0'
JL N2
CMP BYTE PTR[SI],'9'
JG N2
MOV AL,[SI]
MOV DI,NUMBERNUM
MOV BYTE PTR NUMBER[DI],AL
INC WORD PTR[NUMBERNUM]
JMP N5
N2:
CMP BYTE PTR[SI],'a'
JL N3
CMP BYTE PTR[SI],'z'
JG N3
MOV AL,[SI]
MOV DI,LETTERNUM
MOV BYTE PTR LETTER[DI],AL
INC WORD PTR[LETTERNUM]
JMP N5
N3:
CMP BYTE PTR[SI],'A'
JL N4
CMP BYTE PTR[SI],'Z'
JG N4
MOV AL,[SI]
MOV DI,LETTERNUM
MOV BYTE PTR LETTER[DI],AL
INC WORD PTR[LETTERNUM]
JMP N5
N4:
MOV AL,[SI]
MOV DI,OTHERNUM
MOV BYTE PTR OTHER[DI],AL
INC WORD PTR[OTHERNUM]
N5:
INC SI
LOOP LP
MOV DI,LETTERNUM
MOV BYTE PTR LETTER[DI+1],'$'
MOV DI,NUMBERNUM
MOV BYTE PTR NUMBER[DI+1],'$'
MOV DI,OTHERNUM
MOV BYTE PTR OTHER[DI+1],'$'
MOV AH,9
LEA DX,LETSTR
INT 21H
MOV AH,9
LEA DX,NUMSTR
INT 21H
MOV AH,9
LEA DX,OTHSTR
INT 21H
LEA DX,LFCR
MOV AH,9
INT 21H
MOV AX,[INNUM]
CALL DISPAX
MOV AH,4CH
INT 21H
;===============================================
; 将要显示的无符号数置于 ax 中
DISPAX PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH SI
PUSH DI
PUSH BP
PUSHF
PUSH DS
PUSH CS
POP DS
MOV BYTE PTR NZ,0
PUSH AX
LEA SI,DIVARR
MOV CX,5
@1:
POP AX
MOV DX,0
MOV BX,[SI]
DIV BX
PUSH DX
CMP AL,0
JNE @2
CMP BYTE PTR NZ,1
JE @2
CMP CX,1
JE @2
MOV DL,20H
JMP @3
@2:
ADD AL,30H
MOV DL,AL
MOV BYTE PTR NZ,1
@3:
MOV AH,2
INT 21H
INC SI
INC SI
LOOP @1
POP DX
POP DS
POPF
POP BP
POP DI
POP SI
POP DX
POP CX
POP BX
POP AX
RET
DIVARR DW 10000,1000,100,10,1
NZ DB 0
DISPAX ENDP
;------------------------------------------
CODE ENDS
END START
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询