DATA SEGMENT
;DECLARAR VARIABLES AQUI<<<<<<<<<<<
ARRAY DW 00h,00h,00h,00h,00h,00h,00h,00h
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
ENDS
CODE SEGMENT
CALL MAIN
MAIN PROC
CALL VECTOR
CALL BURBUJA
MENU
RET
MAIN ENDP
MENU MACRO
PRINTN ""
PRINTN "1. ORDENAR MENOR --> MAYOR"
PRINTN "2. ORDENAR MAYOR --> MENOR"
PRINTN "3. SALIR"
PRINTN ""
PRINT "OPCION: "
CALL SCAN_NUM
CMP CX, 1
JE CALL IMPRIMIR1
CMP CX, 2
JE CALL IMPRIMIR2
JMP FIN
RET
ENDM
VECTOR PROC
CALL INICIO
CALL LLENADO
VECTOR ENDP
LLENADO PROC
PRINT "NUMERO: "
CALL SCAN_NUM
MOV [ARRAY + SI], CX
PRINTN ""
ADD SI, 02
INC DX
CMP DX, 8
JNE LLENADO
MOV SI, 0
MOV DX, 0
MOV CX, 0
RET
LLENADO ENDP
INICIO PROC
LEA SI, ARRAY
MOV AX, @DATA
MOV DS, AX
RET
INICIO ENDP
FIN PROC
PRINTN ""
PRINTN ""
PRINT "PRESIONE TECLA PARA SALIR"
MOV AH, 0h
INT 16h
MOV AX, 4c00h
INT 21h
RET
FIN ENDP
BURBUJA PROC
MOV AX, ARRAY[SI]
MOV BX, ARRAY[SI+2]
CMP AX, BX
JA MENOR
ADD SI, 2
INC CX
CMP CX, 8
JNE BURBUJA
MOV CX, 0
MOV SI, 0
CALL VERIFICARMENOR
RET
BURBUJA ENDP
MENOR PROC
MOV ARRAY[SI], BX
MOV ARRAY[SI+2], AX
ADD SI, 2
INC CX
JMP CALL BURBUJA
RET
MENOR ENDP
VERIFICARMENOR PROC
MOV AX, ARRAY[SI]
MOV BX, ARRAY[SI+2]
CMP AX, BX
JA RESETMENOR
ADD SI, 2
INC CX
CMP CX, 8
JNE VERIFICARMENOR
RET
VERIFICARMENOR ENDP
RESETMENOR PROC
MOV SI, 0
MOV CX, 0
JMP CALL BURBUJA
RET
RESETMENOR ENDP
IMPRIMIR1 PROC
PRINTN ""
PRINT "VECTOR DE MENOR A MAYOR: "
MOV SI, 0
MOV CX, 8
PRINTMEN1:
MOV AX, ARRAY[SI]
CALL PRINT_NUM
PRINT ","
ADD SI, 2
LOOP PRINTMEN1
MOV SI, 0
MOV CX, 0
PRINTN ""
MENU
RET
IMPRIMIR1 ENDP
IMPRIMIR2 PROC
PRINTN ""
PRINT "VECTOR DE MAYOR A MENOR: "
MOV SI, 14
MOV CX, 8
PRINTMEN2:
MOV AX, ARRAY[SI]
CALL PRINT_NUM
PRINT ","
SUB SI, 2
LOOP PRINTMEN2
MOV SI, 0
MOV CX, 0
PRINTN ""
MENU
RET
IMPRIMIR2 ENDP
ends
Comentarios sobre la versión: 4.08 (0)
No hay comentarios