Red de conocimiento informático - Conocimiento del nombre de dominio - Se necesitan con urgencia copias del diseño del curso sobre principios de microcomputación y tecnología de interfaz

Se necesitan con urgencia copias del diseño del curso sobre principios de microcomputación y tecnología de interfaz

Nombre del tema: Cálculo del año bisiesto

1. Propósito del experimento:

(1) Comprender ramas, interrupciones y expresiones lógicas.

(2) Estar familiarizado con el proceso de compilación y vinculación de programas en lenguaje ensamblador.

2. Contenido del experimento:

Utilice la llamada de función de teclado tipo 10 de interrupción DOS 21H para almacenar la cadena de valor de año aceptada por el teclado en el búfer byte a byte. Convierta cada carácter de la cadena al valor decimal correspondiente (usando la relación de que el valor del código ASCII de los 10 números del 0 al 9 es 30H mayor que él mismo) y use la expresión para determinar si el año es bisiesto para ingresar si el año es una información de año bisiesto.

3. Consejos de programación:

(1) Encuentre una manera de determinar si un determinado año es bisiesto. Regla del año bisiesto: Un año es bisiesto si es divisible por 4 pero no por 100, o si es divisible por 400.

(2) La expresión en lenguaje ensamblador para determinar si un determinado año es bisiesto es:

(((AX) MOD 4 EQ 0) AND ((AX) MOD 100 EQ 0) ) O ((AX) MOD 400 EQ 0)

Entre ellos, (AX) almacena el valor del año ingresado desde el teclado.

(3) El proceso de referencia es como se muestra en la figura:

4. Ensamblador:

Defina segmento de datos

infon db 0dh, 0ah, 'Ingrese un año: $'

Y db 0dh, 0ah, '¡Este es un año bisiesto! $'

N db 0dh, 0ah, '¡Este no es un año bisiesto!

w dw 0

buf db 8

db ?

DB 8 dup(?)

datos final

segmento de pila pila

db 200 dup(0)

fin de pila

segmento de código

asumir ds: datos, ss: pila, cs: código

inicio: inicio: pila, cs: código

inicio: pila, cs: código

inicio: pila, cs: código

inicio: pila, cs: código

inicio: mov ax, datos

mov ds, ax

lea dx, infon; mostrar mensaje en la pantalla

mov ah, 9

int 21h

lea dx, buf Ingrese la cadena del año desde el teclado<; /p>

p>

mov ah, 10

mov ah, 10

int 21h

mov cl, [buf 1]

lea di, buf 2

Llamar a datacate

Llamar a ifyears

jc a1

lea dx, n

mov ah, 9

int 21h

salida jmp

a1: lea dx, y

mov ah , 9

int 21h

salir: mov ah, 4ch

int 21h

datacate proc near

push cx;

p>

dec cx

lea si, buf 2

tt1: inc si

bucle tt1

; lea si, cx[di]

pop cx

mov dh, 30h

mov bl, 10

mov hacha, 1

l1: empujar hacha

sub byte ptr [si], dh

mul byte ptr [si]

agregar w,

pop ax

mul bl

dec si

loop l1

ret

datacate endp

p>

ifyears proc cerca

push bx

push

cx

empujar dx

mov ax, w

mov cx,

mov dx, 0

mov bx, 4

div bx

cmp dx, 0

jnz lab1

mov ax, cx

mov bx, 100

div bx

cmp dx, 0

jnz lab2

mov ax, cx

mov bx, 400

div bx

cmp dx, 0

jz lab2

lab1:clc

jmp lab3

lab2.

lab3: pop dx

pop cx

pop bx

ret

fin de añosp

fin del código

fin del inicio