PROGRAMAS EN SIMUPROC

PROGRAMAS EN SIMUPROC

;Ecuación de 2do Grado

MSG 'Programa Ecuación de 2do Grado'
;MSG 'Introduzca el valor de "a"'
LDT 'Introduzca el valor de "a"' ;Leo el Valor de A=
MOV 4A,AX ;Grabo el numero en la dir 4A y 4B
;MSG 'Introduzca el Valor de "b"'
LDT 'Introduzca el valor de "b"' ;Leo el valor de B=
MOV 4C,AX ;Grabo el numero en la dir 4C y 4D
;MSG 'Introduzca el Valor de "c"'
LDT 'Introduzca el valor de "c"' ;Leo el valor de C=
MOV 4E,AX ;Grabo el numero en la dir 4E y 4F

JMP 90
MSG '-b'
MOV AX,5A
EAP 5A
;d=b*b-4.0*a*c
MOV 4C,AX
MUL 4C
SUB 64
MUL 4A
MUL 4E
MOV AX,50

JMP 95

MOV AX,50
MSG 'd='
EAP 50
CMP 55
JMA 60 ;d es mayor a 0
JEQ 60 ;d es igual a 0
JMP 80 ;si b es menor a 0 salta a la pos 80


;Inicializo las constantes 1 y 2 en IEEE 754
#50
0011111110000000 ;Inicializo el Numero 1 en la dir 30 y 31
0000000000000000
0100000000000000 ;numero 2 en la dir 32 y 33
0000000000000000
110
0
010

#60
; X1=(-b+SQR(b))/a/2.0
MOV AX,5A ;-b
ADD 100 ;raiz de b
DIV 4A
DIV 56
MOV 6A,AX
; X2=(-b-SQR(b))/a/2.0
MOV AX,5A ;-b
SUB 100
DIV 4A
DIV 56
MOV 6D,AX
JMP 120


#80
;X2=sqr(-d)/a/2
MOV AX,5C ;-d
;LDF 110 ;Raiz de -d
DIV 4A
DIV 56
MOV 6D,AX
;X1=-b/0/2
MOV AX,5A ;-b
DIV 4A
DIV 56
MOV 6A,AX
JMP 120




#90 ; -b
MOV AX,55
MSG 'Negando b'
SUB 4C
MOV 5A,AX
EAP 5A
JMP 0C

#95 ; -d
MOV AX,55
MSG 'Negando d'
SUB 50
MOV 5C
OUT 1,AX
JMP 16

# 120
;Mostrar datos en Pantall
MSG 'El valor de X1 es:'
MOV AX,6A
EAP 'X='
MSG 'El valor de X2 es:'
MOV AX,6D
EAP 'X2'
HLT


;PROGRAMA DE MENUS

MSG 'MENU PRINCIPAL'
MSG 'Escriba 1: para Introducir datos'
MSG 'Escriba 2: para salir'
LDT 'Introdusca 1 Ó 2'
CMP 40
JEQ 50 ;COMPARO SI ES =
CMP 41
JEQ 33
JMP 0

MSG 'MENU SECUNDARIO'
MSG 'Que Operasión quiere realizar:?'
MSG '1: SUMAR'
MSG '2: RESATAR'
MSG '3: MULTIPLICAR'
MSG '4: DIVIDIR'
MSG '5: CARGAR DATOS'
MSG '6: MENU PRINCIPAL'
LDT 'Opsión:'

CMP 40
JEQ 20
JME 9

CMP 41
JEQ 24

CMP 42
JEQ 28

CMP 43
JEQ 2C

CMP 44
JEQ 50

CMP 45
JEQ 0
JMA 9

MOV AX,3E
ADD 3F
EAP 'SUMA:'
JMP 9

MOV AX,3E
SUB 3F
EAP 'RESTA:'
JMP 9

MOV AX,3E
MUL 3F
EAP 'MULTIPLICASION:'
JMP 9

LDA 3F
CMP 47
JEQ 60
MOV AX,3E
DIV 3F
EAP 'DIVISION:'
;OUT 1,AX
JMP 9


MSG 'FIN'
HLT
#40
1
10
11
100
101
110
0

#50
LDT 'Introdusca el PRIMER número:'
MOV 3E,AX
LDT 'Introdusca el SEGUNDO número:'
MOV 3F,AX
JMP 9

#60
MSG 'Para la División el SEGUNDO número debe ser diferente de 0'
JMP 52


;PROGRAMA PARA ORDENAR 3 NUMERO E MENOR A MAYOR
;POR EL METODO DE LA BURBUJA
MSG 'ORDENAR 3 NUMEROS DE MENOR A MAYOR'
MSG 'INTRODUSCA LOS DATOS A NUMERAR'
LDT 'ENTRODUSCA EL VALOR DE A:'
MOV 20,AX
LDT 'ENTRODUSCA EL VALOR DE B:'
MOV 21,AX
LDT 'ENTRODUSCA EL VALOR DE C:'
MOV 22,AX

; A MAYOR QUE B
;MOV CX,19
MOV AX,20
CMP 21
JMA 80
JEQ 40
JMP 50
;LOOP 5
;JMP 15
HLT

#40
; B MAYOR QUE C
MOV AX,21
CMP 22
JMA 90
JEQ 15
JMP 60

#50
; A MENOR QUE B
MOV AX,21
CMP 20
JME 40
JMP 60

#60
; B MENOR QUE C
MOV AX,22
CMP 21
JME 90
JMP 15
#15
MOV AX,20
EAP 'A'
MOV AX,21
EAP 'B'
MOV AX,22
EAP 'C'
JMP 0D

#80
MOV AX,20
MOV 25,AX
MOV AX,21
MOV 20,AX
MOV AX,25
MOV 21,AX
JMP 40

#90
MOV AX,21
MOV 25,AX
MOV AX,22
MOV 21,AX
MOV AX,25
MOV 22,AX
JMP 08

3 comentarios:

capuz dijo...
Este comentario ha sido eliminado por el autor.
john117 dijo...
Este comentario ha sido eliminado por el autor.
john117 dijo...

En la instrucción MOV 5C, del programa de la ECUACION DE SEGUNDO GRADO falta el destino puesto que marca error al momento de realizar la ejecución