Usando funciones de la librería emu8086.Inc (parte 2/3) - Código
Encuentra el código sobre el video anterior, Usando funciones de la librería emu8086.Inc.
TITLE ESTRUCTURA_BASICA
include 'emu8086.inc'
DATOS SEGMENT
; DECLARAR LAS VARIABLES AQU?
NUMEROS DB 12 DUP(?)
PRIMOS DB 12 DUP(?)
NOPRIMOS DB 12 DUP(?)
X DB 2
Y DB 3
;--------------------------------------------------------------------------
DATOS ENDS
PILA SEGMENT
DB 64 DUP(0)
PILA ENDS
CODIGO SEGMENT
INICIO PROC FAR ;NEAR Y FAR
ASSUME DS:DATOS, CS:CODIGO, SS:PILA
PUSH DS
MOV AX, 0
PUSH AX
MOV AX, DATOS
MOV DS, AX
MOV ES, AX
; CODIGO DE NUESTRO PROGRAMA AQUI---------------------------------------------
MOV SI,0
MOV DI,0
MOV AX,0
CALL CLEAR_SCREEN
GOTOXY X,Y
CALL PTHIS
DB 'PROGRAMA QUE DETERMINA SI 12 NUMEROS SON PRIMOS O NO LO SON'
INTRODUCE:
INC Y
GOTOXY X,Y
CALL PTHIS
DB 'NUMERO: ', 0
CALL SCAN_NUM
MOV NUMEROS[SI], CL
INC SI
CMP SI, 12
JNE INTRODUCE
MOV SI, 0
MOV CX, 0
M0V Y, 5
CICLO:
CMP SI, 12
JE IMPRIME ;CUANDO SEA 12 VA SALIR AL LLEGAR A ESTE CODIGO
MOV BL, 1
MOV AL, NUMEROS[SI]
CMP AL, 2
JE PARPRIMO
JA PRIMO
JB GUARDARNOPRIMO
PRIMO:
MOV AX, 0
MOV AL, NUMEROS[SI]
INC BL
DIV BL
CMP AH, 0
JE GUARDARNOPRIMO
JA CONTADOR
CONTADOR:
MOV CL, NUMEROS[SI]
SUB CX, 3
JMP PRIMOCORROBORA
PRIMOCORROBORA:
MOV AX, 0
MOV AL, NUMEROS[SI]
INC BL
DIV BL
CMP AH, 0
JE GUARDARNOPRIMO
LOOP PRIMOCORROBORA
GUARDARPRIMO:
MOV AL, NUMEROS[SI]
MOV PRIMOS[DI], AL
INC SI
INC DI
JMP CICLO
PARPRIMO:
MOV PRIMOS[DI], AL
INC SI
INC DI
JMP CICLO
GUARDARNOPRIMO:
MOV AL, NUMEROS[SI]
MOV NOPRIMOS[DI], AL
INC SI
INC DI
JMP CICLO
IMPRIME:
MOV DI, 0
MOV AX, 0
CALL CLEAR_SCREEN
;MOV X, 2
MOV Y, 3
GOTOXY, X, Y
CALL PTHIS
DB 'LOS NUMEROS PRIMOS SON: ',0
INC Y
PRINT_PRIMOS:
CMP DI, 11
JA PRINT
MOV AL, PRIMOS[DI]
CMP AL, 00H
JE OMITIR
GOTOXY X,Y
CALL PRINT_NUM_UNS 2
ADD X,4
INC DI
CMP DI, 11
JBE PRINT_PRIMOS
; REGISTROS DE ENSAMBLADOR
;8086 CPU has 8 general purpose registers, each register has its own name:
; AX - the accumulator register (divided into AH / AL).
; BX - the base address register (divided
; CX - the data register (divided into DH / DL)
; SI - source index register.
; DI - destination index register.
; BP - base pointer.
; SP - stack pointer.
;-----------------------------------------------------------------------------
EXIT:
RET
INICIO ENDP
CODIGO ENDS
END INICIO