Red de conocimiento informático - Material del sitio web - Un programa de diseño para un reloj electrónico con visualización de puntero basado en lenguaje ensamblador 8086

Un programa de diseño para un reloj electrónico con visualización de puntero basado en lenguaje ensamblador 8086

Este es un reloj electrónico con la capacidad de configurar la hora de la alarma, puede consultar:

Tiene una función de reloj que puede mostrar y actualizar continuamente la hora actual y puede preestablecer la hora del timbre; , y cuando llegue la hora de sonar La campana sonará cuando

Segmento de datos

Hora dw ¿El número de horas en que sonará la campana

minuto dw? El número de minutos en que sonará la campana

diez dw 10

s1 db 'Por favor, configure la hora de timbre del reloj (configurada en hora:minuto): $'

s2 db 'La hora de timbre es: $'

s3 db 'La hora actual es: $'

s4 db 'Ring Ring Ring Ring !!!!!! $'

error db '¡error de configuración de hora! $'

los datos terminan

segmento de código

se supone que cs: código, ds: datos

se utilizan para borrar una línea de caracteres.

p>

Programa cleanLine

Empujar hacha

Empujar bx

Empujar cx

Empujar dx

mov cx, 85

mov ah, 2h

mov dl, 0dh

int 21h

limpiar :

mov dl, ' '

int 21h

limpieza de bucle

mov dl, 0dh

int 21h

pop dx

pop cx

pop bx

pop hacha

ret

cleanLine endp

Se utiliza para mostrar el retorno de carro y el avance de línea

Proceso de avance de línea

Empujar hacha

Empujar bx

p>

Empujar cx

Empujar dx

mov ah, 2h

mov dl, 0dh

int 21h

mov dl, 0ah

int 21h

pop dx

pop cx

pop bx

pop ax

ret

changeline endp

programa inputNegativeNumber usado para aceptar números decimales ingresados ​​desde el teclado, almacenados en bx

Empujar hacha

Empujar cx

Empujar dx

mov bx, 0

mov cl, 0

mov ah, 1

int 21h

cmp al, '-'

je k4

k0:

cmp al, 30h

jb k3

cmp al, 39h

ja k3

sub al, 30h

mov ah, 0

xchg ax, bx

push cx

mov cx, 10

mul cx; p>

pop cx

agregar bx, ax Considere overfl;

ow

k1:

mov ah, 1

int 21h

jmp k0

k4: p>

mov cl, 1

jmp k1

k3:

cmp cl, 1

jne over

neg bx

sobre: ​​

pop dx<

pop cx

pop hacha

ret

inputNegativeNumber endp

outputNumber proc; genera un número en ax

push ax

push bx

Empujar cx

Empujar dx

mov cx, 0

mov bx, 10

cmp hacha, 0

jge p0

empujar hacha

mov ah, 2h

mov dl, '-'

int 21h

hacha pop

hacha neg

p0:

mov dx, 0

div bx

push dx

inc cx

cmp ax, 0

jnz p0

mov ah, 2

cmp cx, 2

jae p1

mov dx, 0

push dx

inc cx

p1 :

pop dx

agregar dx, 30h

int 21h

bucle p1

pop dx

pop cx

pop bx

pop ax

ret

outputNumber endp

setRingTime programa Se utiliza para configurar el tiempo de timbre

Push ax

Push bx

Push cx

Push dx

mov bx, 0

h:

mov ah, 1h

int 21h

cmp al, 30h

jb error

cmp al, 32h<

ja error

sub al, 30h

mov ah, 0

xchg ax, bx

mul ten

agregar bx, ax

mov ah, 1h

int 21h

cmp al, 30h

jb error

cmp al, 39h

ja error

sub al, 30h

p>

mov ah, 0

xchg ax, bx

mul ten

agregar bx, ax

mov hora, bx

mov ah, 1h

int 21h

cmp al, ':

jnz incorrecto

>

mov bx, 0

m:

mov ah, 1h

int 21h

cmp al, 30h

error jb

cmp al, 36h

error jae

sub al, 30h

mov ah, 0

xchg ax, bx

mul ten

add bx, ax

mov ah, 1h

int 21h

cmp al, 30h

jb error

cmp al, 39h

ja error

sub al, 30h

mov ah, 0

xchg ax, bx<

mul ten

agregar bx, ax

mov minuto, bx

jmp o

incorrecto:

llamar a changeline

llamar a changeline

mov ah , 9h

lea dx, error

int 21h

mov ah, 4ch

int 21h

o :

pop dx

pop cx

pop bx

pop hacha

ret

proc principal lejos

push ds

sub ax, ax

push ax

mov ax, data

mov ds, ax; muestra el mensaje para configurar el tiempo de timbre

mov ah, 9h

lea dx, s1

int 21h

llamar a setRingTime

llamar a cleanLine; borrar la cadena de la línea donde está el cursor en la pantalla y mover el cursor al principio de la línea

mov ah, 9h

lea dx, s2

int 21h

call showRingTime Muestra el tiempo de timbre establecido

call changeline

llamar a changeline

hora:; se usa para actualizar la pantalla cada segundo

mov ah, 9h

lea dx si bx=2, el tiempo de timbre ha expirado

je ring

llamar a un segundo

mov ah, 2h

mov dl, 0dh