La familia de procesadores 8086 esta relacionado con ensamblador, los registros (ahora entenderas que es esto) son los siguientes:
Registros de datos: AX BX CX DX
Punteros de pila: SP BP
Registros de índice: DI SI
Registros de segmento: CS DS ES SS
Registro de flags: De momento esto no se explicara
El registro de datos es exactamente lo que crees, es para mantener datos. Todos ellos (AX, BX, CX, DX) tienen "practicamente" la misma funcionalidad, y entrecomillo practicamente porque en algunos casos una operacion usa exactamente uno y solo ese.
AX: se le llama acumulador porque es el que se usa para acumular datos, esto es mas por razones historicas mas que por otra cosa... Por ejemplo: si quisieses hacer esta operacion 2+2+5+22, lo que habria que hacer es mover a AX el primer operando (2) luego sumarle el segundo operando (2), sumarle el siguiente (5), etc..
BX: se suele usar para apuntar a direcciones de memoria.
CX: se usa como contador.. si vienes de otro lenguaje de programacion te sonara mucho lo de "for(int i=0; i<100; i++)", pues aqui CX seria la variable i
DX: Se suele usar junto con AX
Todos los registros antes mencionados son de 16 bits, es decir, de 4 bytes (16/4=4), para hacer referencia a uno de 32 bits, es decir, 8 bytes, hace falta ponerle una "E" delante, por lo tanto quedaria asi: EAX EBX ECX EDX.
Un simple ejemplo en el que se suman unos numeros:
; En cualquier parte del editor si escribes el punto y coma ";" se entiende que es un
; comentario
; Esto es un comentario, lo que en C seria //
mov ax, 2 ; movemos al registro el numero 2
add ax, 5 ; a lo que haya en ax(2) le sumamos el numero 5
add ax, 6 ; y ahora le añadimos el numero 6
; Ahora mismo el valor de AX en decimal es igual a (2+5+6) 13..
jueves, 6 de agosto de 2015
domingo, 12 de julio de 2015
Inicio
Empiezo este blog con el objetivo de recopilar diferentes códigos o dudas que puede tener un novato con el lenguaje ensamblador para Windows.
Todos los códigos han sido testados en una maquina virtual Windows 7 y estoy usando Radasm con masm32.
Intentare comentar lo mas posible todos los códigos a parte de comentar el "objetivo" que tienen esas lineas.
Quiero que quede claro que no soy en absoluto un experto, y esto no es falsa modestia, estoy seguro que mas de un codigo podria ser reducido en cuando numero de lineas o simplemente usar una operacion que resuma dos.
Lo que pretendo decir que a la vez que este blog vaya aumentando en contenido tendre mas conocimientos y me habre enfrentado a problemas mayores
Todos los códigos han sido testados en una maquina virtual Windows 7 y estoy usando Radasm con masm32.
Intentare comentar lo mas posible todos los códigos a parte de comentar el "objetivo" que tienen esas lineas.
Quiero que quede claro que no soy en absoluto un experto, y esto no es falsa modestia, estoy seguro que mas de un codigo podria ser reducido en cuando numero de lineas o simplemente usar una operacion que resuma dos.
Lo que pretendo decir que a la vez que este blog vaya aumentando en contenido tendre mas conocimientos y me habre enfrentado a problemas mayores
Suscribirse a:
Comentarios (Atom)