Red de conocimiento informático - Conocimiento sistemático - 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.

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

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>

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