;Fuente del título:/question/question/127760427.html
;Descripción del programa:
;1. Solicite ingresar un artículo en inglés de no más de 254 caracteres;
; 2. Cuente el número de apariciones de cada letra, trate las letras mayúsculas y minúsculas como letras diferentes (los caracteres no alfabéticos no se cuentan) y convierta letras mayúsculas y minúsculas entre sí. .
; 3. Suena según diferentes letras y horas;
4. Muestra el artículo en inglés convertido.
; El programa fue compilado y depurado en el entorno integrado de MASMPlus 1.2 y se ejecutó correctamente.
Segmento de código
Asumir CS: Código, DS: Código
-
; ( Str_Addr)
; Entrada:
; Str_Addr= = Dirección de cadena (requerida en el segmento de datos)
; Uso: Dirección de cadena de salida
; Ejemplo de uso: Salida PromptStr
Dirección de cadena de macro de salida
lead dx, Str_address
mov ah, 9
int 21h
EndM
; -
; Función: generar un carácter.
;Entrada: dl=Carácter a mostrar
Cerca de Output_Chr proc
Hacha de empuje
mov ah, 02h
int 21h
Barril explosivo
Remojado en agua para suavizar
Output_Chr endp
;-
;Función: retorno de carro de salida y avance de línea
Enfoque Output_CTLF
Empujar hacha
Empujar dx
mov ah, 02h
mov dl, 0dh
int 21h
mov dl, 0ah
int 21h
Dx popular p>
Barril explosivo
Remojado en agua para suavizarlo
Output_CTLF endp
-
; El número binario sin signo se convierte en código ASCII decimal explícito y se envía a la pantalla para su visualización.
; Entrada: AX=número binario
; Salir: Muestra el código ASCII convertido en la posición actual del cursor.
Cerca de Dec_ASCII Proc
Push ds
Push cs
Cámara digital popular
Push cs
Elementos populares
Push dx
Push bx
Push di
mov bx, 10
lea di, @@Temp_Save[6]
mov byte pointer[di], '$'
2 de diciembre
cld p>
@@Dividir: xor dx, dx
División bx
o dl, 30h
mov [di], dl
Diciembre 2
Prueba ax, 0ffffh
jnz @ @except
Empresa di
Recomendar di
pop dx
mov ah, 9
int 21h
pop di
pop bx
Popular dx
Cámara digital popular
Remojada en agua para suavizarla
@@Temp_Save db 7 dup(?)
Dec_ASCII EndP
-
Función: descubre si aparece la letra especificada y cuenta el número de apariciones.
; parámetro de entrada: AL=letra especificada.
Static_letter adelante acercándose
Pulsar cx
Pulsar bx
mov bx, Aparece Letter_Table, letras y su hora y dirección.
mov cx, letras; el número de letras diferentes que aparecen.
jcxz@@primera vez
@@Find_Letter: cmp al,[bx]
jnz $7
inc bytes ptr[bx ][1]; Cuenta 1 vez
jmp @ @ Se encuentra, cuenta 1 vez y regresa.
Compañía bx
Compañía bx
bucle @@Find_Letter
@@First_Time: mov [bx], al; , agregando estadísticas.
mov byte ptr [bx][1], 1; cuenta 1 vez
inc letras; el número de letras diferentes que aparecen 1
@@Encontrado: pop bx
pop cx
remojado en agua para suavizar
static_letterEndp
;-
; : Retrasa los tics del reloj especificado.
Entrada:
Didas = tics del reloj (18,2 tics en 1 segundo, 182 tics en 10 segundos.
Si el retraso no es varias veces 10 segundos, el error es ligeramente mayor)
El retraso hacia adelante está cerca
Empuje dx
Empuje cx
XOR ax, ax
int 1ah
Película cs: @@Times, dx
mov cs: @@Times[2], cx p>
Read_Time: XOR ax, ax
int 1ah
Subdx, cs: @@times
sbb cx, cs: @@Times[ 2 ]
cmp dx, Didas
jb tiempo de lectura
Popular cx
Popular dx
Empapado suave
@@Times dw 0, 0
final retrasado
; -
didas = 3 reloj corriendo
Forma_letra dw? ;Las cartas tal como aparecieron, junto con su hora y dirección.
Letra dw 0; el número de letras diferentes que aparecen.
Prompt_Str db 'Ingrese una cadena:',13,10,'$'
"Presione db 7,13,10,13,10", se quejó el demandante. Presione cualquier tecla para salir...$'
;-
Inicio: presione cs
Cámara digital popular
Presione cs< / p>
Elementos populares
Mensaje de salida _ Str Mensaje del artículo en inglés
lea dx, buffer; dirección del búfer de cadena del artículo en inglés
Ah, 0ah
int 21h
Salida de llamada _ CTLF; retorno de carro de salida y caracteres de avance de línea
lea si, Buffer[1]; dirección
cld
lodsb lee este número
mov di, si
Movie cl, al
XOR ch , ch
Agrega di, cx
inc letras di y su hora y dirección.
mov letter_table, di; guarda esta dirección
Traducción: lodsb lee un carácter
mov ah, al
O ah, 20h se procesa con letras minúsculas
cmp, ' a '
jb Siguiente _ Uno no es una letra, no hay conversión.
cmp ah, 'z'
ja Siguiente _ Uno no es una letra, no hay conversión.
Llame a Statics_Letter para averiguar si aparece la letra especificada y cuente el número de apariciones.
xor al, descripción de la clave 20h: minúscula a mayúscula, mayúscula a minúscula
mov [si-1], al; escribir de nuevo en la posición original
Siguiente: Traducción en bucle
mov byte ptr[si], ' $ '; reemplace el retorno de carro con ' $ '
mov cx, número de letras diferentes que aparecen.
mov si, Carta_Tabla aparece en la carta con su hora y dirección.
disp_Letter: lodsw; lee una palabra
mov dl, al; la letra que aparece
Llama a Output_Chr para mostrar un carácter
Move dl, ':'
Llamar Output_Chr
mov dl, 7; código de carácter de timbre
Llamar Output_Chr
Operación XOR
p>
xchg al, ah; AX = el número de veces que aparece la letra.
Llame a Dec_ASCII para convertir el número binario sin signo en AX en código ASCII decimal explícito y enviarlo a la pantalla para su visualización.
Retraso de llamada; retraso de un sexto de segundo
Salida de llamada_CTLF
Visualización de letras en bucle
Salida de llamada_CTLF
p>Búfer de salida[2]; genera el artículo convertido.
;-
Exit_Proc: La salida Press_Key indica que la operación se completó, presione cualquier tecla para finalizar el programa.
mov ah, 1
int 21h
mov ah, 4ch fin del programa
int 21h
Buffer Base de datos 255; búfer en libras esterlinas.
Fin del código
El fin comienza; este es el final de la compilación