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
0 Comentarios
Dejame tus dudas o saludame!