Press

Header Ads

NUMERO PRIMO EN ENSAMBLADOR 8086

EJEMPLO DE PROGRAMA NUMERO PRIMO

En este programa en ensamblador 8086  modo texto, se le ingresa un numero hasta dos digitos, y le programa te mostrara en pantalla un texto diciendo si es primo o no lo es, para que se enienda mejor el código a continuación les dejo el video.



;**************************************************
;AUTOR: JOSELITO CALDERON PEREZ
MACRO CURSOR F,C,texto
    
    MOV AH,02H
    MOV DH,F
    MOV DL,C
    INT 10H 
    mov dx,offset texto
    mov ah,09h
    int 21h
    
ENDM 

MACRO BORRAR  
    
      MOV AX,0600H;Limpiar pantalla... AL = 00H limpia todos los renglones
      MOV BH,07H  ;color de fondo yletra
      MOV CX,0000H ;esquina sup.izquierda de la pantalla(0,0)
      MOV DX,184FH ;esquina inf. derecha de la pantalla(24,79)
      INT 10H
            
             
      MOV AH,02H 
      MOV DX,00H ;posiscion del cursor(0,0) despues de limpiar pantalla
      MOV BH,00H  ;Pagina 0
      INT 10H 
            
 ENDM 



DATOS SEGMENT
     
    TEXTO1 DB "UNIVERSIDAD NACIONAL PEDRO RUIZ GALLO $ "
    TEXTO2 DB "ESCUELA PROFESIONAL DE INGENIERIA ELECTRONICA$"
    TEXTO3 DB "CURSO:   SISTEMAS DIGITALES I$"
    TEXTO4 DB "DOCENTE: ING. CARLOS OBLITAS VERA$"
    TEXTO5 DB "ALUMNO: JOSELITO CAPE $"
    TEXTO12 DB "Lambayeque,junio del 2015$"  
    TEXTO13 DB "INGRESAR UN NUMERO DE DOS DIGITOS:$"
    TEXTO14 DB " ES PRIMO $"
    TEXTO15 DB " NO ES PRIMO $"     
    TEXTO16 DB "DESEA CONTINUAR SI/NO? $"
    TEXTO17 DB "FIN DEL PROGRAMA $"
    TEXTO18 DB "EL NUMERO $"
     A DB ?
     B DB ?
     NUM DW ?
     
ENDS  




PROGRAMA SEGMENT
   
    ASSUME CS:CODIGO, DS:DATOS
      
INICIO: 
     
      MOV AX,DATOS 
      MOV DS,AX
     
      CURSOR 1,23,TEXTO1
      CURSOR 3,19,TEXTO2
      CURSOR 7,8,TEXTO3
      CURSOR 9,8,TEXTO4
      CURSOR 11,8,TEXTO5 
      CURSOR 23,50,TEXTO12  
      CURSOR 24,50,TEXTO16
      
      
CONTSN: 
        MOV AH,01H
        INT 21H
        MOV BH,AL
        MOV AH,01H
        INT 21H
        MOV BL,AL
        
        ADD BL,BH
        
        CMP BL,9CH
        JE INGRESO
        
        CMP BL,9Dh
        JE FIN 
  
            
INGRESO: 
         MOV BX,0000H
         BORRAR
         CURSOR 1,5,TEXTO13 
         
         MOV AH,01H
         INT 21H
         MOV CH,AL
         MOV AH,01H 
         INT 21H
         MOV CL,AL 
         
         CMP CH,31H ;si el numero en "ch" es igual o mayor sigue el programa 
         JL INGRESO
         CMP CL,39H ;si el numero en "cl"es mayor que 39h no pasa  
         JG INGRESO
         
         MOV A,CH   ; numeros ingresados en ascii
         MOV B,CL
         
         SUB CH,30H 
         SUB CL,30H

         MOV AL,0AH ;MULTIPLICAR POR 10 AL SEGMENTO CH Y SE GUARDA EN EL SEGMENTO AL
         MUL CH
         
         MOV CH,AL
         ADD CL,CH
         MOV CH,00H 
         MOV NUM,CX
         MOV BX,02H
         
         
SIGUIENTE: 
            
            CMP BX,NUM
            JE PRIMO
            MOV DX,0H 
            MOV AX,NUM

            DIV BX
            CMP DX,0H
            JE NO_PRIMO
            INC BX
            JMP SIGUIENTE

    PRIMO: 
           CURSOR 10,22,TEXTO18  
           MOV DL,A
           MOV AH,02h  ;muestras el numero guardado en memoria,"dl"
           INT 21h 
           
           MOV DL,B
           MOV AH,02h  ;muestras el numero guardado en memoria,"dl"
           INT 21h
           MOV AH,09H
           MOV DX,OFFSET TEXTO14
           INT 21H
           CURSOR 12,22,TEXTO16  
           JMP CONTSN
          
  NO_PRIMO:  
           CURSOR 10,22,TEXTO18 
           MOV DL,A
           MOV AH,02h  ;muestras el numero guardado en memoria,"dl"
           INT 21h 
           
           MOV DL,B
           MOV AH,02h  ;muestras el numero guardado en memoria,"dl"
           INT 21h
           MOV AH,09H
           MOV DX,OFFSET TEXTO15
           INT 21H
           CURSOR 12,22,TEXTO16 
           JMP CONTSN
               
           
      FIN:  BORRAR
            CURSOR 12,24,TEXTO17
            MOV AH,07H ;espera ingreso de teclado para seguir sin mostrarlo en pantalla
            INT 21H    
            
            MOV AH,4CH
            INT 21H 
                     
ENDS
   
   END INICIO 

Publicar un comentario

0 Comentarios