Reparando tu compu!

Contáctanos

Telefónos: 4421193047-4423239841 Mailito: Mafic e-mail Guillo e-mail
Mostrando entradas con la etiqueta pilas o stack. Mostrar todas las entradas
Mostrando entradas con la etiqueta pilas o stack. Mostrar todas las entradas

sábado, 22 de agosto de 2015

Recordando ensamblador



Las directivas



Comienzan con un punto.



Comentan los segmentos que se empiezan a crear



.stack

Segmento de la pila



.model

Tipo de modelo por ejemplo small.



.data

Sobre el segmento de datos.



.code

Comenta nuestro segmento de el código.



db  

Define Bit

Software para programar en ensamblador 

 Ref: http://www.microsoft.com/en-us/download/details.aspx?id=12654 , http://emu8086.waxoo.com/


Punteros

Registro CS
2 bytes de tamaño.
Indica el segmento actual en que se encuentra el programa.

IP
2 bytes de tamaño.
Contiene el Offset actual.
CS: IP
Indica la dirección que se interpreta como próxima a ser ejecutada.
DS, ES
También guardan direcciones.

Registro SS
Apunta a la pila
SP
Contiene el offset.

Registros más comunes
Ax, bx, cx, dx.

Ax se divide en ah, al. Es flexible, permite multiplicaciones, divisiones, se denomina acumulador.

Bx en bh, bl. Es “handler”, abre/cierra archivos, etc, es un registro de propsito general también…

Cx en cl. Se suele usar como contador.

Dx en dh, dl. Suele ser el puntero, en lugares de memoria.

SI, DI se usan para copiar bytes.

La H implica High en inglés…. O de mayor valor y “l” de Low o menor valor.


Flags

O: Overflow D: Dirección I: Interrupciones rehabilitadas

T: Trampa S: Signo Z: Cero

A: Acarreo auxiliar P: Paridad C: Acarreo ±: No utilizado

Saltos

JO: Jump if overflow. Salta si el flag de desbordamiento está a uno
JNO: Jump if not overflow. Salta si el flag de desbordamiento está a cero.
JC, JNAE, JB: Los tres sirven para lo mismo. Significan: Jump if Carry, Jump if Not Above or Equal y Jump if Below.
JZ o JE: Jump if Zero o Jump if Equal. Salta si el flag de cero está a 1, o sea, si las dos instrucciones comparadas son iguales.
JNZ o JNE: Jump if Not Zero o Jump if Not Equal. Salta si el flag de ceroest  a 0, o sea, si las dos instrucciones comparadas no son iguales.
JBE o JNA: Jump if Below or Equal o Jump if Not Above.
JA o JNBE: Jump if Above o Jump if Not Below of Equal.
JS: Jump if Sign.
JNS: Jump if Not Sign.
JP, JPE: Jump if Parity o Jump if Parity Even.
JNP, JPO: Jump if Not Parity, Jump if Parity Odd.
JGE, JNL: Jump if Greater or Equal, Jump if Not Less.
JLE, JNG: Jump if Lower or Equal, Jump if Not Greater.
JG, JNLE: Jump if Greater, Jump if Not Lower or Equal.

En una pila Last In First Out “LIFO”
PUSH empuja una variable a la pila.
POP la saca.
PUSH DX ; Mete en la pila el contenido de DX
PUSH CX ; Y ahora el contenido de CX
POP AX ; Ahora saca el último valor introducido ( CX )
;y lo coloca en AX.

Interrupción 21h

Para el tratamiento de archivos.

Referencia: http://platea.pntic.mec.es/jdelucas/ensamblador.htm
 


Ejemplo:

.data
caracter1 db ‘a$’
Se define el carácter “a”, el símbolo de “$” implica el fin de la declaración.
.data
caracter1 db ‘a$’
caracter2 db 61h, ‘$’
61h indíca el carácter “a” en hexadecimal. Cuando es en bit, se escribe “b”.

.data
caracter1 db ‘a$’
caracter2 db 61h, ‘$’
caracter3 db 97h, ‘$’
caracter4 db ‘hola mundo$’
caracter5 db ‘H’,’o’,’l’,’a’, ‘$’
character6 db 13,10, ‘Hola$’
                    db 13,10,’esto está en lista’

.code
inicio:
mov ax, @data
mov ds, ax
mov dx, offset caracter1
mov ah, 09h
int 21h
mov ah, 4ch
int 21h
end inicio
@data hace referencia al segmento de datos… en registro ax
ds da a segmento de datos… o registro
dx es segmento de datos…
Un offset indíca un desplazamiento.
13, 10 es salto de línea… (retorno de carro y salto de línea)
 61h en hexadecimal comenta el carácter a
97 versión decimal del carácter a
09h subfuncion para imprimir en pantalla
“int” interrupción 21 interrupcion 21h
“ah” parte alta del acumulador
Programa en turboasembler


“add” para sumaar registros
“sub” para restar registros
“multi” para miltiplicar registros
“div” para dividir
REf: video para operaciones simples en ensamblador https://www.youtube.com/watch?v=hczDiEqOYH4





 
  Ref: wikipedia.org

martes, 9 de diciembre de 2014

Resistencia, Capacitor o Condensador, Electrodo, Diodo, Triodo, Pilas o Stack, la máquina de Turing

Sobre el Binary DigiT o Bit

Con 4 bites se obtiene un nibble o una letra en hexádecimal.
con 8 bites se obtiene 1 byte.



Hexadecimal

Utiliza la base 16. Las posiciones de los dígitos se ponderan o consideran como potencias de 16. 
286310  -> 1011 0010 1111 -> B2F16  
15 con 4 bits en 1. 

16 con 5 bits.
32 con 6 bits.
64 con 7 bits.
128 con 8 bits.
256 con 9 bits.
512 con 10 bits.
1024 con 11 bits.
2048 con 12 bits.
4096 con 13 bits.
8192 con 14 bits.
16,384 con 15 bits.
32,768 con 16 bits.
65,536 con 17 bits.
131,072 con 18 bits...

2048 o 1 
1024 o 0
512 en 1    2048+512+256= 2816 - 2863 = -47


2048 + 512 = 2560 la cantidad que busco es 2863, me faltan como 300 en bit.
Pero se empieza a hacer la cuenta en binario, en cuanto a los primeros números o bits de mayor tamaño.
Si se hace una división en base binaria o 2. Sería el siguiente método: 
2863 / 2 = 1431.5    1
1431/2 = 715.5        1
715/2 = 357.5          1
357/2 = 178.5          1
178/2 = 89
89/2= 44.5    1
44/2 = 22
22/2 = 11
11/2 = 5.5     1
5/2 = 2.5       1
2/2=1
1/2 = 0.5       1

Recordando primer semestre de la universidad en la UAQ, y con intromisiones de viajeros en el tiempo.
---------------------------------

An exercise with the houghards!:
12/2  = 6      0 Less Significative Bit.
6/2= 3          0

3/2 = 1.5      1
1/2 = 0.5      1  More significative Bit.

1100
------------------------------    


Resistencia

Se resiste a el flujo electrico o voltaíco.





En serie se cálcula por medio de la suma.

RT= R1 +R2 ... Rn

RT= 100Ω+ 200Ω... Rn = 300 Ω

En paralelo, se cálcula por medio de la divisiión.

RT=        1                 
        1   +  1  ... + 1
        R1    R2       Rn

RT = 7.2 Ω || 8.5 Ω = 1/(0.138 + 0.117) = 1/(.255) = 3.92 Ω






El capacitor o condensador



Tienen un par de superficies conductoras, en forma de láminas o placas.
Condensan o capacitan la energía.
La misma energía que obtienen, la misma energía que cedén.
Matemáticamente, se puede obtener que la energía "E" almacenada en un condensador con capacidad "C" que es conectado a una diferencia de potencial "V1-V2", viene dada por la siguiente fórmula:



Las siguientes formulas también corresponden a el uso de capacitores.
La capacitancia indica la capacidad de almacenamiento de carga y su unidad es el Faradio. 
La constante de Faraday se define como la cantidad de carga eléctrica en un mol de electrones. Se representa por F= Número de Avogadro(apróximadamente 6,022×1023mol-1, y es la carga eléctrica elemental o la magnitud de la carga eléctrica de un electrón (apróximadamente 1.602×10−19 Coulombs por electrón; esto fué calculado con una solución electrolítica y el uso de plata). 




Sobre las Pilas o el Stack, y el Almacenamiento de Información

 
Pila o Stack

- Es un método de estructuración de datos, como a modo "last in in, first in out" o LIFO, último en entrar, primero en salir. Sus operaciones básicas son "push" o "apilar" y "desapilar" o "pop". En todo momento únicamente se puede acceder al último elemento apilado, lo cual se comenta como TOS.




 
Máquina de Turing (MT)

-Es un dispositivo de reconocimiento del lenguaje. Tiene un control finito, una cabeza lectora y una cinta donde puede haber caracteres, y eventualmente viene la palabra de entrada. Es infinita hacía la derecha, pero finita hacía la izquierda.

-Transforma un INPUT en un OUTPUT.







Bajo nível


TIPOS DE VARIABLES

Tipo de variables
Palabra
clave
Bytes
requeridos
Rango
Carácter
char
1
-128 a 127
Entero
int
2
-32768 a 32767
Entero Corto
short
2
-32768 a 32767
Entero Largo 
long
4
-2,147,483,648 a 2,147,483,647
Carácter sin signo
unsigned char
1
0 a 255
Entero  sin signo
unsigned int
2
0 a 65535
Entero corto sin signo
unsigned short
2
0 a 65535
 Entero largo sin signo
unsigned long
4
0 a 4,294,967,295
Punto flotante de precisión sencilla
float
4
1.2E-38 a 3.4E38
Punto flotante de doble precisión
double
8
2.2E-308  a 1.8E308
Rango aproximado; precisión = 7 dígitos
Rango aproximado; precisión =19 dígitos


 


Sobre binario

1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255


Imagen de: http://www.atariarchives.org/mmm/bits_and_bytes.php 

Led o Light Emitting Diode



Electrodo, diodo, triodo