Red de conocimiento informático - Conocimiento sistemático - Escribir un programa simple en lenguaje ensamblador (estoy aprendiendo lenguaje ensamblador y tecnología de interfaz)

Escribir un programa simple en lenguaje ensamblador (estoy aprendiendo lenguaje ensamblador y tecnología de interfaz)

; Ingrese cualquier número del 0 al 59 desde el teclado y aumentará en uno cada segundo. Cuando llegue a 59, saltará a 0 y comenzará a incrementarse nuevamente.

SEGMENTO DE DATOS

; Ingrese el código del segmento de datos aquí

MESS0 DB '¡Error char!', '$' ; Información de excepción

MESS1 DB '¡Desbordamiento de entrada!' , '$'

MESS2 DB '¡Debe ser 0~59!', '$'

SEPRA DB 0DH, 0AH, '$' delimitador

TIME DB 0

MADDR DW OFFSET MESS0, OFFSET MESS1, OFFSET MESS2 Dirección de información de excepción

DATOS FINALES

SEGMENTO DE PILAS

; Ingrese aquí el código del segmento de pila

DW 64 DUP (?)

PALABRA DE ETIQUETA SUPERIOR

EXTREMOS DE PILAS

SEGMENTO DE CÓDIGOS

ASUME CS: CÓDIGOS, DS: DATAS, SS: PILAS

MAIN PROC FAR

Manejo de excepciones

L0:

MOV AH, 9

LEA DX, SEPRA

INT 21H

AÑADIR SI, SI

MOV DX, MADDR[SI ]

INT 21H

LEA DX, SEPRA

INT 21H

INT 21H

XOR BX, BX

JMP SHORT L1; Reingresar

INICIO:

MOV AX, DATAS

MOV DS, AX

MOV AX, STACKS

MOV SS, AX

LEA SP, TOP

; ingrese el fragmento de código aquí

MOV BH, 10; número de base

MOV DI, 60; módulo

XOR BL, BL

L1:

MOV AH, 1

INT 21H

CMP AL, ' '

JE EXIT; ingrese un carácter de espacio para finalizar el programa

CMP AL, 0DH

p>

JE L2; Ingrese el carácter de retorno de carro para finalizar la entrada digital

MOV SI, 0

CMP AL, '0'

JB L0

CMP AL, '9'

JA L0

MOV SI, 1

AND AL, 0FH

JC L

0; desbordamiento de suma, el número es mayor que 255

JMP SHORT L1

L2:

MOV SI, 2

CMP BL, 59

JA L0; Ingrese un número mayor que 59

L3:

Obtenga la hora del sistema

MOV AH, 2CH<; /p>

L4: INT 21H

CMP TIME, DH

JE L4

MOV TIME, DH si la hora del sistema cambia, envíela;

; Números de salida

MOV AL, BL

CBW; AL expandido a AX

CALL SHOWCHAR

; Separador de salida

LEA DX, SEPRA

MOV AH, 9

INT 21H

El número aumenta en 1

;

INC BL

; número módulo 60

MOV AL, BL

CBW

CWD

DIV DI ; (DI)=60

MOV BL, DL

; Retraso 1 segundo

; RETARDO DE LLAMADA

; Hay entrada de teclado, si es así, el programa finaliza

MOV AH, 6

MOV DL, 0FFH

INT 21H

JZ L3

SALIDA:

MOV AH, 4CH

INT 21H

ENDP PRINCIPAL

Parámetros entrantes: AL, un entero sin signo; BH, como variable global, siempre 10

; Parámetro de retorno: Ninguno

; Muestra el número decimal correspondiente a AX

; > MOSTRAR PROC CERCA

PUSH DX

PUSH CX

XOR CX, CX; registrar dígitos decimales

L6:

XOR AH,AH

DIV BH

MOV DL,AH

XOR DH,DH

AGREGAR DX, 30H

PUSH DX

INC CX

CMP AL, 0

JNE L6

MOV AH, 2

L7:

POP DX

INT 21H

BUCLE L7

POP CX

POP DX

RET

SHOWCHAR ENDP

CÓDIGOS FINALIZA

FIN INICIO