LENGUAJE Y AUTOMATAS 2
jueves, 23 de mayo de 2024
4.3 Lenguaje Máquina
lunes, 20 de mayo de 2024
CODIGO DE EMU8086
.model small
.stack 100h
.data
msg1 db 10,13,"1.- suma",0DH,0AH,"$"
msg2 db "2.- resta",0DH,0AH,"$"
msg3 db "3.- multiplicacion",0DH,0AH,"$"
msg4 db "4.- division",0DH,0AH,"$"
msg5 db "5.- salir del menu",0DH,0AH,"$"
msg7 db "seleccione una opcion del 1 al 6 en el menu ",0DH,0AH,"$"
msj1 db "Ingrese el primer numero", 0DH, 0AH, "$"
msj2 db "Ingrese el segundo numero", 0DH, 0AH, "$"
msj3 db "Resultado", 0DH, 0AH, "$"
num1 db ?
num2 db ?
resultado db ?
msjjj1 db "Digite el primer numero : ", 0DH, 0AH,"$"
msjjj2 db "Dgite el segundo numero : ", 0DH, 0AH,"$"
fina db "Resultado es:", 0DH, 0AH,"$"
num11 db ?
num22 db ?
resa db ?
saltos db "", 0DH, 0AH,"$"
msgg1 db "Ingresa el primer numero: ", 0DH, 0AH, "$"
msgg2 db "Ingresa el segundo numero: ", 0DH, 0AH, "$"
msgg3 db "La suma de los numeros es: $"
msjj1 db 10, 13, "Ingresa el primer numero: $"
msjj2 db 10, 13, "Ingresa el segundo numero: $"
msjj3 db 10, 13, "El resultado es: $"
msjj4 db 10, 13, "", "$"
newline db 0DH, 0AH, "$"
spa db "", 0DH, 0AH, "$"
bienvenida db 10,13,"ingrese la suma",0DH,0AH,"$"
nombre db 10,13,"ingrese la resta",0DH,0AH,"$"
comida db 10,13,"ingrese la multiplicacion",0DH,0AH,"$"
pelicula db 10,13,"ingrese la division",0DH,0AH,"$"
final db 10,13,"---PROGRAMA FINALIZADO---"
angel db 10,13,"Angel Yovani Cancino Ruiz, 21700162",0DH,0AH,"$"
delmar db 10,13,"Delmar Eli Martinez Martinez, 21700207",0DH,0AH,"$"
luis db 10,13,"Luis Miguel Marroquin Simon, 21700206",0DH,0AH,"$"
.code
programa:
mov ax, @data
mov ds, ax
jmp mostrarmenu
mostrarmenu:
mov dx, offset msg1
call imprimir
mov dx, offset msg2
call imprimir
mov dx, offset msg3
call imprimir
mov dx, offset msg4
call imprimir
mov dx, offset msg5
call imprimir
mov dx, offset msg7
call imprimir
mov ah,01h
int 21h
mov dl,al
cmp dl,31h
je opcion1
cmp dl,32h
je opcion2
cmp dl,33h
je opcion3
cmp dl,34h
je opcion4
cmp dl,35h
je opcion5
jnp mostrarmenu
opcion1:
mov dx, offset bienvenida
call imprimir
; Solicitar primer número
mov dx, offset msgg1
call imprimir
mov ah, 01h
int 21h
sub al, 30h ; Convertir de ASCII a valor numérico
mov bl, al ; Guardar el primer numero
; Solicitar segundo número
mov dx, offset msgg2
call imprimir
mov ah, 01h
int 21h
sub al, 30h ; Convertir de ASCII a valor numérico
add bl, al ; Sumar el segundo número al primero (bl)
; Mostrar la suma
mov dx, offset msgg3
call imprimir
mov dl, bl ; El resultado esta en bl
add dl, 30h ; Convertir de valor numérico a ASCII
mov ah, 02h
int 21h
mov dx, offset newline
call imprimir
jmp mostrarmenu
; Finalizar el programa
mov ax, 4c00h
int 21h
opcion2:
mov dx, offset nombre
call imprimir
; Solicitar primer numero
mov dx, offset msjj1
call imprimir
mov ah, 01h
int 21h
sub al, 30h ; Convertir de ASCII a valor numerico
mov bl, al ; Guardar el primer numero
;Salto de linea
mov dx, offset msjj4
call imprimir
; Solicitar segundo numero
mov dx, offset msjj2
call imprimir
mov ah, 01h
int 21h
sub al, 30h ; Convertir de ASCII a valor numerico
sub bl, al ; Sumar el segundo numero al primero (bl)
; Mostrar la resta
mov dx, offset msjj4
call imprimir
mov dx, offset msjj3
call imprimir
mov dl, bl ; El resultado esta en bl
add dl, 30h ; Convertir de valor numerico a ASCII
mov ah, 02h
int 21h
mov dx, offset newline
call imprimir
jmp mostrarmenu
opcion3:
mov dx, offset saltos
call imprimir
mov dx, offset msjjj1
call imprimir
mov ah, 1h
int 21h
sub al, 30h
mov num11, al
mov dx, offset saltos
call imprimir
mov dx, offset msjjj2
call imprimir
mov ah, 01h
int 21h
sub al, 30h
mov num22, al
mov al, num11
mov bl, num22
mul bl
mov resa, al
add resa, 30h
mov dx, offset saltos
call imprimir
mov dx, offset fina
call imprimir
mov dl,resa
mov ah, 2h
mov dl, resa
int 21h
jmp mostrarmenu
opcion4:
mov dx, offset pelicula
call imprimir
mov dx, offset msj1
call imprimir
mov ah, 01h
int 21h
sub al, 30h
mov num1, al
mov dx, offset spa
call imprimir
mov dx, offset msj2
call imprimir
mov ah, 01h
int 21h
sub al, 30h
mov num2, al
mov al, num1
mov bl, num2
xor ah, ah
div bl
mov resultado, al
add resultado, 30h
mov dx, offset spa
call imprimir
mov dx, offset msj3
call imprimir
mov dl, resultado
mov ah, 2h
int 21h
jmp mostrarmenu
opcion5:
mov dx, offset angel
call imprimir
mov dx, offset delmar
call imprimir
mov dx, offset luis
call imprimir
call finalizar
imprimir:
mov ah, 09h
int 21h
ret
finalizar:
mov ax, 4ch
int 21h
end programa
lunes, 6 de mayo de 2024
Resumen del video
En el video no dise "Cómo funciona la memoria de la computadora" de Kanawat Senanan explica los diferentes tipos de memoria de la computadora, cómo se almacenan y acceden a los datos y cómo la memoria puede degradarse con el tiempo. Cubre mucha información en poco tiempo, lo que lo convierte en un gran recurso para cualquiera que quiera aprender más sobre cómo funciona la memoria de una computadora.
Denise R Quivu Revisor: Sebastian Betti En muchos sentidos, nuestros recuerdos nos representan, nos ayuda a recordar nuestro pasado, aprender y mantener habilidades,y planificar el futuro.Y para la computadora que actúa como una extensión de nosotros mismos, la memoria juega el mismo papel, sea que se trata de una película de dos horas, un archivo de texto de dos palabras,o las instrucciones para ponerla en marcha; y toda su memoria tiene como unidades básicas las denominadas bits o dígitos binarios. Cada uno de estos se almacena en una celda de memoria cuyo estado puede variar entre dos valores posibles, 0 y 1.Los archivos y los programas contienen millones de estos bits, que están procesados dentro de la unidad de procesamiento central, o CPU, que actúa como el cerebro de la computadora.Y conforme crece exponencialmente la cantidad de bits que procesan, los diseñadores de computadoras intentan constantemente solucionar el problema del tamaño, costo y velocidad.Al igual que nosotros, las computadoras tienen memoria a corto plazo para las tareas inmediatas, y memoria a largo plazo para el almacenamiento permanente.Cuando se ejecuta un programa, su sistema operativo asigna un espacio dentro de la memoria a corto plazo para las dichas instruccionesPor ejemplo, al pulsar una tecla en un procesador de texto, la CPU accederá a uno de estos lugares para recuperar los bits de datos.También podría modificarlos o crear otros nuevos.El tiempo necesario para hacerlo se conoce como la latencia de la memoria.Y debido a que las instrucciones de cada programa deben ser procesadas rápidamente y de forma continua, se puede acceder a cualquier espacio dentro de la memoria a corto plazo en cualquier orden,y de ahí el nombre de memoria de acceso aleatorio, o RAM.El tipo más común de memoria RAM es memoria RAM dinámica, o DRAM.Allí, cada celda consta de un pequeño transistor y un condensador que almacenan cargas eléctricas, representada con un 0 cuando no está cargada o un 1 cuando lo está.Allí, cada celda consta de un pequeño transistor y un condensador que almacenan cargas eléctricas, representada con un 0 cuando no está cargada o un 1 cuando lo está.Dicha memoria se llama dinámica porque mantiene una carga brevemente antes de perderla, y necesita recargarse periódicamente para retener datos.
4.1 registros de la computadora
¿Qué son?
jueves, 2 de mayo de 2024
viernes, 19 de abril de 2024
video Costo de ejecución. (memoria, registros, pilas).
https://drive.google.com/file/d/1XUA9Mt64YN5rKVaqTw-c5335jZJpI9w9/view?usp=sharing
lunes, 8 de abril de 2024
3.1 tipos de optimizacion
Tipos de
optimización:
Optimizaciones
Globales
Optimizaciones
de Ciclo
Optimización de
Mirilla
Optimizaciones
Locales
La
optimización es un proceso que tiene a minimizar o maximizar alguna variable de
rendimiento, generalmente tiempo, espacio, procesador, etc.
La optimización
se realiza reestructurando el código de tal forma que el nuevo código generado
tenga mayores beneficios.
Optimización
Local
• Las
optimizaciones locales se realizan sobre el bloque básico
•
Optimizaciones locales
– Folding
– Propagación
de constantes
– Reducción de
potencia
– Reducción de
subexpresiones comunes
Bloque Básico
• Un bloque
básico es un fragmento de código que tiene una única entrada y salida, y cuyas
instrucciones se ejecutan secuencialmente. Implicaciones:
– Si se ejecuta
una instrucción del bloque se ejecutan todas en un orden conocido en tiempo de
compilación.
• La idea del
bloque básico es encontrar partes del programa cuyo análisis necesario para la
optimización sea lo más simple posible.
Ensamblamiento
(Folding)
• El
ensamblamiento es remplazar las expresiones por su resultado cuando se pueden evaluar
en tiempo de compilación (resultado constante).
– Ejemplo:
A=2+3+A+C -> A=5+A+C
• Estas
optimizaciones permiten que el programador utilice cálculos entre constantes
representados explícitamente sin introducir ineficiencias.
Implementación
del Folding
•
Implementación del floding durante la generación de código realizada
conjuntamente con el análisis sintáctico.
– Se añade el
atributo de constante temporal a los símbolos no terminales y a las variables
de la tabla de símbolos.
– Se añade el
procesamiento de las constantes a las reglas de análisis de expresiones.
– Optimiza:
2+3+b -> 5+b
• Hay una suma
de constantes (2+3)+b
– No optimiza:
2+b+3 -> 2+b+3
• No hay una
suma de constantes (2+b)+3
Implementación
del Folding
•
Implementación posterior a la generación de código
– Buscar partes
del árbol donde se puede aplicar la propiedad conmutativa:
• Sumas/restas:
como la resta no es conmutativa se transforma en sumas: a+b-c+d ->
a+b+(-c)+d
•
Productos/divisiones: como la división no es conmutativa se transforma en
productos: a*b/c*e -> a*b*(1/c)*e
– Buscar las
constantes y operarlas
– Reconstruir
el árbol.
Propagación de
constantes
• Desde que se
asigna a una variable un valor constante hasta la siguiente asignación, se
considera a la variable equivalente a la constante.
• Ejemplo:
Propagación Ensamblamiento
PI=3.14 ->
PI=3.14 -> PI=3.14
G2R=PI/180
-> G2R=3.14/180 -> G2R=0.017
PI y G2R se
consideran constantes hasta la próxima asignación.
• Estas
optimizaciones permiten que el programador utilice variables como constantes
sin introducir ineficiencias. Por ejemplo en C no hay constantes y será lo
mismo utilizar
– Int a=10;
– #define a 10
Con la ventaja
que la variable puede ser local.
• Actualmente
en C se puede definir const int a=10;
implementación
de la Propagación de Constantes
• Separar el
árbol en bloques básicos
– Cada bloque
básico será una lista de expresiones y asignaciones
• Para cada
bloque básico
– Inicializar
el conjunto de definiciones a conjunto vacío.
• Definición:
(variable,constante)
– Procesar
secuencialmente la lista de expresiones y asignaciones
– Para
expresión y asignación
• Sustituir las
apariciones de las variables que se encuentran en el conjunto de definiciones
por sus constantes asociadas.
– Para
asignaciones
• Eliminar del
conjunto de definiciones la definición de la variable asignada
• Añadir la
definición de la variable asignada si se le asigna una constante.
miércoles, 20 de marzo de 2024
ejercicio en pizzaron
NOTACION POLACA
polaca y polaca inversa
Pre orden
-+*/6721+-7/*2368
-+*(6*7)21+-7/(2*3)68
-+((6/7)*2)1+-7((2*3)/6)8
-(((6/7)*2)+1)+(7-((2*3)/6)8
(((6/7)*2)+1)-(7-((2*3)/6)+8)
Pos Orden
67/2*1+723*6/-8+1
(6/7)2*1+7(2*3)6/-8+1
((6/7)*2)1+7((2*3)/6)-8+-
(((6/7)*2)+1)(7-((2*3)/6)+8)
((((6/7*2)+1)))-((7-((2*3)/6)+8))
lunes, 4 de marzo de 2024
viernes, 1 de marzo de 2024
4.3 Lenguaje Máquina
4.3 Lenguaje Máquina Es el que proporciona poca o ninguna abstracción del microprocesador de un ordenador. El lenguaje máquina solo es ent...

