Se necesitan con urgencia copias del diseño del curso sobre principios de microcomputación y tecnología de interfaz
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