Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SISTEMAS OPERATIVO
Objetivo:
Descripción:
Elabore programas en Assembler y haga la documentación que incluya las capturas de lo realizado
con su explicación, presente el enunciado del programa que desarrolla.
Tema libre. Escoja los temas que usted desee y desarrolle dos programas en Assembler que les
permita poner en práctica la programación en Assembler.
Referencias:
http://www.utm.mx/~jjf/le/pe34_ar3.pdf
http://www.utm.mx/~jjf/le/pe36_ar5.pdf
http://www.utm.mx/~jjf/le/io.pdf
Este programa solicita al usuario que ingrese cinco números, los almacena en un arreglo y calcula
su suma total. Luego, determina si la suma es par o impar y muestra el resultado en pantalla.
1. Solicitud de Entrada:
2. Almacenamiento y Suma:
3. Determinación de Paridad:
4. Mostrar Resultado:
Este programa solicita al usuario que ingrese dos palabras, las almacena en arreglos y calcula sus
longitudes. Luego, compara las longitudes y muestra cuál palabra es más larga, o si ambas tienen
la misma longitud.
1. Solicitud de Entrada:
4. Comparación de Longitudes:
5. Mostrar Resultado:
• Muestra en pantalla cuál palabra es más larga o si ambas son de igual longitud.
PRIMER PROBLEMA
NEW_SUM DB ?
GREETING_MSG DB 13, 10, 13, 10, "Welcome! This program will analyze the sum of five
numbers and determine if it's even or odd. Please enter 5 numbers to sum and evaluate: $"
EVEN_MSG DB "Even$"
ODD_MSG DB "Odd$"
DATA_SECTION ENDS
PROGRAM_START PROC
MOV DS, AX
MOV AH, 09
INT 21H
; Initialize sum to 0
MOV NEW_SUM, 0
MOV CX, 5
MOV DI, 0 ; Index for the new array
INPUT_NUMBER:
INT 21H
INC DI
; New line
MOV AH, 02
MOV DL, 13
INT 21H
MOV DL, 10
INT 21H
LOOP INPUT_NUMBER
MOV AH, 09
INT 21H
MOV AH, 00
JMP SHOW_RESULT
IS_EVEN:
SHOW_RESULT:
MOV AH, 09
INT 21H
MOV AH, 02
MOV DL, 13
INT 21H
MOV DL, 10
INT 21H
INT 21H
PROGRAM_START ENDP
CODE_SECTION ENDS
END PROGRAM_START
SEGUNDO PROBLEMA
.model small
.stack
.data
.code
.startup
mov ds, ax
int 21h
int 21h
mov di, offset FIRST_WORD + 2 ; Initialize the index to the start of the string
calculate_length1:
je end_calculation1
inc cx
inc di
jmp calculate_length1
end_calculation1:
int 21h
int 21h
mov dx, 0
mov di, offset SECOND_WORD + 2 ; Initialize the index to the start of the string
calculate_length2:
je end_calculation2
inc dx
inc di
jmp calculate_length2
end_calculation2:
; Display the result
cmp cx, dx
je equal_lengths
jl second_word_longer
jmp first_word_longer
first_word_longer:
int 21h
jmp end_program
second_word_longer:
int 21h
jmp end_program
equal_lengths:
int 21h
end_program:
int 21h
end