Escritura en lenguaje ensamblador: dibujo de formas de onda de pulso (ver detalles)
; Instrucciones de operación: Al iniciar la operación, se deben ingresar cuatro parámetros: altura del pulso, ancho del pulso, ancho del espacio del pulso y color de la línea de onda.
; Rango de valores:
; Altura del pulso: 0 ~ 239
; Ancho del pulso: 0 ~ 320
; : 0 ~ 320
; color de línea ondulada: 1 ~ 15 (consulte la tabla de parámetros de color a continuación)
; si el número de dígitos es 3, la entrada del elemento actual finaliza automáticamente. No se requiere entrada; si hay menos de 3 dígitos, presione la tecla Enter para finalizar la entrada actual.
Segmento de código
Asumir CS:Code, DS:Code
CR EQU 000DH
¿Qué pasa si EQU 000?
KBBack EQU 0008H
-
Oscuro (primer plano y fondo)
Valor constante
Negro EQU 0
Azul EQU 1
Verde EQU 2
Cian EQU 3
Rojo EQU 4
Rojo EQU 5
Marrón·EQU 6
Gris claro EQU No. 7
; color claro (primer plano)
valor constante
Oscuro; gris EQU No. 8
Azul claro EQU No. 9
Verde claro EQU 10
Cian claro EQU 11
Rojo brillante EQU 12
Magenta claro EQU 13
Amarillo EQU 14
Blanco EQU 15
Intermitente EQU 80H
; -
; Función: Mostrar la cadena de la dirección especificada (Str_Addr)
; Entrada:
; )
; Uso: Dirección de cadena de salida
; Ejemplo de uso: Salida PromptStr
Dirección de cadena de macro de salida
p>lea dx, Str_address
mov ah, 9
int 21h
EndM
;-
p>;Función: Salida de retorno de carro y avance de línea
Ingresar cerca de CTLF
Empujar ax
Empujar dx
mov ah, 02h
mov dl, 0dh
int 21h
mov dl, 0ah
int 21h
Dx popular
Barril explosivo
Remojado en agua para suavizarlo
Punto final Enter_CTLF
-
Función: Obtener la posición del cursor
; p>
; Entrada: Ninguna
; Salida: DH=número de línea, DL=número de columna.
Cerca de GetCursor Proc
Empujar hacha
Empujar BX
Empujar CX
BX XOR BX
MOV, 3
INT 10H
MOV cursor_line, DH
MOV cursor_Col, DL
Pop·CX p>
Pop·BX
Barril explosivo
Remojado en agua para suavizarlo
Cursor_Row DB?
Cursor_Col DB?
Obtener el final del cursor
; -
; Función: Establecer la posición del cursor
; Entrada: Cursor_Row=coordenada de fila; coordenadas)
Establecer avance del cursor hacia cerca
Empujar CX
Empujar BX
Empujar Ax
MOV DH, Cursor_Row
MOV DL, Cursor_Column
BX XOR BX
MOV, 2
INT 10H
Barril explosivo
Pop·BX
Pop·CX
Remojado en agua para suavizarlo
SetCursor termina
;-
;Función: Ingrese un número decimal de N dígitos en el teclado, conviértalo en un número binario y guárdelo en la unidad de almacenamiento especificada.
; Entrada: N = número de dígitos; Di = guarda la primera dirección del número ingresado.
;Salir: El número binario convertido se almacena en la unidad indicada por di.
El proceso Input_Digit está cerrado
Push dx
Push cx
Push bx
Push di
lea di, @@Save_Tmp
push di
cld
mov cx, N
push cx
@@Input: Llama a GetCursor para obtener la posición del cursor
mov, 1; acepta un carácter del teclado.
int 21h
cmp aluminio, cromo; si escribes enter, escribes menos de n dígitos.
jz @ @ ASC _ Dec Desplácese hasta el número ingresado.
cmp al, KBBack
jz @ @ KB _ Back Si es una clave en blanco, vuelva a ingresarla.
cmp al, ' 0 '
jb @ @ KBBack Si es menor que el número '0', vuelva a ingresarlo.
cmp al,' 9 '
ja @@KBBackSi es menor que el número "9", vuelva a ingresarlo.
jmp @@Save_Dig
@@KB_Back: dec Cursor_Col
inc cx
2 de diciembre
@ @KBBack: Llama a la posición del cursor SetCursor
jmp @ @input
@@Save_Dig: y al, 0fh convertido en número binario
protección stosb
El bucle @@Input acepta el siguiente número
@@ASC_Dec: mov ax, cx
Pop cx
Pops
p >
Sub cx, ax; número real de dígitos de entrada
XOR bp, bp
xor dx, dx
XOR ax, ax
jcxz @ @ Save _ Ret Si ingresa directamente sin ingresar ningún número, presione enter ' 0 '.
El número real de dígitos de entrada en dec cx se reduce en 1 y esta cadena de números de entrada se puede convertir en números binarios.
jcxz @ @ Un _ Dígito Si el número ingresado tiene solo un dígito, guarde el número binario directamente.
mov bx, 10
@@Mul_Ten: lodsb
Bytes expandidos a palabras
Añadir ax, bp
Múltiples bx
Mover bp, ax
bucle @@Mul_Ten
@@One_Digit:lodsb
Bytes expandidos a palabras
Agregar hacha, bp
@@Save_Ret: pop di
stosw
pop bx
Pop cx
Dx popular
Remojado en agua para suavizarlo
@@Save_Tmp db 16 dup(?)
Input_digit EndP
;-
Prompt_Str1 db 'Ingrese la altura del pulso: $ '; Solicite ingresar la altura del pulso
Prompt_Str2 db 'Ingrese el ancho del pulso: $ '; para ingresar el ancho del pulso
Prompt_Str3 db 'Ingrese el tiempo de espera del pulso: $ '; Solicite el tiempo discontinuo
Prompt_Str4 db 'Ingrese el color de la línea: $ '; color de línea.
n equ 3; ingrese el número decimal
¿Pulso alto dw? ;Amplitud del pulso
¿Ancho_pulso dw? ;Ancho de pulso
Wait_Time dw? ;Ancho de discontinuidad de pulso
Coloru_Pulse dw? ;Color de línea ondulada
Inicio: push cs
Pop cámara digital
Push cs
pop es crea el segmento de datos, segmento adicional y Los segmentos de código se convierten en el mismo segmento.
Salida request_str 1; solicitud de altura del pulso de entrada
lea di, amplitud del pulso Hight_Pulse
Llame al teclado Input_Digit para ingresar un número de 3 dígitos Número decimal, convertir conviértalo en un número binario y guárdelo en la unidad de almacenamiento especificada.
Ingrese la llamada y envíe el retorno de carro y el avance de línea
El mensaje de salida_ Str2 solicita ingresar el ancho del pulso
lea di, Ancho_Pulse ancho del pulso
Llamar a input_digits
Llamar a las salidas de llamada caracteres de retorno de carro y salto de línea
Salida request_ Str3 solicita ancho de discontinuidad del pulso de entrada
lead di, Wait_Time pulse ancho de discontinuidad
Número de entrada de llamada
Llamada a retorno de carro de salida de llamada, carácter de salto de línea
Salida Prompt_Str4 onda de aviso Color de línea.
Lea di, color de línea ondulada Colou_Pulse
Llamar a input_digits
mov ax, 12h; Establecer 640x480, modo de visualización de gráficos de 16 colores.
int 10h
; Dibuja una línea horizontal en el medio de la pantalla usando la línea central del pulso.
mov bp, 640; número de punto transversal
xor Co., Ltd.
xor cx, CX; punto de partida transversal
mov dx, 480; modo de visualización gráfica, 480 puntos en una columna.
shr dx, 1; punto de inicio vertical
Película, 0ch
mov al, byte ptr Colou_Pulse usa color de píxel
l0: int 10h; escribe píxeles del color especificado.
inc cx apreciación horizontal derecha
Diciembre pb
Prueba de presión arterial, presión arterial
jnz L0
;Dibuje el patrón de onda de pulso correspondiente en pantalla completa de izquierda a derecha.
mov bp, Hight_Pulse mide la altura del pulso
xor cx, CX; punto de inicio horizontal
mov dx, modo de visualización gráfica, 480 puntos en una columna; .
shr dx, 1; punto de inicio vertical
l 1:int 10h; escribe píxeles del color especificado.
dec dx lesión vertical hacia arriba
Diciembre pb
Prueba de presión arterial, presión arterial
jnz L1
Pulse_Wave: mov bp, Width_Pulse toma el ancho del pulso, un período de pulso.
L2:int 10h; Escribe píxeles del color especificado.
Inc cx aumenta horizontalmente hacia la derecha
cmp cx, 639
ja se detiene; si llega al extremo derecho de la pantalla, salta del bucle; , espere a que el usuario presione un botón y finalice el programa.
Diciembre pb
Prueba de presión arterial, presión arterial
jnz L2
mov pb, Hight_Pulse mide la altura del pulso
shl bp, 1
L3:int 10h; escribe píxeles del color especificado.
Inc dx aprecia verticalmente hacia abajo
Diciembre pb
Test de presión arterial, presión arterial
jnz L3
mov bp, Wait_Time toma el ancho de discontinuidad del pulso
l4:int 10h escribe el píxel del color especificado.
Inc cx aumenta horizontalmente hacia la derecha
cmp cx, 639
ja se detiene; si llega al extremo derecho de la pantalla, salta del bucle; , espere a que el usuario presione un botón y finalice el programa.
Diciembre pb
Prueba de presión arterial, presión arterial
jnz L4
mov pb, Hight_Pulse mide la altura del pulso
shl bp, 1
l5:int 10h; escribe píxeles del color especificado.
dec dx lesión vertical hacia arriba
Diciembre pb
Prueba de presión arterial, presión arterial
jnz L5
onda de pulso jmp; al final de un ciclo de pulso, ingrese el siguiente ciclo de pulso.
Pausa: mov ah, 1; pausa y pulsa cualquier tecla para finalizar el programa.
int 21h
mov, 3; Establece el modo de visualización de texto de 80x25 y 16 colores.
int 10h
Exit_Proc: mov ah, 4ch finaliza el programa
int 21h
Fin del código
Fin de inicio; este es el final de la compilación