Recuerda que puedes sugerir contenido :)
Usando funciones de la librería emu8086.Inc (parte 2/3) - Código

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

Regresar al curso

Contenidos del bloque de: Avanzado #2

Usando funciones de la librería emu8086.Inc (parte 1/3) Usando funciones de la librería emu8086.Inc (parte 1/3) - Código Usando funciones de la librería emu8086.Inc (parte 2/3) Usando funciones de la librería emu8086.Inc (parte 2/3) - Código Usando funciones de la librería emu8086.Inc (parte 3/3) Otros ejemplos de Emu-8086