Saltar la navegación

Codigos fuente de los casos practicos

CASO PRACTICO 1

.MODEL SMALL
.STACK 100H

.DATA
MENSAJE1 DB 'INGRESE EL PRIMER NUMERO: $'
MENSAJE2 DB 'INGRESE EL SEGUNDO NUMERO: $'
MENSAJE3 DB 'EL RESULTADO ES: $'
NUM1 DW 0
NUM2 DW 0
RESULTADO DW 0

.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX

MOV AH, 09H
MOV DX, OFFSET MENSAJE1
INT 21H

MOV AX, 0
MOV AH, 01H
INT 21H
SUB AX, 30H
MOV NUM1, AX

MOV AH, 09H
MOV DX, OFFSET MENSAJE2
INT 21H

MOV AX, 0
MOV AH, 01H
INT 21H
SUB AX, 30H
MOV NUM2, AX

MOV AX, NUM1
ADD AX, NUM2
MOV RESULTADO, AX

MOV AH, 09H
MOV DX, OFFSET MENSAJE3
INT 21H

MOV AX, RESULTADO
ADD AX, 30H
MOV DL, AL
MOV AH, 02H
INT 21H

MOV AX, 4C00H
INT 21H
MAIN ENDP
END MAIN

CASO PRACTICO 2

.MODEL SMALL
.STACK 100H

.DATA
ARRAY DB 5, 4, 3, 2, 1
ARRAY_SIZE EQU ($ - ARRAY) / 1

.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX

MOV CX, ARRAY_SIZE
OUTER_LOOP:
MOV SI, 0
INNER_LOOP:
MOV AL, [ARRAY + SI]
MOV BL, [ARRAY + SI + 1]
CMP AL, BL
JBE SKIP_SWAP
XCHG AL, BL
MOV [ARRAY + SI], AL
MOV [ARRAY + SI + 1], BL
SKIP_SWAP:
INC SI
CMP SI, ARRAY_SIZE - 1
JB INNER_LOOP
LOOP OUTER_LOOP

MOV SI, 0
MOV CX, ARRAY_SIZE
DISPLAY_LOOP:
MOV DL, [ARRAY + SI]
ADD DL, 30H
MOV AH, 02H
INT 21H
MOV DL, ','
MOV AH, 02H
INT 21H
INC SI
LOOP DISPLAY_LOOP

MOV AX, 4C00H
INT 21H
MAIN ENDP
END MAIN

CASO PRACTICO 3

```assembly
.MODEL SMALL
.STACK 100H

.DATA
NUMERO DW ?
FACTORIAL DW ?

.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX

MOV AH, 01H
INT 21H
SUB AL, 30H
MOV BL, AL

MOV CX, BX
MOV AX, 1

FACTORIAL_LOOP:
MUL CX
LOOP FACTORIAL_LOOP

MOV FACTORIAL, AX

MOV AH, 09H
MOV DX, OFFSET RESULTADO_MSG
INT 21H

MOV AX, FACTORIAL
CALL MOSTRAR_NUMERO

MOV AX, 4C00H
INT 21H

MOSTRAR_NUMERO PROC
PUSH AX
MOV CX, 10
MOV BX, 0

MOSTRAR_NUMERO_LOOP:
XOR DX, DX
DIV CX
ADD DL, 30H
PUSH DX
INC BX
TEST AX, AX
JNZ MOSTRAR_NUMERO_LOOP

MOSTRAR_NUMERO_DISPLAY:
POP DX
MOV AH, 02H
INT 21H
DEC BX
JNZ MOSTRAR_NUMERO_DISPLAY
POP AX
RET
MOSTRAR_NUMERO ENDP

RESULTADO_MSG DB 'EL FACTORIAL ES: $'


END MAIN

CASO PRACTICO 4

```assembly
.MODEL SMALL
.STACK 100H

.DATA
CADENA DB 'EJEMPLO DE CADENA PARA CONTAR VOCALES', 0
VOCALES_MSG DB 'EL NUMERO DE VOCALES ES: $'
COUNT DW 0

.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX

MOV CX, 0

LEA SI, CADENA

COUNT_VOWELS:
MOV AL, [SI]
CMP AL, 0
JE END_COUNT

CMP AL, 'A'
JL NOT_VOWEL
CMP AL, 'Z'
JG CHECK_LOWERCASE
JMP IS_VOWEL
CHECK_LOWERCASE:
CMP AL, 'a'
JL NOT_VOWEL
CMP AL, 'z'
JG NOT_VOWEL
IS_VOWEL:
INC COUNT
NOT_VOWEL:

INC SI
JMP COUNT_VOWELS

END_COUNT:
MOV AH, 09H
MOV DX, OFFSET VOCALES_MSG
INT 21H

MOV AX, COUNT
CALL MOSTRAR_NUMERO

MOV AX, 4C00H
INT 21H

MOSTRAR_NUMERO PROC
PUSH AX
MOV CX, 10
MOV BX, 0

MOSTRAR_NUMERO_LOOP:
XOR DX, DX
DIV CX
ADD DL, 30H
PUSH DX
INC BX
TEST AX, AX
JNZ MOSTRAR_NUMERO_LOOP

MOSTRAR_NUMERO_DISPLAY:
POP DX
MOV AH, 02H
INT 21H
DEC BX
JNZ MOSTRAR_NUMERO_DISPLAY
POP AX
RET
MOSTRAR_NUMERO ENDP

END MAIN

Creado con eXeLearning (Ventana nueva)