Problema de programación en lenguaje ensamblador: use el teclado para ingresar una cadena que contenga una cantidad de letras y números mayúsculas y minúsculas. Es necesario contar cuántos de los tres tipos hay y mostrarlos.
;Utilice el teclado para ingresar una cadena (termina con retorno de carro), que contiene una cantidad de letras mayúsculas, minúsculas y números. Es necesario contar cuántos de los tres tipos hay y mostrarlos.
segmento de datos
mess db 0dh, 0ah, 'Cadena de entrada: $'
sz db 0; número de dígitos
dAx; db 0; número de letras mayúsculas
xXx db 0; número de minúsculas
SZ_C DB 100 DUP ('$')
DX_C DB 100 DUP ('$ ')
XX_C DB 100 DUP ('$')
CRLF DB 0DH, 0AH, '$'
finales de datos
segmento de código
asume cs: código, ds: datos
proceso principal lejos
inicio:
push ds
xor ax, ax
push ax
mov ax, data
mov ds, ax
;----- -------- -----------
llamar a crlf_p
mov ah, 09
mov dx, desplazamiento desorden
int 21h
siguiente:
mov ah, 01
int 21h
CMP AL, 0DH
JNZ GOON
JMP DISP_1; mostrar resultados
GOON:
cmp al,'0'
jl SIGUIENTE
cmp al, '9'
jg NO_0_9
inc SZ
MOV BX, OFFSET SZ_C
MOV CX, 0 p>
MOV CL, SZ
AÑADIR BX, CX
DEC BX
MOV [BX], AL
JMP SIGUIENTE
NO_0_9:
cmp al,'A'
jl SIGUIENTE
cmp al, 'Z'
jg NO_D_AZ
inc DAX
MOV BX, OFFSET DX_C
MOV CX, 0
MOV CL, DAX
AÑADIR BX, CX
DEC BX
MOV [BX], AL
JMP SIGUIENTE
NO_D_AZ:
p>cmp al,'a'
jl SIGUIENTE
cmp al,'z'
jg NO_X_AZ
inc XXX
MOV BX, OFFSET XX_C
MOV CX, 0
MOV CL, XXX
AÑADIR BX, CX
DEC BX
MOV [BX], AL
JMP SIGUIENTE
NO_X_AZ:
JMP NEX
T
DISP_1:
LLAMADA CRLF_P
LLAMADA CRLF_P
mov al, SZ
LLAMADA DISP_CZR p> p>
mov ah, 09
lead dx, SZ_C
int 21h
;----------- -- ----
LLAME A CRLF_P
mov al, DAX
LLAME A DISP_CZR
mov ah, 09
lead dx, DX_C
int 21h
-------------------
CALL CRLF_P
mov al, XXX
CALL DISP_CZR
mov ah, 09
lead dx, XX_C
int 21h
;---------------------
LLAMADA CRLF_P
;- -----------------------
ENDD:
ret
principal endp
p>========================================= =
DISP_CZR PROC NEAR; Mostrar subrutina de número decimal
xor ah, ah
; mov al, num
mov bl, 100d
div bl
empujar hacha
añadir al, 30h
mov dl, al
mov ah, 2
int 21h
pop ax
mov al, ah
xor ah, ah
mov bl , 10d
div bl
añadir hacha, 3030h
empujar hacha
pop dx
mov ah, 2
int 21h
mov dl, dh
int 21h
MOV DL, ':'
INT 21H
mov dl, ' '
int 21h
RET
DISP_CZR ENDP
;== = =======================================
CRLF_P PROC CERCA ; subrutina de retorno de carro y avance de línea
mov ah, 09
LEA DX, CRLF
INT 21H
RET
;CRLF_P ENDP
===================================== ==== ==
el código termina
fin de inicio
Compile con MASM5.0 y conéctese con LINK El siguiente es un ejemplo en ejecución:
p>
Cadena de entrada: DHGFEUUYURYEDBJB834658634853NGFJ8HJHGjsfjdf8fhdjfh
014: 83465863485388
024: DHGFEUUYURYEDBJBNGFJHJHG
012: jsfjdffhdjfh