Está en la página 1de 16

1.- Contar números del 1 a 16 y mostrarlos por pantalla.

#SimuProc 1.4.3.0
cla
sta 090
cln
eap
inc 090
lda 090
cmp 091
jne 002
hlt

#091
10000                                                                 

Ejecución del ejercicio en simuproc. 

Códigos:
1.- Calculo de Área de una Circunferencia.
msg "ingrese ahora el diámetro de su circunferencia"
in ax,1 ;          se ingresa el valor de diámetro
stf 015 ;          gurda en esa posición de memoria los números ingresados
ldf 015 ;          guarda en posición ax y bx los numero ingresados
divf 040 ;        divide el numero de 32 bits
stf 030 ;          guarda en esa posición la división
ldf 030 ;          carga en ax y bn el nro contenido
mulf 030 ;       multiplica el resultado de la división por dos
stf 017 ;          guarda en esa posición el resultado de la multiplicación
ldf 017 ;          carga en ax y bx los números contenidos
mulf 050;        multiplica el resultado por la posición que guarda el PI
stf 019  ;         guarda en esa posición el resultado de la multiplicación
out 1,ax ;        muestra el área o resultado final
hlt ;                  termina el programa

#040
0100000000000000;          numero de 32 bits  parte uno
0000000000000000;      parte dos
#050
0100000001001000;      numero de 32 bits parte uno
1111010111000010;      parte dos

2.- Promediar una cantidad de números.


#SimuProc 1.4.3.0

msg "ingrese la cantidad de números a promediar";


ldt ;                  el número es guardado en ax
sta 075;          el numero también se guarda en la posición de memoria 075
mov cx,075; la posición 075 es movida a cx
cla;                  asigna 0 ala variable ax          
msg "Ingresar un Numero" ; mensaje para ingresar números a promediar
ldt;                   el numero ingresado se  guarda automáticamente en ax
add 080;        aqui se suma a ax el número de la posición indicada
sta 080;          guarda el contenido de ax en la dirección indicada
loop 005;       el bucle   le resta uno a cx y si es distinto de 0 vuelve a la posición
div 075;          se divide x por la posición
msg "Promedio es" ; se imprimirá el promedio
eap ;               comando que imprime ax
hlt ;                  Finaliza el programa

PROGRAMAS CON SIMUPROC


PROGRAMA QUE ORDENA TRES NUMEROS

;Programa para ordenar tres números


msg 1 ingrese tres numeros de numeros
msg 2 ordena de mayor a menor
msg 3 ordena de menor a mayor
msg 4 SALIR
ldt
cmp 51
jme 60
jeq 70
cmp 52
jeq 80
cmp 53
jeq 100
cmp 54
jeq 62
hlt
#50
0
1
10
11
100
101
#60
msg ingrese solo los numeros del menú
jmp 0
msg ESTO TERMINÓ
hlt
#70
mov cx,53 ; se está inicializando el contador
mov cx,50 ; se está inicializando el contador
ldt
stb 56; Ax=>[mem + Bx]
inc bx
loop 72
jmp 0
#80
mov cx,52
lda 56; 56=>Ax
cmp 57
jma 86
jme 89
jeq 89
mov 59,56
mov 56,57
mov 57,59
lda 57
cmp 58
jma 8E
jme 91
jeq 91
mov 59,57
mov 57,58
mov 58,59
loop 81
mov cx,53
mov bx,52
ldb 56; [mem + Bx]=>Ax
eap
dec bx
loop 94
jmp 0
#100
mov cx,53
mov bx,50
ldb 56; [mem + Bx]=>Ax
eap
inc bx
loop 102
jmp 0

SUMA DE DOS NUMEROS (1° forma)


LTD introducir numero;(se almacena en AX)
sta 10; (lo que hay en AX manda ala direccion 10)
LTD introducir otro numero;(se almacena en AX)
ADD 10; (AX=lo que hay en AX el otro dato +direccion 10)
jo 20; (salto condicional saltar si hay desbordamiento)
EAP el resultado es;(muestra el nuevo valor de AX) 
HLT;
#20
msg numero muy grande introdusca otro;
jmp 02; (salto incondicional)

SUMA DE DOS NUMEROS (2° forma)

#SimuProc 1.4.3.0
MSG SUMA DE DOS NUMEROS
ldt INTRODUZCA EL PRIMER NUMERO
sta 10
ldt INTRODUZCA EL SEGUNDO NUMERO
add 10
jo 20 ; saltar si hay desbordamiento
eap EL RESULTADO ES:
hlt
#20
msg EL NÚMERO ES MUY GRANDE
jmp 02

OPERACIONES ARITMÉTICAS 

ldt introduzca un numero


sta 10
ldt introduzca otro numero
sta 20
mov ax,10
add 20
eap suma es:
mov ax,10
sub 20
eap resta es:
mov ax,10
mul 20
eap multiplicacion es:
mov ax,10
div 20
eap división es:
hlt

OPERACIONES ARITMÉTICAS CON MENÚ

MSG ESTE PROGTRAMA REALIA LAS OPERACIONES


MSG PRESIONE UNO PARA INTRODUCIR VALORES
MSG PRESIONE DOS PARA SALIR
LDT
CMP 102
JMA 110
JEQ 112
CMP 101
JEQ 114
JME 0
HLT

#100
0
1
10
11
100
101
#110
MSG NUMERO NO VALIDO
JMP 0
MSG ADIOS
HLT
ldt introdusca un numero
sta 10
ldt introdusca otro numero
sta 20
MSG ELIJA UNA OPERACION
MSG PRESIONE UNO PARA SUMAR
MSG PRESIONE DOS PARA RESTAR
MSG PRESIONE TRES PARA MULTIPLICAR
MSG PRESIONE CUATRO PARA DIVIDIR
MSG PRESIONE CINCO PARA VOLVER AL MENU PRINCIPAL
LDT
CMP 105
JMA 110
JEQ 200
CMP 101
JEQ 201
CMP 102
JEQ 205
CMP 103
JEQ 209
CMP 104
JEQ 20D

#200
JMP 0
mov ax,10
add 20
eap suma es:
JMP 118
mov ax,10
sub 20
eap resta es:
JMP 118
mov ax,10
mul 20
eap multipli es:
JMP 118
mov ax,10
div 20
eap divi es:
hlt

OPERACIONES CON MATRICES

MSG PRESIONE UNO PARA INTRODUCIR DATOS


MSG PRESIONE DOS PARA SUMAR
MSG PRESIONE TRES PARA RESTAR
MSG PRESIONE CUATRO PARA MULTIPLICAR
LDT
CMP 21
JME 25
JEQ 30
CMP 22
JEQ 60
CMP 23
JEQ 90
HLT

#20
0
1
10
11
101
#25
MSG SOLO NUMEROS DEL MENU
JMP 0

#30
MSG DATOS PRIMERA MATRIZ
LDT
STA 100
LDT
STA 101
LDT
STA 102
LDT
STA 103
LDT
STA 104
LDT
STA 105
LDT
STA 106
LDT
STA 107
LDT
STA 108
MSG DATOS SEGUNDA MATRIZ
LDT
STA 109
LDT
STA 10A
LDT
STA 10B
LDT
STA 10C
LDT
STA 10D
LDT
STA 10E
LDT
STA 10F
LDT
STA 110
LDT
STA 111
JMP 0
HLT

#60
LDA 100
ADD 109
EAP
STA 120
LDA 101
ADD 10A
EAP
STA 121
LDA 102
ADD 10B
EAP
STA 122
LDA 103
ADD 10C
EAP
STA 123
LDA 104
ADD 10D
EAP
STA 124
LDA 105
ADD 10E
EAP
STA 125
LDA 106
ADD 10F
EAP
STA 126
LDA 107
ADD 110
EAP
STA 127
LDA 108
ADD 111
EAP
STA 128
JMP 0
HLT
#90
LDA 100
SUB 109
EAP
STA 120
LDA 101
SUB 10A
EAP
STA 121
LDA 102
SUB 10B
EAP
STA 122
LDA 103
SUB 10C
EAP
STA 123
LDA 104
SUB 10D
EAP
STA 124
LDA 105
SUB 10E
EAP
STA 125
LDA 106
SUB 10F
EAP
STA 126
LDA 107
SUB 110
EAP
STA 127
LDA 108
SUB 111
EAP
STA 128
JMP 0
HLT

OPERACIONES CON POLINOMIOS

#SimuProc 1.4.3.0
; operaciones de polinomios de grado 2
msg Introduzca el primer polinomio
mov ax,50
mov bx,50
ldt
stb 60
inc bx
loop 3
msg Introduzca el segundo polinomio
mov cx,53
mov bx,50
ldt
stb 63
loop 0A
msg ¿Qué desea hacer?
msg 1-sumar
msg 2-restar
msg 3-multiplicar
msg 4-dividir
#50
0
1
10
11
100
101
#60
====NO LO PUDE HACER LO DEMAS========
=======================================

EJERCICIO DE 1° EXAMEN PARCIAL

#SimuProc 1.4.3.0
msg ****NOTAS***************
msg * 1.- Introducir Notas *
msg * 2.- ver Notas *
msg * 3.- Salir *
msg ************************
ldt
CMP 21
JME 25
JEQ 30
CMP 22
JEQ 40
CMP 23
JEQ 2E
HLT
#20
0
1
10
11
#25
MSG SOLO NUMEROS DEL MENU
JMP 0
#28
MSG SOLO NOTA MENOR A CUARENTA PTS
JMP 30
#2A
MSG SOLO NOTA MENOR A CUARENTA PTS
JMP 34
#2C
MSG SOLO NOTA MENOR A VEINTE PTS
JMP 38
#2E
MSG ADIOS
HLT
#30
LDT NOTA PRIMER PARCIAL
CMP 200
JMA 28
STA 90
LDT NOTA OPTATIVO
CMP 200
JMA 2A
STA 91
LDT NOTA ACT ACAD
CMP 201
JMA 2C
STA 92
JMP 0
#40
LDA 90
CMP 91
JME 60
JMA 65
JEQ 65
#50
LDA 93
CMP 202
JME 70
JMA 79
JEQ 79
#60
LDA 91
ADD 92
STA 93
JMP 50
#65
LDA 90
ADD 91
DIV 100
ADD 92
STA 93
JMP 50
#70
MSG TTENES QUE SACAR COMO MINIMO
LDA 202
SUB 93
EAP
MSG POR QUE TU NOTA ES
LDA 90
EAP
HLT
#79
MSG APROBADO
LDA 93
EAP

HLT

#100
10

#200
101000
10100
110011

;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

También podría gustarte