Notas de alumnos:
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 Por favor solo ingresar los números pedidos en el menú:
JMP 0
#28
MSG Solo Nota menor a cuatro
JMP 30
#2A
MSG Solo Nota menor a cuatro
JMP 34
#2C
MSG Solo Nota menor a dos
JMP 38
#2E
MSG Adios
HLT
#30
LDT Nota Primer Departamental
CMP 200
JMA 28
STA 90
LDT Nota Segunda Departamental
CMP 200
JMA 2A
STA 91
LDT Nota de Trabajos y Talleres
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 Tienes que sacar como minimo un
LDA 202
SUB 93
EAP
MSG Ya que tu no es
LDA 90
EAP
HLT
#79
MSG APROBADO
LDA 93
EAP
HLT
#100
10
#200
101000
10100
110011
Este programa sacara Notas del alumno (Toda nota de igual ponderación)
Este es pedido mediante el menú que aparece en la imagen y puedes agregar 3 notas.
Una vez ya ingresada las notas puedes calcular el promedio ,este te dirá si aprobaste o te dirá que nota necesitas para aprobar el ramo.
PD; Este programa no funciona con números decimales, solo con números enteros si la nota es un 5,0 este debe ser ingresado como 50.
Simulador de un Procesador
miércoles, 25 de enero de 2017
Calculadora
Calculadora basica:
MSG Este programa realizara operaciones
MSG Presiones uno para introducir los 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 operación
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 menú 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 multiplicacion es:
JMP 118
mov ax,10
div 20
eap division es:
hlt
Podemos ver que la calculadora que esta anteriormente puede calcular 2 números al gusto del usuario y trabajar con estos, con las operaciones básicas.
este consiste en 2 menús.
El menú inicial (primera imagen) tras ejecutar el programa y dejando al usuario a gusto de salir o agregar los nuevos datos(numero 1, numero 2).
Una vez agregado los números a gusto podremos trabajar con estos mediante el nuevo menú en pantalla (segunda imagen),el cual consiste en las operaciones básicas matemáticas.
El usuario tiene la posibilidad de trabajar con estos números tras operación a operación ,sin embargo al salir de este segundo menú se le envía al primer menú el cual puede cambiar los números nuevamente o simplemente salir
MSG Presiones uno para introducir los 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 operación
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 menú 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 multiplicacion es:
JMP 118
mov ax,10
div 20
eap division es:
hlt
Podemos ver que la calculadora que esta anteriormente puede calcular 2 números al gusto del usuario y trabajar con estos, con las operaciones básicas.
este consiste en 2 menús.
El menú inicial (primera imagen) tras ejecutar el programa y dejando al usuario a gusto de salir o agregar los nuevos datos(numero 1, numero 2).
Una vez agregado los números a gusto podremos trabajar con estos mediante el nuevo menú en pantalla (segunda imagen),el cual consiste en las operaciones básicas matemáticas.
El usuario tiene la posibilidad de trabajar con estos números tras operación a operación ,sin embargo al salir de este segundo menú se le envía al primer menú el cual puede cambiar los números nuevamente o simplemente salir
Orden de 3 números con menu:
Orden de numeros con menu:
msg 1 Ingrese tres 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
Este programa tiene la capacidad de al recibir 3 números (enteros) estos pueden ser ordenados al gusto del usuario.Teniendo 4 opciones ,La primera ingresara números ,la segunda ordenara de mayor a menor ,la tercera de menor a mayor y la cuarta para salir.
El programa funcionara perfectamente si uno ingresa los tres números requeridos.
msg 1 Ingrese tres 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
Este programa tiene la capacidad de al recibir 3 números (enteros) estos pueden ser ordenados al gusto del usuario.Teniendo 4 opciones ,La primera ingresara números ,la segunda ordenara de mayor a menor ,la tercera de menor a mayor y la cuarta para salir.
El programa funcionara perfectamente si uno ingresa los tres números requeridos.
miércoles, 30 de noviembre de 2016
Dificultades de uso
Pros:
- Simuproc tiene mas de 50 variedades de instrucciones capaz de tener infinitas posibilidades de pruebas.
- Incluye soporte para números de punto flotante y enteros de -2GB hasta 2GB.
- Podrás aprender las nociones básicas para empezar a programar en lenguaje ensamblador ya que este puede ser observado todo el proceso interno de ejecución del programa a través de cada ciclo del procesador.
Contras:
- Como el programa tiene muchas funcionalidades cada función tiene su instrucción,eso puede ser tedioso para el usuario.Un ejemplo de esto, seria el ejemplo del taller 2, que se ingresaban solo números enteros positivos, no permitiendo el ingreso de números negativos ni decimales.
Para ingresar números decimales o negativos se realiza el siguiente código:
1 MSG ingrese primer numero
2 in ax , 1
3 stf 10
4 msg ingrese segundo numero
5 in ax , 1
6 mulf 10
7 msg su resultado es
8 out 1 , ax
9 hlt
Como vemos en el ejemplo anterior(Taller 2) se ocupaba ldt y sta que trabajaba con números enteros positivos, sin embargo en este trabajaremos con el comando in , stf y out cual puede trabajar con números decimales positivos o negativos.
Trabajaremos con la operación 2,4*-5 y tenemos como resultado - No es posible ver la operatoria de los procesos que estan trabajando internamente en la unidad aritmetica logica (ALU)
domingo, 20 de noviembre de 2016
Multiplicación
En esta ocasión haremos una multiplicación de dos números en simuproc como parte del taller dos.
Explicaremos el código y mostraremos la ejecución del programa.
Explicaremos el código y mostraremos la ejecución del programa.
Código:
1 MSG Multiplicación de dos numeros
2 ldt Ingrese primer numero:
3 sta 10
4 ldt Ingrese segundo numero
5 mul 10
6 jo 20 ; saltar si hay desbordamiento
7 eap Su resultado es:
8 hlt
9 #20
10 msg Error, introduzca otro numero:
11 jmp 02
Linea 2 el numero que ingresa el usuario se almacena en la variable AX.
Linea 3 Lo almacenado en AX lo deja en la dirección 10.
Linea 4 cumple la misma que en la linea 2.
Linea 5 Multiplica lo que hay en la dirección 10 con el valor de AX y lo sobrescribe en AX
Linea 6 Si el numero es muy grande ( desbordamiento de bits ) salta a la dirección 20 (linea 9)
Linea 7 Muestra en pantalla el resultado de AX
Linea 8 Indica termino de programa
Linea 9 descrito anteriormente
Linea 10 si hubo un error, se vuelve a pedir el numero
Linea 11 realiza un salto incondicional
Resultado de 5 x 9
jueves, 17 de noviembre de 2016
Introducción a SimuProc
Un simulador de procesador es un programa que nos permite escribir instrucciones en lenguaje
de bajo nivel (maquina,ensamblador) en el cual podemos observar el proceso interno de ejecucion
del programa atraves de cada ciclo de procesador.
El clico del procesador consta:
1)Ciclo Fetch:
-Va al PC(Program Counter:contiene la proxima direccion de memoria a ejecutar)
-Va a la direccion que apunta el pc
-Hace IR = MEM[PC](IR:Instruccion Registrer donde decodifica e interpreta la instruccion y sus parametros)
-Incrementa PC
2)Ciclo de ejecucion:
-Si se tiene que ir a memoria
-Va memoria
-Ejecuta instruccion
-Almacena resultados
El simulador oficial de la asociacion de cazadores es SimuProc, un simulador hipotetico el cual
posee una gran variedad de instrucciones para realizar pruebas.Incluye soporte para numeros
de punto flotante y enteros,Tambien un coversor de bases que soporta de la 2 a la 36.
Algunos ejemplos de su set de instrucciones:
XX - INSTRUC[parametro] XX: es el codigo de la instruccion
INSTRUC: es la instruccion
[parametros] si es que tiene mas de
uno[parametro1,paramtro,....,parametron]
01 - LDA[men] --->Cargue en AX el contenido de la dirección de Memoria especificada.
02 - STA[men] --->Guarde el contenido de AX en la dirección de Memoria especificada.
03 - XAB --->Intercambia valores de registros AX y BX(no necesita parametros)
04 - CLA --->Hace AX = 0
05 - PUSH[registro]--->Envia el valor del registros a la pila
06 - POP [registro]--->Trae de la pila el ultimo valor llevado por push y lo almacena en el registro.
07 - INC [destino ]--->Incrementa en 1 el destino especificado, el parámetro puede ser una dirección de memoria o un registro.
08 - DEC [destino ]--->Decremento en 1 el destino especificado, Si el destino queda = 0, se vuelve Z = 1
09 - MOV [dest,org]--->Copia el valor almacenado en el origen al destino. El destino y/o origen pueden ser registros o direcciones de memoria o combinación de estos.
10 - AND [dest,org]--->Y lógico, hace un Y lógico entre todos los bits de los dos operándos escribiendo el resultado en el destino. Los parámetros pueden ser direcciones de memoria o Registros.
12 - NOT [destino ]--->NO lógico, invierte los bits del operando formando el complemento del primero.
13 - OR [dest,org]--->O inclusive lógico, todo bit activo en cualquiera de los operándoos será activado en el destino. La siguiente regla aplica.
Acontinuacion una vista del programa:
Programa que busca numeros primos hasta n
de bajo nivel (maquina,ensamblador) en el cual podemos observar el proceso interno de ejecucion
del programa atraves de cada ciclo de procesador.
El clico del procesador consta:
1)Ciclo Fetch:
-Va al PC(Program Counter:contiene la proxima direccion de memoria a ejecutar)
-Va a la direccion que apunta el pc
-Hace IR = MEM[PC](IR:Instruccion Registrer donde decodifica e interpreta la instruccion y sus parametros)
-Incrementa PC
2)Ciclo de ejecucion:
-Si se tiene que ir a memoria
-Va memoria
-Ejecuta instruccion
-Almacena resultados
El simulador oficial de la asociacion de cazadores es SimuProc, un simulador hipotetico el cual
posee una gran variedad de instrucciones para realizar pruebas.Incluye soporte para numeros
de punto flotante y enteros,Tambien un coversor de bases que soporta de la 2 a la 36.
Algunos ejemplos de su set de instrucciones:
XX - INSTRUC[parametro] XX: es el codigo de la instruccion
INSTRUC: es la instruccion
[parametros] si es que tiene mas de
uno[parametro1,paramtro,....,parametron]
01 - LDA[men] --->Cargue en AX el contenido de la dirección de Memoria especificada.
02 - STA[men] --->Guarde el contenido de AX en la dirección de Memoria especificada.
03 - XAB --->Intercambia valores de registros AX y BX(no necesita parametros)
04 - CLA --->Hace AX = 0
05 - PUSH[registro]--->Envia el valor del registros a la pila
06 - POP [registro]--->Trae de la pila el ultimo valor llevado por push y lo almacena en el registro.
07 - INC [destino ]--->Incrementa en 1 el destino especificado, el parámetro puede ser una dirección de memoria o un registro.
08 - DEC [destino ]--->Decremento en 1 el destino especificado, Si el destino queda = 0, se vuelve Z = 1
09 - MOV [dest,org]--->Copia el valor almacenado en el origen al destino. El destino y/o origen pueden ser registros o direcciones de memoria o combinación de estos.
10 - AND [dest,org]--->Y lógico, hace un Y lógico entre todos los bits de los dos operándos escribiendo el resultado en el destino. Los parámetros pueden ser direcciones de memoria o Registros.
12 - NOT [destino ]--->NO lógico, invierte los bits del operando formando el complemento del primero.
13 - OR [dest,org]--->O inclusive lógico, todo bit activo en cualquiera de los operándoos será activado en el destino. La siguiente regla aplica.
Acontinuacion una vista del programa:
Programa que busca numeros primos hasta n
Suscribirse a:
Entradas
(
Atom
)